美文网首页
关于this(—)

关于this(—)

作者: 后发而先制 | 来源:发表于2017-07-24 15:10 被阅读0次

    this 关键字是 JavaScript 中最复杂的机制之一。它是一个很特别的关键字,被自动定义在

    所有函数的作用域中。但是即使是非常有经验的 JavaScript 开发者也很难说清它到底指向

    什么。this 实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。

    为什么要用this

    1.this可以根据不同的上下文对象,调整相同的函数。

    2.this可以隐式传递一个对象的引用。

    误解

    1. this 并不像我们所想的那样指向函数本身.

    function foo(num) {

    console.log( "foo: " + num );

    // 记录 foo 被调用的次数

    this.count++;

    }

    foo.count = 0;

    var i;

    for (i=0; i<10; i++) {

    if (i > 5) {

    foo( i );

    }

    }

    // foo: 6

    // foo: 7

    // foo: 8

    // foo: 9

    // foo 被调用了多少次?

    console.log( foo.count ); // 0 -- WTF?

    2.它的作用域

    this 指向函数的作用域。这个问题有点复杂,因为在某种情况下它是正确的,但是在其他情况下它却是错误的。

    function foo() {

    var a = 2;

    this.bar();

    }

    function bar() {

    console.log( this.a );

    }

    foo(); // ReferenceError: a is not defined

    this 是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调

    用时的各种条件。this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。

    当一个函数被调用时,会创建一个活动记录(有时候也称为执行上下文)。这个记录会包

    含函数在哪里被调用(调用栈)、函数的调用方法、传入的参数等信息。this 就是记录的

    其中一个属性,会在函数执行的过程中用到。

    相关文章

      网友评论

          本文标题:关于this(—)

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