博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this对象-未完
阅读量:5082 次
发布时间:2019-06-13

本文共 1492 字,大约阅读时间需要 4 分钟。

下面的实例,只是基于是用this

 

在闭包中使用this对象可能会导致一些问题,因为 this对象是在运行时基于函数的执行环境进行绑定的:全局函数中,this等于window,当函数被特定于某个对象进行调用时,this代表调用的对象。但是匿名函数的执行环境具有全局性,所以匿名函数中this通常指定为window。

例如:

var name="The Window";        var object = {            name: "My Object",            getNameFunc: function () {                return function () {                    return this.name;                };            }        };        alert(object.getNameFunc()()); //执行结果The Window

上面的代码中,使用this对象进行返回,返回的是全局变量name的值,因为函数在被调用时,都会取得两个特殊变量,this和arguments,内部函数在用this进行搜索时,只会搜索到其活动对象为止,因此使用this永远不可能搜索到外部函数的变量。

不使用this不会出现这种情况

再例如:

 

var name = 1;        function parentFunc() {            var name = 6;            return function () {                this.name++;                return this.name;            }         }        var fun = parentFunc();             alert(fun());// name前面用this 返回的值是2,不加this,返回的是7        alert(fun());// name前面用this 返回的值是3,不加this,返回的是8        alert(fun());// name前面用this 返回的值是4,不加this,返回的是9 因为产生了闭包,所有不加this的name可以看做为内部的静态变量

上面的代码体现了用this和不用this 的区别,用this只是指定当前的return函数的作用域加上全局作用域。而不使用,则可以直接访问外部作用域。

如果解决这种问题,可以在返回函数的上方将外部作用域指定给一个变量,如:

var name="The Window";        var object = {            name: "My Object",                      getNameFunc: function () {                var that = this;                return function () {                    return that.name;                };            }        };        alert(object.getNameFunc()()); //My Object

 

转载于:https://www.cnblogs.com/y8932809/p/5395549.html

你可能感兴趣的文章
煮鸡蛋的启示
查看>>
python_列表结构模拟栈和队列
查看>>
IIS支持.apk下载的方法
查看>>
vue mounted中监听div的变化
查看>>
MySQL二进制日志功能介绍
查看>>
Domino单用户多账号多邮件地址配置
查看>>
Asp.net WebPages框架运行原理浅析
查看>>
网络爬虫-正方教务系统登录
查看>>
【LeetCode】数组-4(581)-给未排序数组中子数组排序使得整个数组排序 找到这个最小的子数组...
查看>>
FPGA网站推荐
查看>>
11.巨坑,注意了,关于显示不正常的问题,localstorage的存储问题
查看>>
开发中的一些零碎知识点
查看>>
Web开发技术——HTML基础
查看>>
《Windows驱动开发技术详解》之Windows内存管理
查看>>
Java面向对象2(G~J)
查看>>
JAVAFX之tableview界面实时刷新导致的内存溢出(自己挖的坑,爬着也要出来啊0.0)...
查看>>
hdu4467 Graph
查看>>
Vim使用技巧
查看>>
HOOK大法实现不修改程序代码给程序添加功能
查看>>
Qt 5.7 亮瞎眼的更新
查看>>