在JavaScript中,引用对象与#x27;声明对象的新键:值对时使用'this',与使用'this'的比较?

在JavaScript中,引用对象与#x27;声明对象的新键:值对时使用'this',与使用'this'的比较?,javascript,Javascript,在JavaScript中,在声明对象的新键:值对时,引用对象的变量名和使用this之间是否有区别 var foo = { bar: function() { foo.qux = 'value'; } }; alert(foo.qux); // undefined foo.bar(); alert(foo.qux); // 'value' var foo = { bar: function()

在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

另外:

仅考虑所提供的代码,两者都将执行相同的操作。但有一些事情需要记住:

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

变量可以改变。考虑这一点:

var bar = foo;
foo = null;
使用
foo
会破坏代码,但当使用
this
时,
bar.bar()


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

请欣赏第一句话,因为这是一个过于简单的示例。从组织和代码可读性的角度来看,我认为这种使用对象变量名的模式非常有用,特别是当您使用的全局对象的变量名不会改变,并且您的应用程序使用了大量的事件驱动逻辑时。我肯定会提倡最糟糕的做法,但这只是一个想法。