有人可以参考'this'关键字来解释这个js代码的工作吗?

时间:2015-10-31 02:43:30

标签: javascript

JS代码是:

this.sound1 ="global";

function cat(){
    this.sound = 'meawo!!!!';
    this.sound1 = 'meawooooo!!!!';

    meawo1 = function(){
        console.log(this.sound1);
        console.log(this);
    };

    function meawo2(){
        console.log(this.sound1);
        console.log(this);
    };

    this.meawo = function(){
        console.log(this.sound);
        console.log(this);
        meawo1();
        meawo2();
    };

};

var c = new cat();
c.meawo();

输出为: enter image description here

问题:如何this meawo1(函数表达式)& meawo2(函数表达式声明)是指“global”而不是对象c?那是为什么?

1 个答案:

答案 0 :(得分:2)

在想知道this引用的对象时,请记住一个简单的提示。

obj.method();

在上文中,method上会调用obj,因此this中的method将会被调用,即obj = this

在您的情况下,虽然在meowo上调用c,但meowo1meowo2 <\ n> <\ n>参考。

没有调用它们的显式作用域的函数默认为全局上下文,尽管函数本身不是全局的,并且由于闭包而可以利用其父上下文中的所有变量。