call和apply 、bind都是用来修改函数中this的指向问题
let name = '比的佛';
let age = 20;
let obj = {
name: '小佛',
age: 15,
sayHi: function (name,hobby){
console.log(name + '你好,我是' + this.name + '我今年'+ this.age + ',很高兴你也喜欢'+ hobby)
}
}
let person = {
name: '露露',
age: 20
}
obj.sayHi('limei','swimming')
obj.sayHi.call(person, 'joy','running')
obj.sayHi.apply(person, ['fanghai','cooking'])
obj.sayHi.bind(person, 'xiyuan','sleeping')()
输出
limei你好,我是小佛我今年15,很高兴你也喜欢swimming
joy你好,我是露露我今年20,很高兴你也喜欢running
fanghai你好,我是露露我今年20,很高兴你也喜欢cooking
xiyuan你好,我是露露我今年20,很高兴你也喜欢sleeping
bind 除了返回是函数以外,它 的参数和 call 一样 apply apply 的所有参数都必须放在一个数组里面传进去
|