對於prototype
方法,是否存在確保this
永遠是對象本身(在檢查instanceof
並拋出錯誤之外)的安全方法。確保原型方法內的「this」上下文
var Dialog = function() {};
Dialog.prototype.open = function() {
var open = this;
// how do ensure "this" is always the Dialog
console.log(open);
};
使用此代碼,任何用戶都可能錯誤地「脅迫」上下文不正確。例如:
var pointer = new Dialog().open;
pointer(); // "this" would become Window
我試圖找到一種方式來處理這個內部這樣我就不必拋出異常或依靠用戶總是做正確的事。
用戶總是可以打電話給pointer.call(dialog)
,但這意味着他們需要一個單獨的對話框指針,這是對用戶而不是作者,作者負擔的一個好例子。
你打算有Dialog'的'多個實例?你想讓用戶直接使用'Dialog'的實例嗎? ('變種d =新的對話框(); d.open();') –
這是不是你的類/庫真正應該擔心。如果用戶錯誤地調用/調用方法,那是他們的問題。他們應該正確使用正確的語言才能正常工作。 –
是的,可能有多個實例,我將允許用戶重複使用一個實例。 – helion3