javascript函数和这个关键字,上下文

Abd*_*ziq 2 javascript keyword

这是代码

obj = {
    a: 'some value';
    m: function(){
        alert(this.a);
    }
}

obj.m();
Run Code Online (Sandbox Code Playgroud)

结果是'some value'.

我听说这个关键字引用了函数的所有者是obj.现在的问题是上面代码中函数的所有者是obj这样的,为什么在函数拥有所有者时使用此关键字很重要,上面的代码应该按照以下方式工作

obj = {
    a: 'some value';
    m: function(){
        alert(a);
    }
}

obj.m();
Run Code Online (Sandbox Code Playgroud)

哪个不起作用我知道但为什么?

Gau*_*ish 6

a在功能范围内不可用m.

a是对象的属性obj仅作为和可用的obj.athis.a范围内obj.

由于在上下文中obj.m()执行,您可以使用inside函数进行访问.maathis.am

在JavaScript中,使用this是必需的.

在Java或C++等其他语言中,使用this是可选的.如果Java/C++中没有局部变量,则会x自动解析this.x,但不会在JavaScript中解析.