关于JS的闭包
首先关于闭包的理解。
个人认为,闭包是定义在局部变量的语境中,能获取该语境中所有变量的函数。
摘自阮一峰博客的例子
代码片段一。
var name = "The Window";
var object = {
name : "My Object",getNameFunc : function(){
return function(){
return this.name;
};}
};
alert(object.getNameFunc()());
代码片段二。
var name = "The Window";
var object = {
name : "My Object",getNameFunc : function(){
var that = this;
return function(){
return that.name;
};}
};
alert(object.getNameFunc()());
第一个例子输出"The Window"; 第二个例子输出 "My Object"
下面分析一下两个例子的不同之处,首先理解this是代码被执行时的环境 第一个例子中执行的是全局的this 第二个例子执行的是object的this
换句话说,第一个例子之所以输出"The Window" 是因为object里面的代码完全没有被执行
其实很容易理解,第一个例子中object.getNameFunc()返回的是匿名函数,这个函数中没有使用object的变量 所以并不属于object的成员 因而是全局的成员 所以返回的this就是全局的this
第二个例子中,var that = this;发生在object的语境中,所以返回的是object的this
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。