闭包其实就是函数中定义了函数,由于内部函数的生存周期比外部函数长,所以外部函数并不会在执行完后被销毁
function f1(){
var n = 999;
nAdd = function(){n+=1}
function f2(){
alert(n);
}
return f2;
}
var result = f1();//将f2赋值给result
result();//999 f2中的n是f1中的n,此时没有调用过nAdd()函数,所以n的值还是999
nAdd();//局部可以访问全局中的变量,它将全局中的n的值修改了,变为1000
result();//1000 此时f2再去访问n时,n的值已经变化了,为1000了
-----------------------------------------------------------------------------
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;//this 是object
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()());//My Object
-----------------------------------------------------------------------------------------------
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()());//the window