基本使用
call、apply、bind的核心功能都是改变函数的this指向,但彼此之间也有一些差别。
call
改变this指向且执行函数,额外参数以参数列表形式传入
let context = {
name:'神秘的宝爷'
}
const myFn = function(age,height){
console.log(this.name+':'+age+':'+height)
}
myFn.call(context,25,'180cm') // 神秘的宝爷:25岁:180cm
复制代码
apply
与call几乎一样改变this指向且执行函数,额外参数以数组形式传入
let context = {
name:'神秘的宝爷'
}
const myFn = function(age,height){
console.log(this.name+':'+age+':'+height)
}
myFn.call(context,[25,'180cm']) // 神秘的宝爷:25岁:180cm
复制代码
bind
改变this指向,的函数,而是返回一个this被改变的function,参数以参数列表形式传入
let context = {
name:'神秘的宝爷'
}
const myFn = function(age,height){
console.log(this.name+':'+age+':'+height)
}
let myFn2 = myFn.bind(context)
myFn2(25,'180cm') // 神秘的宝爷:25岁:180cm