ほとんどのjavascriptフレームワークでは、プロトタイプを持つコンストラクタやコンストラクタの代わりにオブジェクトリテラルを使用するのはなぜですか?プロトタイプを持つコンストラクタに対するオブジェクトリテラルの使用ほとんどのJavaScriptフレームワークでオブジェクトリテラルが使用されている理由
答えて
すべては、作成しているプログラムの必要性とコードベースを維持する方法によって異なります。
共有プロパティとメソッドを使用して多くのインスタンスを生成するオブジェクトがある場合、コンストラクタを使用してそのプロトタイプを埋める方が効率的です。
コードが多かれ少なかれシングルトンである場合、おそらくオブジェクトを作成していくつかの方法でそれを入力するほうが効率的です。あなたが出てhttp://addyosmani.com/resources/essentialjsdesignpatterns/book/
チェックできる「パターン」と彼らがあなたに意味することができますについての詳細をご希望の場合は、通常の(e - )が本を好きなら
プロトタイプアプローチを使用するフレームワークはありますか? –
プロトタイプアプローチを利用するフレームワークがいくつかあります。私の頭の中で最初に飛び出すのは、(プロトタイプではない) "プロトタイプ"です。 – PM5544
jQueryが自動的にjQuery/$オブジェクトをどのように定義するのかというと思いますか?簡単な答え...それは簡単な方法です。 1ページに次の2行を含めなければならない場合、jQueryが新しいユーザーにとってどのように混乱するか想像できますか?
var jQuery = new jQuery();
var $ = jQuery;
しかし、もしこのコードがjQueryの中にあれば? –
私はあなたがnew Object()
とnew Array()
対[]
対{}
を使用して話をしていると思います。
リテラルバージョンは、多くの場合、高速です(もちろん、これはブラウザによって異なります)。また、配列内のオブジェクトまたはプロパティのプロパティをオンセットから定義できるという追加の利点も得られます。これにより、コードは軽量で読みやすくなります。
var o = {
a: 1,
b: 2,
c: 3,
d: 4
};
// vs.
var o = new Object();
o.a = 1;
o.b = 2;
o.c = 3;
o.d = 4;
var a = [1, 2, 3, 4, 5];
// vs.
var a = new Array();
a.push(1, 2, 3, 4, 5);
編集:私はobjectsとarraysのための性能試験を行いました。私にとって、オブジェクトリテラルは実際にはChromeで少し遅くなりました。しかし、配列リテラルははるかに高速でした。ただし、構文はまだ推奨されています。
しかし、オブジェクトを数回インスタンス化した場合、プロトタイプはすべてのメソッドでオブジェクト全体を再作成していないため、メモリ使用量が少なくなります。
プロトタイプは、その場で新しいメソッドを作成し、そのオブジェクトのすべてのインテンスを使用できるので、いいです。構文的には醜いので、私はオブジェクトリテラルを好む。しかし、あなたが大規模なアプリケーションを構築している場合、パフォーマンスが大きな問題である場合、プロトタイプはおそらく前方にない方法ですか?
- 1. ほとんどのアプリケーションがDLLでリリースされた理由
- 2. ほとんどのフォームJavaScriptがNAMEの代わりにIDを使用する理由
- 3. 割り込みサービスルーチンにほとんどのシステムコールが含まれない理由
- 4. IEがほとんど表示されていない
- 5. 私のアプリはクラッシュして終了し、理由はほとんど知られていません。
- 6. ほとんどのAndroidバージョンでどの携帯電話が使用されていますか?
- 7. デバッグ.NETアセンブリバインディング別名dllが使用されている理由とその理由を確認する
- 8. "ブール短絡"は標準で規定されているのか、あるいはほとんどが最適化として使用されていますか?
- 9. .NETコードのアクセスセキュリティ - なぜこれはほとんど使用されていないのですか?
- 10. RESTful APIに関するいくつかの質問とベストプラクティスのほとんどが実装されていない理由
- 11. セキュリティが強化されている理由と、JSONまたはXMLの理由
- 12. クイックソートの実装:ランダムピボットを使用するとほとんどソートされます
- 13. どのフレームワークが使用されていますか?
- 14. Javascriptオブジェクトリテラル表記(関数を使用)
- 15. webpackが 'System.register'としてバンドルされている理由
- 16. イベントがデリゲートとして定義されている理由
- 17. 「text/javascript」を使用する理由
- 18. yiiフレームワークでChtmlを使用する理由
- 19. ほとんどのMySQLで頻繁に更新されるテーブル
- 20. メインスタイルシートがWordPressフロントエンドに適用されている理由
- 21. UIViewが約10pxでナッジアップされている理由が分かりません
- 22. 更新ステートメントで "with(rowlock)"が使用されている間にテーブル全体がロックされる理由
- 23. バイナリのほとんどはリロケーションテーブルで構成されていますか?
- 24. Ruby on Railsはほとんどのホストでサポートされていますか?
- 25. ほとんどのデバッグオプションはEclipseでグレー表示されています
- 26. Springフレームワークではどのようなデザインパターンが使用されていますか?
- 27. どのPHPフレームワークが企業で使用されていますか?
- 28. このjavascript関数が実行されていない理由を、コンソール
- 29. EclipseのEgitでCommitがグレーアウトされている理由
- 30. 春 - コンストラクタに渡されないフィールドがほとんどありません
これは2つの全く異なるものです...コード例によっては、あなたの意図を明確にするかもしれません。 – jondavidjohn