JavaScript フレームワークのほとんどが、コンストラクターまたはプロトタイプを含むコンストラクターの代わりにオブジェクト リテラルを使用する理由
4 に答える
jQuery が jQuery/$ オブジェクトを自動的に定義する方法を意味していると思いますか? 簡単な答え...その方が簡単です。すべてのページに次の 2 行を含める必要がある場合、jQuery が新しいユーザーにとってどれほど混乱するか想像できますか?
var jQuery = new jQuery();
var $ = jQuery;
{}
vsnew Object()
と[]
vsの使用について話していると思います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);
編集:オブジェクトと配列のパフォーマンス テストを行いました。私にとって、オブジェクト リテラルは実際には Chrome で少し遅くなりました。ただし、配列リテラルははるかに高速でした。ただし、構文は引き続き優先されます。
それはすべて、作成しているプログラムの必要性と、コード ベースを維持する方法によって異なります。
共有プロパティとメソッドを使用してインスタンス化されるオブジェクトが多い場合、コンストラクターを使用してそのプロトタイプを埋める方がメモリ効率が高くなる可能性があります。
コードが多かれ少なかれシングルトンである場合、オブジェクトを作成していくつかのメソッドで埋める方がおそらく効率的です。
「パターン」とその意味について詳しく知りたい場合は、 http://addyosmani.com/resources/essentialjsdesignpatterns/book/ をご覧ください。
または、通常の (電子) 本が好きな場合は、http://shop.oreilly.com/product/9780596806767.doをお勧めします