Function.prototype.call()和Function.prototype.bind()有什么区别?

时间:2013-02-28 06:43:10

标签: javascript

我浏览了MDN文档,但我并没有真正理解call()和bind()之间的区别。他们似乎都做同样的事情 - 改变函数内this的上下文。那么它们之间究竟有什么区别呢?什么时候应该使用?

1 个答案:

答案 0 :(得分:4)

call实际上使用指定的上下文调用函数,而bind返回一个新函数,该函数在调用时将使用指定的上下文。使用bind的一个示例是设置事件侦听器,通常将上下文设置为触发事件的对象。您可以使用bind创建一个使用您自己的上下文的函数,并将其作为侦听器函数传递。