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



在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

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

仅考虑呈现的代码,两者都会做同样的事情。但有一些事情要记住:

foo不是对象的名称,而是变量的名称。

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

var bar = foo;
foo = null;
使用

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

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

最新更新