Day32:this的调用位置

作者: 钱塘风华 | 来源:发表于2019-04-25 22:52 被阅读3次

【书名】:你不知道的JavaScript(上卷)

【作者】:Kyle Simpson

【本书总页码】:213

【已读页码】:98

this 并不指向函数本身或者函数所在的词法作用域,每个函数的 this 是在调用时被绑定的,完全取决于函数的调用位置(也就是函数的调用方法)。

分析调用栈(就是为了到达当前执行位置所调用的所有函数),调用位置就在当前正在执行的函数的前一个调用中。

(不用LATEX语法了,写起来实在是麻烦。。。)

function baz() {

    //当前调用栈是:baz,因此,当前调用位置是全局作用域

    console.log( "baz" );

    bar(); // <-- bar 的调用位置

}

function bar() {

    // 当前调用栈是 baz -> bar,因此,当前调用位置在 baz 中

    console.log( "bar" );

    foo(); // <-- foo 的调用位置

}

function foo() {

    //当前调用栈是 baz -> bar -> foo,因此,当前调用位置在 bar 中

    console.log( "foo" );

}

baz(); // <-- baz 的调用位置

注意调用位置决定了 this 的绑定。

你可以把调用栈想象成一个函数调用链。但是这种方法非常麻烦并且容易出错。另一个查看调用栈的方法是使用浏览器的调试工具。可以在工具中给 foo() 函数的第一行代码设置一个断点,或者直接在第一行代码之前插入一条 debugger;语句。运行代码时,调试器会在那个位置暂停,同时会展示当前位置的函数调用列表,这就是调用栈。因此,如果想要分析 this 的绑定,使用开发者工具得到调用栈,然后找到栈中第二个元素,这就是真正的调用位置。

相关文章

  • Day32:this的调用位置

    【书名】:你不知道的JavaScript(上卷) 【作者】:Kyle Simpson 【本书总页码】:213 【已...

  • 上卷 第二部分 第二章 this全面解析

    调用位置 通常而言,调用位置就是函数被调用的位置 注意调用栈 绑定规则 默认绑定独立函数调用是最常用的函数调用类型...

  • 论this全面解析

    调用位置 在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的...

  • 关于this(二)

    this全面解析 调用位置 在理解 this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的...

  • 浅谈javascript中this的指向

    浅谈javascript中this的指向 调用位置 在理解this的绑定过程之前,首先要理解调用位置。调用位置就是...

  • 自定义viewgroup的开发精要

    先找调用inflate()的位置, 没有调用inflate()的话, 就查调用了addView()的位置. 对于自...

  • JavaScript this绑定过程

    在理解this 的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明的位置)。只有...

  • js中关于this全面解析和this的指向问题

    this指向原则每个函数的this是在调用的时候被绑定的,完全取决于函数的调用位置。 1、 调用位置 调用位...

  • 你不知道的JavaScript(二)|this和对象原型

    this全面解析在理解this的绑定过程之前,首先要理解调用位置:调用位置就是函数在代码中被调用的位置(而不是声明...

  • es5的this的指向性问题(详解)

    在说this的指向性问题之前,咱们先说一下函数的调用位置,调用位置就是函数在代码中被调用的位置。 1、下面我们来看...

网友评论

    本文标题:Day32:this的调用位置

    本文链接:https://www.haomeiwen.com/subject/puatnqtx.html