JavaScript 闭包
闭包:函数可以访问它被创建时所处的上下文环境。
示例1:
var myobj = function () { var value = 0; return { increment: function (inc) { value += typeof inc === 'number' ? inc : 1; }, getvalue: function () { return value; } }; } ();
解释:
以上代码并没有把一个函数赋给变量myobj, 而是把这个匿名函数的执行结果赋给了myobj,注意最后一行的()。 即使这个匿名函数已经返回了,myobj仍然可以访问这个匿名函数的私有变量value。
示例2:
var myobj = function (o) { return { change_status: function (s) { o.status = s; }, get_status: function () { return o.status; } }; }; var testobj = myobj({ id: 'C1000', nm: 'Apple', status: 0 }); testobj.change_status(1); testobj.get_status();
解释:
调用myob时,它返回一个包含了2个方法的对象。
实例化myobj时,myobj返回的对象的一个引用被保存在testobj中。
即使myobj已经返回了,testobj仍然可以访问实例化myobj时传入的那个参数,并且它访问的不是那个参数的一个拷贝,而就是那个参数本身。

浙公网安备 33010602011771号