2

ここにコードがあります

obj = {
    a: 'some value';
    m: function(){
        alert(this.a);
    }
}

obj.m();

結果は'some value'です。

このキーワードは関数の所有者を is で参照していると聞きましたobj。問題は、上記のコードの関数の所有者が、関数に所有者がいるobjときにこのキーワードを使用することがなぜ重要なのかということです。上記のコードは次のように動作する必要があります

obj = {
    a: 'some value';
    m: function(){
        alert(a);
    }
}

obj.m();

私が知っているが、なぜうまくいかないのですか?

4

2 に答える 2

6

a関数のスコープでは使用できませんm

aは object のプロパティであり、 として、またはのコンテキスト内でobjのみ使用できます。obj.athis.aobj

のコンテキストでobj.m()実行されるため、関数内を使用してアクセスできます。maathis.am

JavaScript では、の使用thisが必須です。

Java や C++ などの他の言語では、の使用thisはオプションです。Java / C++ にローカル変数がない場合にx自動的に解決されますが、JavaScript にはありません。this.x

于 2013-02-17T16:59:20.017 に答える