为了账号安全,请及时绑定邮箱和手机立即绑定

关于闭包的一些小心得

标签:
JavaScript

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

点击查看更多内容
9人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消