- call, apply都是改变函数上下文之后立即执行
- 不同的是,call多个参数依次传递,用逗号分隔;apply多个参数用一个数组传递
- bind改变函数上下文不会立即执行,需要手动调用,传参数的方式跟call一样,但是可以在bind的时候传参,也可以在调用的时候传参
let tom = {
name: 'tom'
}
function greet(age, address) {
console.log(`I am ${this.name}, I am ${age} years old, I live in ${address}`)
}
greet.call(tom, 26, '江夏区')
greet.apply(tom, [26, '江夏区'])
greet.bind(tom, 26, '江夏区')()
greet.bind(tom)(26, '江夏区')