根據問題的標題可能有幾個重複的問題,但我有一個非常具體的情況。node.js:瞭解對象原型
我建立以下
var myModule = function() {
// do something init
};
myModule.prototype.a = 10;
myModule.prototype.b = 20;
myModule.prototype.method1 = function() {
// in this method I can access a and b using this
this.a
this.b
};
myModule.prototype.method2 = function() {
// I can call method1 here
this.method1();
};
節點模塊的代碼示例這將能正常工作提到
var myModule = require('myModule');
var instance = new myModule();
以下情況下調用實例方法2將罰款
instance.method2 // this should work fine
現在假設我將method2作爲回調函數傳遞給表達式或任何其他函數下面
someobject.performsomeasync(instance.method2); // this will fail
就好像我瞭解關於JavaScript的原型是,上述將在這種情況下this
將參考主叫對象,它是不是instance
如何使它工作,因爲失敗? 我在做什麼被認爲是一種很好的編碼習慣?
由於我正在構建一個npm模塊,我無法控制使用情況 – Syed
@Syed其實,我並不完全理解你的問題?你是什麼意思「不能控制使用」?您正在編寫模塊,因此您正在創建模塊用戶將使用的界面(您將在文檔中描述)。你能解釋一下什麼讓你感到困惑嗎? – alexpods
正如我已經提到的,我不能控制你提出的代碼作爲解決方案。它是npm模塊,用戶可以以任何他們想要的方式調用函數。 – Syed