函数中this的指向

  每个函数在被调用时都会自动取得两个特殊变量:this和arguments;内部函数在搜索这两个变量时,只会搜索到其活动对象为止,因此永远不可能直接访问外部函数中的这两个变量。

f 1     var name = "The Window"
 2 
 3     var object = {
 4       name: "My Object",
 5       getNameFunc : function() {
 6         console.log(this.name);   //输出:My Object
 7         return function() {
 8           return this.name
 9         }
10       }
11     }
12 
13     console.log(object.getNameFunc()());   //输出:The Window

  不过,把外部作用域中的this对象保存在一个闭包能够访问到的变量里,就可以让闭包访问该对象了,例子如下:

 1     var name = "The Window"
 2 
 3     var object = {
 4       name: "My Object",
 5       getNameFunc : function() {
 6         var that = this   //重点在本行
 7         console.log(this.name);   //输出:My Object
 8         return function() {
 9           return that.name
10         }
11       }
12     }
13 
14     console.log(object.getNameFunc()());   //输出:My Object

 知识点:红宝书182页

猜你喜欢

转载自www.cnblogs.com/nayek/p/11749717.html
今日推荐