call、apply、bind之间相同与不同之处
1、call和apply传参方式不同,call是传离散数据,apply传输数组
2、bind返回值是函数
3、bind和call的传参是一样的
4、相同之处都是可以改变this指向
const Tx={
name:'freemen',
company:'Tencent',
time:'2001-1-1',
say(company){
console.log(`my name is `,this.name)
console.log(`my company is`,this.company);
}
}
const Al={
name:'vinko',
company:'Alibaba',
time:'2001-1-1',
say(company){
console.log(`my name is `,this.name)
console.log(`my company is`,this.company);
}
}
Tx.say(Tx)
Tx.say.call(Al,'Alibaba')
Tx.say.apply(Al,['Alibaba'])
const say = Tx.say.bind(Al,'Alibaba')
say()
call的使用场景
1、判断数据类型
const arr = [1,3,5,6,7]
const type = Object.prototype.toString.call(arr);
console.log(type);
2、伪数组转数组
const arrLike = {
0:'name',
1:'age',
2:'gender',
length:3
}
const array = Array.prototype.slice.call(arrLike);
console.log(array);
apply使用场景
1、给数组求最大值、最小值
const arr = [1,3,5,6,7]
const max = Math.max.apply(null,arr)
console.log(max);
const min = Math.min.apply(null,arr)
console.log(min);