js閉包跟this指向的理解纹蝴。
js閉包可以讀到函數(shù)內部的變量
變量的值可以一直保存在內存中
函數(shù)執(zhí)行后,不會delete變量
為了讓自己不忘記牌里,下面記錄2段code
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());
這里會alert“The Window”
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());
這里會alert“My Object”
detail:
為什么第一個會彈出The Window强挫,因為getNameFunc返回一個function 這里的function是全局的 不能訪問到object里面的name,然而全局的name是the window褒繁。
第二個就是閉包的應用,返回的function中的that.name 回想上一級找that 然后依次找到object的name馍忽。
這也就是為什么閉包中 變量不會被刪除棒坏。
但是閉包也有幾點不好的地方,會消耗cpu遭笋,降低性能坝冕。
最后 object.getNameFunc()() => var a= object.getNameFunc() a()