This question already has answers here:
Javascript call() & apply() vs bind()?
(22个答案)
7年前关闭。
bind和call/apply的用法非常相似,我想知道它们之间有什么区别。上面的两个getX函数是相同的吗?
(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
。通常在要将函数传递给事件处理程序或其他异步回调时使用。call
和apply
将立即调用一个函数,让您同时指定this
的值和该函数将接收的任何参数。
您的第二个示例定义了一个匿名函数,该函数调用apply
。这是一种常见的模式。 bind
提供了标准的实现,使您可以通过简单的函数调用(因此更快捷,更容易编写)进行操作。
关于javascript - 'call/apply'和 'bind'有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15677738/
10-13 01:06