亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于閉包的一些小心得

標簽:
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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消