闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面 就是我的学习笔记,对于Javascript初学者应该是很有用的。
一、闭包的调用过程
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
alert(this);//1
alert(that);//2
return function(){
alert(this);//3
alert(that);//4
return that.name;//5
};
}
};
alert(object.getNameFunc()());//断点
- 断点处的代码会两次进入到object对象中,第一次执行的是1-2,其中that= this,都是object这个定义好的对象(name,getNameFunc()),alert的结果是两个OBJECT
- 第二次执行的是window调用的(我感觉是),执行的是3-5,alert的结果分别是window、OBJECT、My Obect。
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
alert(this);/1
return function(){
return this.name;/2
};
}
};
alert(object.getNameFunc()());
- 执行结果分别是OBJECT、The Window,函数还是分两次执行
