Page 97 - 你不知道的JavaScript(上卷)
P. 97
第 2 章
this全面解析
在第 1 章中,我们排除了一些对于 this 的错误理解并且明白了每个函数的 this 是在调用
时被绑定的,完全取决于函数的调用位置(也就是函数的调用方法)。
2.1 调用位置
在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的
位置(而不是声明的位置)。只有仔细分析调用位置才能回答这个问题:这个 this 到底引
用的是什么?
通常来说,寻找调用位置就是寻找“函数被调用的位置”,但是做起来并没有这么简单,
因为某些编程模式可能会隐藏真正的调用位置。
最重要的是要分析调用栈(就是为了到达当前执行位置所调用的所有函数)。我们关心的
调用位置就在当前正在执行的函数的前一个调用中。
下面我们来看看到底什么是调用栈和调用位置:
function baz() {
// 当前调用栈是:baz
// 因此,当前调用位置是全局作用域
console.log( "baz" );
bar(); // <-- bar 的调用位置
}
function bar() {
82