目录
- call() 和 apply() 的区别?
call() 和 apply() 的区别?
在JavaScript中,call()和apply()都是用来改变函数中this指向的方法,它们的作用是一样的,只是传参的方式不同。
call()方法和apply()方法的第一个参数都是要改变this指向的对象,只是call()方法的后续参数是一个一个传递的,而apply()方法的后续参数是以数组的形式传递的。
具体来说,使用call()方法时,需要将要传递给函数的参数逐个列举出来,例如:
function sayName(age, gender) {
console.log(this.name, age, gender)
}
var obj = {
name: 'John'
}
sayName.call(obj, 20, 'male') // 输出John 20 male
而使用apply()方法时,需要将要传递给函数的参数放在一个数组中,例如:
function sayName(age, gender) {
console.log(this.name, age, gender)
}
var obj = {
name: 'John'
}
sayName.apply(obj, [20, 'male']) // 输出John 20 male
需要注意的是,如果传递的参数是一个数组,可以使用apply()方法将数组展开成一个一个的参数,例如:
function sayName(age, gender) {
console.log(this.name, age, gender)
}
var obj = {
name: 'John'
}
var arr = [20, 'male']
sayName.apply(obj, arr) // 输出John 20 male
持续学习总结记录中,回顾一下上面的内容:
call()方法和apply()方法都是用来改变函数中this指向的方法,它们的作用是一样的,只是传参的方式不同。使用call()方法时,需要将要传递给函数的参数逐个列举出来;使用apply()方法时,需要将要传递给函数的参数放在一个数组中。如果传递的参数是一个数组,可以使用apply()方法将数组展开成一个一个的参数。