在Javascript中,将已绑定函数的更多参数绑定。
- 论坛
- 在Javascript中,将已绑定函数的更多参数绑定。
20 浏览
在Javascript中,将已绑定函数的更多参数绑定。
我试着整理一下关于javascript的bind()方法的思路。
我发现如果我这样做:
var f = function (a) { ... } var g = f.bind(obj); g(1)
那么f将以obj
作为this
,以1
作为a
来调用。
我原以为g是f的一个包装函数。
但是当我这样做:
var f = function (a) { ... } var g = f.bind(obj); g.call(1)
那么f将以1
作为this
,而a
则是未定义的。
所以看起来g不仅仅是一个简单的包装函数,而是call
方法在普通函数和绑定函数之间有所区别。
还有一点是我不能多次部分应用一个函数。
var f = function (a) { ... } var g = f.bind(obj); var h = g.bind(1); h();
然后f将以obj
作为this
,而a
则是未定义的。
这种行为的原因是什么?
编辑
这个问题中的构造实际上是错误的,请参考接受的答案以了解它们应该是什么样子的(通常我没有注意到call
和bind
总是需要上下文参数作为第一个参数)。