闭包(Closure)
2019-07-18 本文已影响3人
422ccfa02512
外部函数访问函数内部变量,通过内部函数返回值为函数,在这个函数中与其父级函数建立关系,调用父级函数变量
缺点
外部调用函数完毕后,任然占用其内部函数,会使得内部父函数中的变量也都被保存在内存中,内存消耗很大
闭包例子
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
return function(){
return this.name;
};
}
};
alert(object.getNameFunc()()); //The Window
var name = "The Window";
var object = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
};
}
};
alert(object.getNameFunc()()); //My Object
不要为了闭包而闭包
function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
this.getName = function() {
return this.name;
};
this.getMessage = function() {
return this.message;
};
}
修改后
function MyObject(name, message) {
this.name = name.toString();
this.message = message.toString();
}
MyObject.prototype.getName = function() {
return this.name;
};
MyObject.prototype.getMessage = function() {
return this.message;
};