你不知道的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;使用开发工具得到调用栈,然后找到栈中的第二个元素,就是真正的调用位置。

 

 

posted @ 2020-03-04 06:40  wzndkj  阅读(210)  评论(0编辑  收藏  举报