ホームページ  >  記事  >  ウェブフロントエンド  >  js オブジェクト指向設計 (コンストラクター)_js オブジェクト指向設計では {} と function(){} を使用する方が良いですか

js オブジェクト指向設計 (コンストラクター)_js オブジェクト指向設計では {} と function(){} を使用する方が良いですか

WBOY
WBOYオリジナル
2016-05-16 18:00:27783ブラウズ

インターネット上で多くの JavaScript プロジェクトを見てきましたが、使用されているオブジェクトはすべて {} の形式です。
たとえば、jQuery、TinyMCE などはすべて、

の形式です。 コードをコピー コードは次のとおりです:

var Dialog =
{
int : function() { .. .. },
insert : function( ) { .... },
pop : function() { .... }
}//呼び出しは次のとおりです:
Dialog.init();


私は常に関数クロージャを使用してきましたが、内部プライベート メンバー (関数、変数) を使用する方が便利だと感じています:

コードをコピーします コードは次のとおりです:
function classDialog()
{
var box = "sdfsdf "; //init、insert、その他の関数でパブリック変数を呼び出すのは非常に複雑ですが、内部関数を呼び出すこともできて非常に便利です (たとえば、search() を直接呼び出すことができます)。

this.init = function() { .... };
this.insert = function() { . ... }; >
function search() { .... }
}
var Dialog = new classDialog ();
Dialog.init();


TinyMCE は関数を使用する必要があり、init: function() { } 内で関数を定義しますが、この場合、この関数は init によってのみ呼び出すことができ、他のメソッドはこのプライベート関数を共有できません。
もちろんです。


関数(){} クロージャーはオブジェクトの作成に非常に便利なので、プライベート関数が複数のパブリック関数によって呼び出される例をまだ見たことがありません。 、なぜ {} メソッドが広く使用されているのでしょうか?

作成されたオブジェクトの欠陥は何ですか?

{} を直接使用してオブジェクトを作成する場合、作成されるオブジェクトはほとんどなく、カプセル化は必要ありません。オブジェクトをバッチで作成する必要がある場合は、コンストラクターを使用すると非常に便利です。特定の状況

この 2 つはまったく別のものです。
{} はシングルトン (シングルトン モード) とみなすことができます。
function(){} はオブジェクトを返します。 NEW が返されるたびに、異なるオブジェクトが返されます。

上記の生徒の中には、{} の方が効率的だとも言った人もいます。そして、新しいものを使用する必要はありません。 {} はグローバルに固定されており、任意に拡張できます。

一般に、{} は非常に効率的で使いやすいですが、特定のメソッドを公開したくない場合は function を使用することをお勧めします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。