簡體   English   中英

對象函數內部的“ this”引用

[英]“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM