js闭包跟this指向的理解。
js闭包可以读到函数内部的变量
变量的值可以一直保存在内存中
函数执行后,不会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()