Javascript闭包
这是一个密码Javascript闭包,javascript,closures,Javascript,Closures,这是一个密码 var collection = (function (){ var x = 0; return { y : x, get : function(){return x}, set : function(n) { x = n}
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()。而get()将在每次调用变量x时读取该变量。那么,设置集合的对象如下所示:
{
y : 0,
get : function(){return x},
set : function(n) { x = n}
}
没有用于存储状态的x
属性(编辑:为了公平起见,它将被创建,但y仍然在0值上有一个闭包,因此不会被更新),那么您还期待什么呢?将x替换为y,您应该可以。y不是指向x的“指针”。创建闭包时,您只需将当时x的值复制到y,每次调用get()/set()时,您只对x进行操作(与y没有关系)您是说在调用“set(1000)”之后?
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())