call 和 apply
- 作用: 都是为了改变某个函数运行的
context
上下文而存在的,为了改变函数体内部this
的指向 -
JavaScript
函数存在定义时上下文
和运行时上下文
, 上下文(context
)是可以改变的 -
call
和apply
作用完全一致,区别在于接收参数的方式不同 -
call
的参数fn.call(this,arg1,arg2)
-
apply
的参数fn.apply(this,[arg1,arg2])
demo
// 定义类
function Programmer(){}
// 添加原型
Programmer.prototype = {
hobby : ‘coding‘,
say(){
console.info(`I love ${this.hobby}`)
}
}
// 原始调用
const xm = new Programmer()
xm.say()
// apply 调用
const xh = {hobby:‘making love‘}
xm.say.apply(xh)