2012-10-01 75 views
0

嘗試在對象內使用mColumns參數時,出現以下代碼問題。第一個控制檯日誌輸出正確,但傳遞到Backbone.View.extend的對象內部沒有,它輸出未定義。javascript參數問題

define(["collections/mColumns"],function(mColumns){ 
     console.log(mColumns); 
     return Backbone.View.extend({ 
       el: "#content", 
       events:{ 
        'click #addText': "addText" 
       }, 
       initialize: function(mColumns){ 
        console.log(mColumns); 
       } 
      }); 
}); 

但是,如果我事先創建一個對象,然後將該對象作爲參數傳遞它工作正常。兩個控制檯日誌輸出正確。

define(["collections/mColumns"],function(mColumns){ 
    console.log(mColumns); 
    var obj = { 
     el: "#content", 
     events:{ 
      'click #addText': "addText" 
     }, 
     initialize: function(){ 
      console.log(mColumns); 
     } 
    } 
    return Backbone.View.extend(obj); 
}); 

這是爲什麼?

+0

你知道你在第一種情況下的陰影'mColumns',你不..? –

+0

@RobW你是對的,謝謝,新手錯誤,如果你把它作爲答案發布,我會很樂意標記它的權利 – Vidi

回答

1

工作(第二)代碼段和第一個代碼段之間的區別在於第一個代碼段會遮蔽mColumns變量。通過定義具有相同名稱的正式功能參數,原來的變量變得不可見的代碼裏面的函數:

define(["collections/mColumns"],function(mColumns){ // <-- mColumns (#1) 
    ... 
    return Backbone.View.extend({ 
     ... 
     initialize: function(mColumns){    // <-- mColumns (#2) 
      console.log(mColumns);     // <-- Refers to #2 
     } 
    }) 
});