【发布时间】:2012-11-30 19:49:17
【问题描述】:
在 Javascript 中,如何在不绑定 this 参数的情况下将参数绑定到函数?
例如:
//Example function.
var c = function(a, b, c, callback) {};
//Bind values 1, 2, and 3 to a, b, and c, leave callback unbound.
var b = c.bind(null, 1, 2, 3); //How can I do this without binding scope?
如何避免绑定函数作用域的副作用(例如设置this = null)?
编辑:
很抱歉给您带来了困惑。我想绑定参数,然后能够稍后调用绑定函数并让它的行为与我调用原始函数并将绑定参数传递给它一样:
var x = 'outside object';
var obj = {
x: 'inside object',
c: function(a, b, c, callback) {
console.log(this.x);
}
};
var b = obj.c.bind(null, 1, 2, 3);
//These should both have exact same output.
obj.c(1, 2, 3, function(){});
b(function(){});
//The following works, but I was hoping there was a better way:
var b = obj.c.bind(obj, 1, 2, 3); //Anyway to make it work without typing obj twice?
我还是新手,很抱歉造成混乱。
谢谢!
【问题讨论】:
-
只重新绑定
this会不会不够?var b = c.bind(this, 1,2,3); -
为什么
bind()的第一个值是null会有问题?似乎在 FF 中工作正常。 -
如果函数已经有这个绑定,使用 null 作为 bind 的第一个参数会搞砸(即将对象方法绑定到全局范围)。
-
我真的不清楚你想做什么。您不能在 JavaScript 中完全解除
this绑定。它总是意味着某事。所以将this绑定到封闭函数的this很有意义。 -
我是 JS 的新手。我编辑了问题以使其更清楚。我想要的可能是不可能的。谢谢。
标签: javascript