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()
这篇博客详细介绍了JavaScript中call()、apply()和bind()三个方法的定义及异同。它们都能改变函数内部this的指向,但调用时机和参数传递方式有所不同。call()接收参数列表,apply()接受一个包含参数的数组,bind()则返回一个新的函数用于后续调用。示例中展示了如何在不同对象间切换this并传递参数,强调了它们在实际开发中的应用。

3816

被折叠的 条评论
为什么被折叠?



