JavaScript でオブジェクトを作成する方法はたくさんあります。
オブジェクト コンストラクター/オブジェクト リテラル:
デザイン パターンは別として、最も基本的な方法は、最初に Object コンストラクターを呼び出してオブジェクトを作成し、次にそのオブジェクトにプロパティを追加することです。
工場出荷時モード:
ファクトリ パターンは、オブジェクトを作成する特定のプロセスを抽象化します。ブラックボックスのように、関数を呼び出して(工場に入り)、対応するパラメータ(さまざまな原材料)を渡すと、対応するオブジェクト(工場で生産される製品)が出てきます。ファクトリ パターンは、複数の同様のオブジェクトを作成する問題を解決します。
欠点: ファクトリ パターンにも欠点があります。最大の欠点は、オブジェクトの種類の認識の問題です。オブジェクトの型が Object (p1 instanceof Object) であることだけが判断できますが、具体的にどの型であるかを判断することはできません。ファクトリ パターンを使用して作成されたスチューデントは、実際には同様のプロパティとメソッドを持ちますが、値は異なります。現時点でのより良い解決策は、すべてのオブジェクトが Student タイプに属するように Student 関数を作成することです。つまり、ファクトリー パターンが悪いわけではなく、コンストラクター パターンの方が優れているというだけです。
カスタム型のコンストラクター:
コンストラクターを使用して、特定のタイプのオブジェクトを作成できます。
欠点: カスタム コンストラクターの欠点は、各オブジェクトが独自のメソッドを再作成することです。実際、これらのメソッドの機能は同じですが (sayName など)、同じではありません (p3.sayName と p4.sayName)。等しくありません)。
プロトタイプモード:
空の関数を定義し、すべてのプロパティとメソッドをプロトタイプに追加して、すべてのオブジェクトがこれらのプロパティとメソッドを共有するようにします。
欠点: 一部の属性は共有できず、共有すると問題が発生します。たとえば、友人。各クラスメートの友達のほとんどは異なります。
コンストラクターとプロトタイプの組み合わせ:
概要: コンストラクターとプロトタイプの組み合わせは、カスタム型を作成する方法として広く認識されています。 上記の方法の中で最も優れた方法でもあります。
/************************************************* ************************************************* *********/
実際には、上記のオブジェクトを作成する方法はたくさんありますが、継続的な最適化が必要な特殊なシナリオがいくつかある場合があります。
動的プロトタイプ モード:
コンストラクターとプロトタイプの組み合わせの最適化です。これらの共有プロパティとメソッドについては、初期化されていれば、効率を向上させるために再度初期化する必要はありません。
複数の生徒オブジェクトを作成する場合、sayName メソッドは 1 回だけ初期化されます。
最後に、オブジェクトを作成する非常に便利な方法、つまり安全なコンストラクターがあります。
確実なコンストラクター パターン:
このモードでは、this と new の使用は禁止されており、すべてのオブジェクトはパブリック属性を持ちません。変数の値は読み取りのみ可能であり、変更はできません。
上記は、JavaScript でカスタム オブジェクトを作成するためのいくつかの一般的な方法をまとめたものです。より良いアイデアがあれば、この記事は継続的に更新されます。