2009-09-03 131 views
8

下面是一個代碼的Javascript關閉

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()

+0

你是指你調用「set(1000)」之後? – Aziz 2009-09-03 19:36:36

回答

4

您沒有設置收集Ÿ當你調用collection.set(1000)

3

因爲Ÿ將存儲值0,並且將X閱讀。雖然get()將在您每次調用它時讀取變量x

3

那麼你設置集合看起來像這樣的對象:

{ 
    y : 0, 
    get : function(){return x}, 
    set : function(n) { x = n}       
} 

沒有存儲在(編輯狀態x性質:爲了公平起見,將生成,但ÿ仍具有封閉上0值不會更新),那麼你還期待什麼?用x代替x,你應該沒問題。

+0

現在很清楚,謝謝 – 2009-09-03 20:08:16

8

ý不是「指針」X。當創建你簡單複製的X在那一刻的價值爲Ÿ關閉,並且每次調用的get()/集()你只X(沒有聯繫到ÿ操作

0
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())