2013-04-15 35 views
0

如何在使用使用javascript模塊模式的私有方法時訪問此對象(此對象)?如何在私有方法中使用javascript模塊化模式訪問它?

我不明白這是如何工作的,我仍然試圖學習它。

var o = o || {}; 
o.Assets = (function() { 
    "use strict"; 

    function privateFunc() { 
     // how do I get this.assetQ? 
    } 

    function Assets(assetQ) { 
     this.init(assetQ); 
    }; 
    Assets.prototype.assetQ = []; 
    Assets.prototype.cache = []; 
    Assets.prototype.callback = false; 
    /* 
Initialize the assets 
*/ 
    Assets.prototype.init = function(assetQ) { 
     if (assetQ) { 
      this.assetQ = assetQ; 
     } 
    }; 
    return Assets; 
})(); 
+0

*我如何可以訪問此*這是什麼」? – epascarello

回答

1

當你從Assets的方法調用privateFunc,使用privateFunc.call(this)然後用this.assetQprivateFunc

function privateFunc() { 
    console.log(this.assetQ); 
} 

...

Assets.prototype.init = function(assetQ) { 
    if (assetQ) { 
     this.assetQ = assetQ; 
    } 
    privateFunc.call(this); 
}; 

如果你的私有函數接受參數,你可以在上下文參數後通常通過他們在.call

privateFunc.call(this, 1, 2, 3); 

function privateFunc(a, b, c) { 
    //a is 1, b is 2 etc.. 
} 
+0

感謝你,我仍然在學習,所以這已經幫助了很多:)這是通常使用模塊化模式時完成的方式嗎? – user2251919

+0

@ user2251919當然,還有其他的選擇,他們的工作也是如此。只要符合一種方式是最重要的事情。 – Esailija

+0

好的,謝謝你:) – user2251919

相關問題