ホームページ  >  記事  >  ウェブフロントエンド  >  JS コンストラクターのオーバーロードとファクトリ メソッドに関する基本的な知識

JS コンストラクターのオーバーロードとファクトリ メソッドに関する基本的な知識

WBOY
WBOYオリジナル
2016-05-16 17:38:15834ブラウズ

の前に書かれています

複数の方法でオブジェクトを初期化したい場合があります。たとえば、コンストラクター

のパラメーター リストを渡して初期化するのではなく、要素の配列を通じて 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 では不可能なことは何もありません。ただ予想外のことだけです

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。