2

名前が決して変わらない単純なオブジェクトリテラルがあるとしましょう:

var car = {
    wheels : 4,
    construct : function() {
        var that = this;
        setTimeout(function() {
            console.log(that.wheels);
            console.log(car.wheels);
        }, 500);
    }
};

私の質問は次のとおりです。どちらの方法が良いですか? オブジェクトの名前で参照するか、新しい変数を作成しますか (これには時間とメモリがかかり、おそらく複数の関数で実行する必要があります)?

4

1 に答える 1

2

オブジェクト内では、次の破損を防ぐために、常にthis(または必要に応じてそのコピーを介して) オブジェクトを参照する必要があります。that

var car = ...

// do stuff

car = undefined;   // or anything else, perhaps by a code hacker in the JS console

// class is now broken

外部でオブジェクトにたまたま付けられた変数名は、知らないものとして扱い、変更される可能性があります。

他の誰かがそれを別の名前で呼ぶかもしれませんし、複数の名前が存在するかもしれませんし、その名前が突然別のオブジェクトを指すかもしれません。このような変数は、オブジェクトへの参照の「所有者」のためのものであり、オブジェクト自体のためのものではありません。

于 2013-09-20T16:22:32.747 に答える