let lisi = {
name: '李四'
}
let wangwu = {
name: '王五'
}
function User(height, age) {
console.log(`${this.name+age}岁${height}`)
}
User.call(lisi, '190cm', 11)
User.apply(wangwu, ['189cm', 19])
结果
apply 和 call 可以改变函数的this ,apply的第二个参数是数组。
let arr = [2, 46, 345, 687]
console.log(Math.max.apply(Math, arr)) //获取数组的最大值
Math.max()需要传入多个值,且不能为引用类型,这时可以使用apply 的第二个参数是数组的特点。 传入时是数组,被内部使用时是被自动展开的。
bind不会立即执行,并且会复制这个函数返回。
function User() {
console.log(this.name);
}
let obj = {
name: 'xiaoming'
}
let b = User.bind(obj) //不会执行
console.log(b === User) //fales