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
* 闭包:当函数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
相关文章推荐
- javascript笔记(JavaScript_Core电子书)-原型
- javascript笔记(JavaScript_Core电子书)-数组对象
- javascript笔记(JavaScript_Core电子书)-函数对象
- javascript笔记(JavaScript_Core电子书)-json对象
- javascript笔记(JavaScript_Core电子书)-JavaScript基础
- 韩顺平 javascript教学视频_学习笔记20_多态经典案例_补讲闭包细节
- JavaScript高级程序设计之函数表达式之闭包之关于 this 对象第7.2.2讲笔记
- JavaScript面向对象学习笔记——闭包
- javaScript笔记(十二) 匿名函数和闭包
- javaScriptCore 笔记
- javascript笔记(JavaScript_Core电子书)-正则表达式
- javascript_core阅读笔记(二)
- JavaScript 学习笔记七 闭包二
- 韩顺平 javascript教学视频_学习笔记16_Object类_闭包_成员函数再说明_聪明的猪小练习
- Html5 JumpStart学习笔记4:JavaScript Core Capabilities
- JavaScript学习笔记(6)---闭包
- [Effective JavaScript 笔记] 第11条:熟练掌握闭包
- 概念笔记之[javascript<-2->]闭包和封装
- Javascript学习笔记:闭包题解(4)
- javascript_core阅读笔记(三)