我已经知道apply
和call
是相似的函数,它们都可以设置函数的上下文(this)。
不同之处在于我们发送参数的方式(手动 vs 数组)。
问题:
但是什么时候应该使用bind()
方法?
var obj = {
x: 81,
getX: function() {
return this.x;
}
};
alert(obj.getX.bind(obj)());
alert(obj.getX.call(obj));
alert(obj.getX.apply(obj));
call()
和apply()
都是调用函数的方法,但bind()
是创建一个新的函数。使用call()
时,需要逐个传递参数;而使用apply()
时,则需将参数作为数组传入。如需了解更多细节,请查看相关文档,它们可以完整地回答你的问题。 - Nopebind()
,而另外两个函数则已存在于JavaScript 1.3 - ECMA-262第3版中,例如关于它们的问题,Stack Overflow上有像what-is-the-difference-between-call-and-apply这样的问题。我只是猜测,因为我自己也在思考这个问题。 - Nope