apply/call动态改变函数的执行上下文,即改变this的指向。
以call为例:
function fun () {
console.log(this)
}
fun.call(1) // [Number: 1]
fun.call(‘2’) // [String: ‘2’]
fun.call(false) // [Boolean: false]
fun.call(null) // window/global
fun.call(undefined) // window/global
fun.call({name: ‘张三’}) // {name: ‘张三’}
在严格模式下,给call/apply传入的任何参数不再转换
‘use strict’
function fun () {
console.log(this)
}
fun.call(1) // 1
fun.call(‘2’) // ‘2’
fun.call(false) // false
fun.call(null) // null
fun.call(undefined) // undefined
fun.call({name: ‘张三’}) // {name: ‘张三’}