this。是?

67 阅读1分钟

当一个函数被调用时,会创建(执行)一个上下文,这个执行记录会包含函数在哪里被调用。

1、this = 谁调用this,this就指向什么。

2、this在运行时绑定,并不是在编写时绑定。

3、this的绑定和函数的声明,没有任何关系,只取决于函数的调用方式。

调用

调用位置指在函数中,“函数被调用的位置” 非声明位置

调用栈,就是为了到达当前执行位置所调用的所有函数

    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 的绑定