charleyup

为自己吹过的🐮🍺奋斗终生.

apply、call和bind的作用与区别

2016/12/03

作用

改变函数运行时的上下文,即this的指向

语法

const func = function(a, b, c) {}
const obj = new Object()
func.call(obj, a, b, c)
func.apply(obj, [a, b, c])
fun.bind(obj, a, b, c)

解析

通过上述语法可知,调用call、apply、bind的对象,都必须是一个Function,call、apply、bind的第一个参数是一个对象,func运行时的this将指向这个对象,若不传,则默认全局对象window.

apply和call都会立即执行,bind则会返回一个新函数,需手动调用.

apply的第二个参数是一个数组,会将数组展开作为参数传递给调用函数.

call和bind从第二个参数开始,依次作为参数传递给调用函数.