は
の前に書かれています
複数の方法でオブジェクトを初期化したい場合があります。たとえば、コンストラクター
のパラメーター リストを渡して初期化するのではなく、要素の配列を通じて Set オブジェクトを初期化します。
過負荷
このコンストラクター メソッドをオーバーロードすることにより、渡されたさまざまなパラメーターに従ってさまざまな初期化メソッドを実行できます。
function Set() {
this .values = {}; // このオブジェクトのプロパティを使用してこのコレクションを保存します
this.n = 0 // コレクション内の値の数
//配列のようなオブジェクトが渡されると、この要素は set
に追加されます。// それ以外の場合は、すべてのパラメータを set
if(arguments.length === 1 && isArrayLike(arguments[0])) に追加します。 {
this.add.apply (this, argument[0]); // apply()
を使用してオブジェクトをコレクションに追加します;else if(arguments.length > 0) {
this. add.apply(this, argument); // add() メソッドを使用して、すべてのパラメータをコレクションに追加します
}
}
このコードで定義されている Set() コンストラクターは、要素のセットをパラメータ リストとして明示的に渡すことも、要素の配列で渡すこともできます。ただし、このコンストラクターはあいまいです。コレクションのパラメーターが配列である場合、このコンストラクターを使用してコレクションを作成することはできません (これを行うには、まず空のコレクションを作成してから、明示的に add() メソッドを呼び出す必要があります)。
ファクトリーメソッド
クラスメソッドは、クラスのインスタンスを返すために使用されます。
// ファクトリ メソッドは Set オブジェクトを初期化します。配列を介して
Set.fromArray = function(arr) {
var s = new Set();
s.add.apply(s, arr);
return s;
} ;
異なる名前のファクトリ メソッドは、異なる初期化を実行するために使用されます。ただし、コンストラクターはクラスの公開識別子であるため、各クラスはコンストラクターを 1 つだけ持つことができます。しかし、これは必ず従わなければならないルールではありません。
補助コンストラクター
Set() を関数として呼び出して、この新しいオブジェクトを初期化します
// Set の補助コンストラクターを定義します。 type
function SetFromArray(arr) {
// Set() を関数として呼び出して、この新しいオブジェクトを初期化します
// arr の要素をパラメータとして渡します
Set.apply(this, arr) ;
}
//SetFromArray が Set インスタンスを作成できるようにプロトタイプを設定します
SetFromArray.prototype = Set.prototype;
JavaScript では不可能なことは何もありません。ただ予想外のことだけです