apply/call/bind内容

70 阅读1分钟

相同点:都是修改并定this指向;

不同点: 1.参数传入的不同; 2.调用方式的不同;

var objA = {
    say(age) {
        console.log(`objA say ${this.name}, age:${age}`)
    }
}

var objB = {
    name: 'objB'
}
// call
// 立即调用
// 参数是枚举类型
objA.say.call(objB, 12) // objA say objB, age:12

// bind
// 返回一个函数,后续等待调用
// 参数是枚举类型
objA.say.bind(objB)(13) // objA say objB, age:13

// apply
// 立即调用
// 参数是数组类型
objA.say.apply(objB, [14]) // objA say objB, age:14