[英]Reference a function inside an object from another function inside the same object. JavaScript object literal form
[英]“this” reference inside of object function
我有以下JavaScript代碼:
function PatternField(id, name, pattern) {
...
this.check = function () {
var field = this.elem.val();
...
};
this.elem.keyup(this.check);
this.elem.change(this.check);
}
當執行check
功能時, var field = this.elem.val();
事實證明, this
指向的是elem
而不是實際的對象。 我怎樣才能訪問真正的this
從這個目標函數里?
this.check = function() {
var field = this.elem.val();
...
}.bind(this);
重要的部分是bind(this)
,它在調用/調用函數后就控制了函數的范圍(請注意,在使用bind
,函數不會立即被調用,如果需要的話,您正在操縱定義)。 在這種情況下,保留PatternField的范圍。 查看有關MDN bind
的文檔。
換句話說(關於一些神奇地刪除了自己的評論):
它確保this.check(在被調用時)的范圍將是傳遞給bind
的第一個參數的內容,而覆蓋自然發生的一切。 如果你想this
引用PatternField
的內this.check
法, bind
的方法Function
將啟用此功能。
就像回答@zamnuts一樣,您可以使用ES5 bind
方法。
但是,如果您想以舊方式進行操作 ,即支持不帶polyfill的舊瀏覽器,則可以使用:
var that = this;
this.check = function () {
var field = that.elem.val();
...
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.