在JavaScript中,在声明对象的新键:值对时引用对象的变量名与使用`this`之间存在区别吗?

Ant*_*ony 7 javascript

在JavaScript中,引用对象的变量名与this在声明对象的新键:值对时使用时有区别吗?

    var foo = {
      bar: function() {
        foo.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // 'value'

    var foo = {
      bar: function() {
        this.qux = 'value';
      }
    };

    alert(foo.qux); // undefined
    foo.bar();
    alert(foo.qux); // value
Run Code Online (Sandbox Code Playgroud)

另外:http://jsbin.com/emayub/9/edit

Fel*_*ing 9

只考虑所提出的代码,两者都会做同样的事情.但是有一些事情要记住:

foo不是对象的名称,它是变量的名称.

变量可以改变.考虑一下:

var bar = foo;
foo = null;
Run Code Online (Sandbox Code Playgroud)

使用foo会破坏代码,但在使用时this,bar.bar()仍然会按预期工作.

通过使用foo,您将使函数依赖于变量的名称,因此每当变量更改时,函数都会中断.这也是代码重构的一个重要方面.