2012-02-07 18 views
0

我怎樣才能使這個工作?似乎是一個微不足道的錯誤,我不是看到jquery對象字面量函數/閉包 - 缺少明顯的東西?

(function($){ 
     $.myNamespace = { 
     num:0, 
     incNum: function(){ 
        return num++;}, 
     decNum: function(){ 
        return num--;}, 
     getNum: function(){ 
       return num; 
       } 
     }; 
    })(jQuery); 

調用$ .myNamespace.incNum給出了一個「的ReferenceError:NUM沒有定義」

回答

1
(function ($) { 
    $.myNamespace = { 
     num: 0, 
     incNum: function() { 
      return this.num++; 
     }, 
     decNum: function() { 
      return this.num--; 
     }, 
     getNum: function() { 
      return this.num; 
     } 
    }; 
})(jQuery); 
0

你必須編輯所有return語句中引用的對象。

return this.num++; 

所以,你的代碼看起來就像這樣:

(function ($) { 
    $.myNamespace = { 
     num: 0, 
     incNum: function() { 
      return this.num++; 
     }, 
     decNum: function() { 
      return this.num--; 
     }, 
     getNum: function() { 
      return this.num; 
     } 
    }; 
})(jQuery); 
0

num是不是函數的範圍的一部分; JavaScript沒有名稱空間的概念。相反,你應該訪問num作爲$.myNamespace.numthis.num(雖然我不建議 - this可以綁定到任意對象)

0

「民」是你的父類「了myNameSpace」裏面......如果你想來訪問它形成這個類的子方法,然後@Kieran說你需要使用這個關鍵字,即this.num ++