你不知道的JS系列 ( 19 ) - this 调用位置
我们排除了一些对于 this 对错误理解并且明白了每个函数的 this 是在调用时被绑定的,完全取决于函数的调用位置。寻找调用位置就是寻找“函数被调用的位置”,但是做起来并没有这么简单,因为某些编程模式可能会隐藏真正的调用位置
最重要的是要分析调用栈,就是为了到达当前执行位置所调用的所有函数
function baz(){ // 调用位置是全局作用域,调用栈 baz console.log('baz'); bar(); // bar 的调用位置 } function bar(){ // 调用位置在 baz 中,调用栈 baz -> bar console.log('bar'); foo(); // foo 的调用位置 } function foo(){ // 调用位置在 bar 中,调用栈 baz -> bar -> foo console.log('foo'); } baz(); // baz 的调用位置
可以把调用栈想象成一个函数调用链,但是这种方法非常麻烦并且容易出错。另一个查看调用栈的方法是使用浏览器的调试工具。Sources 里面的 Call Stack;使用开发工具得到调用栈,然后找到栈中的第二个元素,就是真正的调用位置。