[英]Javascript closure
这是一个代码
var collection = (function (){
var x = 0;
return {
y : x,
get : function(){return x},
set : function(n) { x = n}
}
}());
collection.set(1000);
为什么collection.y != collection.get()
?
y不是x的“指针” 。 在创建闭包时,您只需将当时x的值复制到y中 ,每次调用get() / set()时 ,只能对x进行操作(与y无关)
调用collection.set(1000)时没有设置集合y
因为y将存储值0,并且不会从x读取它。 每次调用时, get()都会读取变量x 。
那么你设置集合的对象看起来像这样:
{
y : 0,
get : function(){return x},
set : function(n) { x = n}
}
没有x
属性来存储状态(编辑:公平地说它会被创建,但是y仍然有0值的闭包所以不会更新),那么你还期待什么? 用y替换x,你应该没问题。
function person(name,age){
this.name=name;
this.age=age;
//closers
this.sayHi=function(){
return this.name+" say Hi"
}
}
var p=new person("Ramesh",23);
alert(p.sayHi())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.