これらは同等だと思いました。
var __Panel = {
this.header = null;
};
var __Panel = function() {
this.header = null;
};
最初のものは、コンパイラエラー "Expected identifier or string" に対してthis
、および "Expected ','" に対してコンパイラエラーを返します;
。
誰かが私のためにこれを少し明確にすることができますか?
これらは同等だと思いました。
var __Panel = {
this.header = null;
};
var __Panel = function() {
this.header = null;
};
最初のものは、コンパイラエラー "Expected identifier or string" に対してthis
、および "Expected ','" に対してコンパイラエラーを返します;
。
誰かが私のためにこれを少し明確にすることができますか?
これは私にとって興味深いものでした:
js> var p = { this.header = null; };
js: "<stdin>", line 11: invalid property id
js: var p = { this.header = null; };
js: ..............^
js: "<stdin>", line 11: syntax error
js: var p = { this.header = null; };
js: ..............................^
これについてのプレオナスティックな説明は次のとおりです。
答えを提案するのは rhino です。this.header
テキストはプロパティ ID として解釈され、プロパティ ID としては有効ではありません。したがって、{ }
はプロパティを「含む」オブジェクトであり、プロパティ名は のようにはなりませんthis.header
。さらに進んで、「オブジェクト」の構文を確認できます。のように単純に見えます{ propertyId1 : value1, propertyId2 : value2, ...}
。
js> var p = { header:0, doit: function(){this.header=null;} };
これは受け入れられ、実際には「オブジェクト構文」が尊重されます。header
整数 0 をdoit
保持する と 関数を保持するの2 つのプロパティを持つオブジェクトを定義しました。
なぜ{this.header=null;}
受け入れられたのか不思議に思うかもしれません。これは、オブジェクトの構文と、コードの「ブロック」を「区切る」ための の使用法を混同する必要がないためです{}
。この場合は、関数自体、そのコードを「含みます」。それら{}
は「むき出し」が{}
表すものと同じものを表しているわけではなく、これはそれらの前に存在することによって明らかになりfunction()
ます。
js> p.header;
0
これは、プロパティheader
が 0 を保持していることを示しています。これは単純で明白な事実です。
js> p.doit();
これにより、プロパティに保持されている関数が実行されますdoit
。私たちはそれが起こることを期待しています?. この質問は、何であるかを尋ねることから派生しthis
ます。
js> p.header;
null
プロパティの内容を再度確認すると、header
null に変更されていることがわかります。これはthis
、プロパティ内の関数で、プロパティdoit
を「含む」オブジェクト、オブジェクト p 自体を参照することを意味します。
元の、削除された、コミュニティ wiki の投稿は次のとおりです。
これは私にとって興味深いものでした:
js> var p = { this.header = null; };
js: "<stdin>", line 11: invalid property id
js: var p = { this.header = null; };
js: ..............^
js: "<stdin>", line 11: syntax error
js: var p = { this.header = null; };
js: ..............................^
js> var p = { header:0, doit: function(){this.header=null;} };
js> p.header;
0
js> p.doit();
js> p.header;
null
元の投稿の終わり
これはすべて、パスを介して、暗黙的および暗黙的な方法で、おそらく別の方法で、コミュニティ Wiki モードがより多くの「話す例」 (実践による学習とエラーの解釈手法) で成長するのに役立つ可能性があるという質問に答えます。
しかし、それは「キャッチ」されず、明示的な「演繹的」手順が追加されました。