繁体   English   中英

Javascript关闭

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM