簡體   English   中英

在Javascript閉包中訪問'this'

[英]Accessing 'this' in Javascript closure

這比其他任何事情更像是一種健全性檢查。 我發現在使用Javascript中的閉包時,我經常使用以下模式從函數中訪問封閉類:

MyClass.prototype.delayed_foo = function() {
    var self = this;
    setTimeout(function() {
        self.foo(); // Be nice if I could use 'this' here
    }, 1000);
};

顯然這種方法很好,而且使用起來也不是很麻煩。 在我的腦后只有這個小小的癢,說“你讓這太復雜了,假的!” 這是普遍接受的模式嗎?

這與異常的普遍接受的模式that經常使用的,而不是self

你可以使用像這樣的綁定函數來偷偷摸摸地:

var Binder = function(fnc, obj) {
    return function() {
        fnc.apply(obj, arguments);
    };
};

然后將你的電話改為

MyClass.prototype.delayed_foo = function() {
    setTimeout(Binder(function(){
        this.foo("Lols");
    },this), 1000);
};

jsfiddle示例:

http://jsfiddle.net/ctrlfrk/6VaV6/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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