this 的补充。
function f() {
console.log(this.n)
}
var Obj = {
n:1,
f:f
}
// 当前作用域下是没有 this.n 这个值的
console.log(this.n) // undefined
// 所以在当前作用域下执行 f 函数,结果等于 undefined
f() // undefined
伪装执行环境。
function f(a, b) {
console.log(this.n + a + b)
}
var Obj = {
n:1,
f:f
}
// 把 f 函数执行的作用域修改成 Obj,那么就能读取到 Obj 内部 n 的值
f.call(Obj, 1, 2) // 2
// 效果同于 call,区别在于函数的传参
f.apply(Obj, [1, 2]) // 2