2012-09-10 15 views
6

私は基本からJavaScriptを学習しています(ただし、C#などの他の言語でプログラミングしています)。この2つの方法のどちらがより効率的であり、一般的なルールとして使用されるべきかという質問が私に現れた。リテラル表記VS. JavaScriptでオブジェクトを作成するためのコンストラクタ

確定的な回答はないと思いますが、私は一般的な賛否両論を知りたいと思います。

ありがとうございました!

+1

のいずれも使用できますが、どちらか一方を選択することはできません。 – Ibu

+1

ここで同じ質問に対する多くのより良い回答:http://stackoverflow.com/questions/4859800/should-i-be-using-object-literals-or-constructor-functions – BritishDeveloper

答えて

8

通常、オブジェクトリテラルが使用されます。スクリプトをロードするときにのみ解析する必要があり、スクリプトエンジンによってさまざまな最適化が導入される可能性があります。

コンストラクタを実行する必要があります。これは、それらが遅くなることを意味しますが、検証コードなどを簡単に追加することができ、コンストラクタスコープに隠された公開された特権メソッドとプライベート "属性"を持つ複雑なオブジェクトの構築が可能になります。また、もちろん、プロトタイプを共有するオブジェクトを構築することもできます。

4

パフォーマンスの効率性が他のものより上がっていることには気づきません。しかし、リテラル表記は、単純な引数のために、またコンストラクタとnewキーワードの使用を避けるため、その好みを得ているようです。

コンストラクタとnewキーワードは、JavaScript言語のネガティブな機能として見られます(Crockford - JavaScript:The Good Partsを参照)。 JSLintは、new Array()またはnew Object()を見つけるときにも呼び出します。

関連する問題