继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

关于闭包的一些小心得

OlderSkee
关注TA
已关注
手记 2
粉丝 16
获赞 43

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


object.getNameFunc()()

首先执行的是

object.getNameFunc() //一个括号

返回的是

function(){
   return function(){ 
   return this.name;
   };

再执行的是

object.getNameFunc()() //两个括号

也就是

(function(){
   return function(){ 
   return this.name;
   })();

在上面这个函数里,
this.name 在他的函数体里是找不到具体对象的
因此 this会指向window 。
在函数里使用,this指向函数对象本身
匿名函数执行环境具有全局性,全局性的this指向window。

那么在这里 this.name会在全局变量里找
var name = "The Window";
实际的意思是 给window 对象 加了一个name属性
所以 this.name == window.name == "The Window";
如果想返回My Object

var name = "The Window";  
var object = {    
  name : "My Object",    
  getNameFunc : function(){
var that = this ; //把this赋值给that这个变量 保存到这个函数里 (getNameFunc )
   return function(){ 
   return that.name; //在这里使用
   };
   }  
};  
alert(object.getNameFunc()()); //My Object

打开App,阅读手记
9人推荐
发表评论
随时随地看视频慕课网APP

热门评论

第二次的this又指的是什么

i dont believe

简直了 发的评论是代码 谁能看懂呢😊

查看全部评论