7

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

    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

4

1 回答 1

9

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

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

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

var bar = foo;
foo = null;

Usingfoo会破坏代码代码,但在 using 时thisbar.bar()仍将按预期工作。

By using foo, you are making the function dependent on the name of variable, so whenever the variable changes, the function breaks. This is also an important aspect regarding code refactoring.

于 2012-05-22T20:30:27.100 回答