你不知道的JS系列 ( 19 ) - this 调用位置

Posted Zina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你不知道的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;使用开发工具得到调用栈,然后找到栈中的第二个元素,就是真正的调用位置。

 

 

以上是关于你不知道的JS系列 ( 19 ) - this 调用位置的主要内容,如果未能解决你的问题,请参考以下文章

你不知道的JS系列 ( 23 ) - this 绑定优先级

你不知道的JS系列 ( 22 ) - this new 绑定

你不知道的JS来聊聊this

《你不知道的JS(中卷)》关于this

《你不知道的js》——this全面解析

《你不知道的JS(中卷)》this详解