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
   92   93   94   95   96   97   98   99   100   101   102