2017-09-02 9 views
-1

私は質問がかなりダムです知っている。なぜこのキーワードはメソッドで

関連するコード:

var myObj = { 
    name: 'Popo', 
    lastName: 'Shomo', 
    fullName: function(){ 
     return name + " " + lastName; 
    } 
}; 

に私はそれが動作しますthis.namethis.lastNameを追加することによって知っているが、私の質問は:なぜそれがそのレキシカルスコープに移動し、そこからプロパティをつかむことができませんか?私はその完全なD-U-M-Bを知っていますが、その背後にある適切な理由を知りたかったのです。

+1

最初に 'name'プロパティを入れておかないと、' myObj.name = 'Popo''という名前をつけていないと、 'name'はその関数の中でまだ' this.name'を参照していますか?これは潜在的に混乱を招くスコープの問題で、 'this'をはるかに単純な解決策にしています(そしてなぜ[with'ステートメント](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with )は推奨されていません)。 – Ryan

答えて

0

これは理論上、同じ名前のファイルとオブジェクトのプロパティに変数を持つことができるためです。オブジェクトのプロパティは常にsetオブジェクトから来なければなりません。そうでなければ、すべてのオブジェクト指向言語は以前に設定された変数を探します。

関連する問題