call()、apply()、bind()的异同
定义:
call()
方法使用一个指定的this
值和单独给出的一个或多个参数来调用一个函数。apply()
方法调用一个具有给定this
值的函数,以及以一个数组或类数组对象的形式提供的参数。bind()
方法创建一个新的函数,在bind()
被调用时,这个新函数的this
被指定为bind()
的第一个参数,而其余参数将作为新函数的参数,供调用时使用。
call()
、apply()
和bind()
都可以改变this对象的指向
区别1:
call()
和apply()
被调用时,函数都会立即执行
bind()
将函数返回,在需要使用时加()
调用
区别2:
call()方法接受一个参数列表
apply()方法接受一个包含多个参数的数组
bind()的参数与call()类似
var student1 = {
sayHi: function (name,age) {
console.log(`我叫${name}今年${age}岁`);
}
}
var student2 = {
}
student1.sayHi('hyx',20)
student1.sayHi.call(student2,'yxh',18)
student1.sayHi.apply(student2,['xyh',78])
stu2SayHi=student1.sayHi.bind(student2,'sss',18)
stu2SayHi()