JavaScript:闭包中的this
2021-04-12 15:29
标签:span get java turn 访问 因此 代码 obj UNC 匿名函数的执行环境具有全局性,因此this经常指向window。 window console.log(obj.getName()()); obj 还有一种特殊情况会使this的值改变 obj JavaScript:闭包中的this 标签:span get java turn 访问 因此 代码 obj UNC 原文地址:https://www.cnblogs.com/JKHao/p/13353890.html 1 var name = "window";
2 var obj = {
3 name : "obj",
4 getName : function(){
5 return function(){
6 return this.name;
7 }
8 }
9 };
10 console.log(obj.getName()());
以上代码执行结果:
闭包的活动对象中的this,有明确指向的只有window。为了解决这个问题,我们可以将外部作用域的this对象保存在一个变量里,就可以让闭包访问了。 1 var name = "window"
2 var obj = {
3 name: ‘obj‘,
4 get: function() {
5 var that = this
6 return function() {
7 return that.name
8 }
9 }
10 }
11
12 console.log(obj.get()()) // obj
以上代码执行结果:
1
因为that是我们在包含函数中特意声明的一个变量,因此闭包可以通过that访问到外部函数的this,即obj。 1 var name = ‘window‘
2 var obj = {
3 name: ‘obj‘,
4 get: function() {
5 return this.name
6 }
7 }
8
9 var getname1 = obj.get
10 console.log(obj.get()) // obj
11 console.log(getname1()) // window
以上代码执行结果:
window
当把方法赋值给getname2时,由于getname2属于window,因此this的指向就不能得到维持。
下一篇:javafx做桌面应用程序
文章标题:JavaScript:闭包中的this
文章链接:http://soscw.com/index.php/essay/74770.html