将变量传递给JavaScript函数上下文

时间:2014-01-23 22:56:26

标签: javascript jquery

我经常使用这样的结构:

var $this, url, callback; //some private vars
loadCallback = function($that, url, callback) {
    return function(responseText, textStatus, req) {
        ...
    };
})($this, url, callback)

然而,这并不是很舒服。还有其他选择吗?
我已经看了jQuery.proxy,但是这个函数似乎修复了“this”变量,所以loadCallback无法通过应用另一个“this”上下文来调用。

1 个答案:

答案 0 :(得分:2)

在现代浏览器中使用bind。实现你自己的简单版本:

function bind(fn, _this) {
    var _args = Array.prototype.slice.call(arguments, 2); 
    return function() {
        return fn.apply(_this, _args.concat(Array.prototype.slice.call(arguments)));
    }
}

用法:

var loadCallback = bind(function(url, responseText, textStatus, req) {
    console.log(url, responseText)
}, this, url);

更完整的polyfill can be found on MDN

相关问题