如何从回拨中指定来电者

How to designate caller from a call back

本文关键字:来电 回拨      更新时间:2023-09-26

是否可以设置'this'或函数的调用者,但将其设置为回调?

this.CallServer({ url: 'myurl', success: F.call(myDOMElement) });
F function(data){ $(this).text(data); }

我意识到我可以包装回调函数并传递DOMElement作为调用F的参数,就像下面一样,但我想知道是否有一种更接近上面的方法。

this.CallServer({url: 'myurl', success: function(data){F(data, myDOMElement);}});
F function(data, elem){ $(elem).text(data); }
this.CallServer({ url: 'myurl', success: F.bind(myDOMElement) });

bind将返回相同的函数,除了无论何时调用它都有一个固定的值this

文档,包括旧浏览器的shim。

简单地说,bind可以定义为:

func.bind = function(thisValue) {
    return function() {
        return func.apply(thisValue);
    };
};

var func = function() { return this };
var bound = func.bind([1, 2, 3]);
var result = bound(); // [1, 2, 3]