This question already has answers here:
Javascript call() & apply() vs bind()?

(22个答案)


7年前关闭。



var obj = {
   x: 81,
   getX: function() {
     console.log( this.x)
   }
};
var getX = obj.getX.bind(obj);//use obj as 'this';
getX();//81
var getX = function(){
  obj.getX.apply(obj);
}
getX();//also 81

bind和call/apply的用法非常相似,我想知道它们之间有什么区别。上面的两个getX函数是相同的吗?

最佳答案

bind返回一个函数,该函数的行为类似于原始函数,但预定义了this。通常在要将函数传递给事件处理程序或其他异步回调时使用。
callapply将立即调用一个函数,让您同时指定this的值和该函数将接收的任何参数。

您的第二个示例定义了一个匿名函数,该函数调用apply。这是一种常见的模式。 bind提供了标准的实现,使您可以通过简单的函数调用(因此更快捷,更容易编写)进行操作。

关于javascript - 'call/apply'和 'bind'有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15677738/

10-13 01:06