您的位置:首页 > Web前端 > JavaScript

javascript笔记(JavaScript_Core电子书)-闭包

2012-05-10 00:00 357 查看
/**

* 闭包:当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个我们通常所谓的“闭包”

*/

function addx(x) {

return function(y) {return x+y;};

}

add8 = addx(8);

add9 = addx(9);

//alert(add8(100));

//alert(add9(100));

//闭包的应用

//1、在内存中维持一个变量

//如上例,x是函数addx的私有变量,本应该在函数执行完就回收掉。但是由于闭包的存在,add8对象依然可以使用x。

//2、提供访问函数的私有变量的安全途径(面向对象的封装)

function obj(){

var name = "default";

return {getName:function(){return name},

setName:function(pName){name = pName}

}

}

var o1 = new obj();

//alert(o1.getName());

o1.setName("change");

//alert(o1.getName());

//闭包注意的地方

//1、内存泄露(对象A引用B,B引用C,C又引用A)

//2、闭包中的this上下文引用

var name = "The Window";

var object1={

name:"My Object1",

getNameFunc:function(){

return function(){return this.name};

}

}

var object2 ={

name:"My Object2",

getNameFunc:function(){

var that = this;

return function(){return that.name};

}

}

alert(object1.getNameFunc()());//The Window

alert(object2.getNameFunc()());//My Object2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js闭包