7

thisJavaScript では、オブジェクトの変数名を参照するのと、オブジェクトの新しいキー:値のペアを宣言するときに使用するのとでは違いがありますか?

    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;

を使用fooするとコードコードが壊れますが、を使用してthisbar.bar()期待どおりに機能します。

を使用fooすると、関数が変数の名前に依存するようになるため、変数が変更されるたびに関数が機能しなくなります。これは、コードのリファクタリングに関する重要な側面でもあります。

于 2012-05-22T20:30:27.100 に答える