検索
ホームページウェブフロントエンドjsチュートリアルJS コンストラクターのオーバーロードとファクトリ メソッドに関する基本的な知識

の前に書かれています

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

のパラメーター リストを渡して初期化するのではなく、要素の配列を通じて 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 までご連絡ください。
深入解析Java工厂模式:区分和应用简单工厂、工厂方法和抽象工厂的不同深入解析Java工厂模式:区分和应用简单工厂、工厂方法和抽象工厂的不同Dec 28, 2023 pm 03:09 PM

Java工厂模式详解:理解简单工厂、工厂方法和抽象工厂的区别与应用场景引言在软件开发过程中,面对复杂的对象创建和初始化过程,我们往往需要使用工厂模式来解决这一问题。Java作为一种常用的面向对象编程语言,提供了多种工厂模式的实现方式。本文将详细介绍Java工厂模式的三种常见实现方式:简单工厂、工厂方法和抽象工厂,并且对它们的区别以及应用场景进行深入分析。一、

Java工厂模式解析:评估三种实现方式的优点、缺点和适用范围Java工厂模式解析:评估三种实现方式的优点、缺点和适用范围Dec 28, 2023 pm 06:32 PM

探究Java工厂模式:详解三种实现方式的优缺点及适用场景引言:在软件开发过程中,经常会遇到对象的创建和管理问题。为了解决这个问题,设计模式中的工厂模式应运而生。工厂模式是一种创建型设计模式,通过将对象的创建过程封装在工厂类中,来实现对象的创建与使用的分离。Java中的工厂模式有三种常见的实现方式:简单工厂模式、工厂方法模式和抽象工厂模式。本文将详解这三种实现

如何重载 golang 函数?如何重载 golang 函数?Apr 28, 2024 am 09:27 AM

Go中不支持传统函数重载,但可以通过以下技术模拟:多返回值:方法签名相同但返回类型不同的函数可实现重载。可变参数:使用...语法创建接收可变数量参数的函数,允许处理不同签名的方法调用。

golang函数重载与多态的区别?golang函数重载与多态的区别?Apr 30, 2024 am 09:30 AM

Go语言中不支持函数重载,因为它采用鸭子类型,根据实际类型确定值类型。而多态则通过接口类型和方法调用实现,不同类别的对象可以以相同方式响应。具体来说,Go语言中通过定义接口并实现这些方法,可以使不同类型的对象拥有相似行为,从而支持多态。

PHP函数是否支持函数重载和函数覆盖?PHP函数是否支持函数重载和函数覆盖?Apr 19, 2024 am 10:06 AM

PHP语言不支持函数重载和函数覆盖,原因是函数重载可能导致二义性。替代方案:使用命名空间隔离函数。设置参数缺省值。使用可变函数参数。

Go 语言中的多态和重载怎样实现?Go 语言中的多态和重载怎样实现?Jun 10, 2023 am 10:25 AM

Go语言作为一门静态类型语言,看似不能像动态语言那样实现多态和重载。但是,Go语言利用接口的特性实现了多态,而重载的实现则更加简单和精准。实现多态的方法Go语言中的接口可以在调用过程中实现多态,接口可以描述一个对象的行为,任何实现了接口所有方法的类型都可以称之为该接口类型的实例。通过这种方式,只需定义好接口类型,实现不同的具体类型,就可以实现多态。下面是一个

nosql与mysql的区别有哪些nosql与mysql的区别有哪些Jan 28, 2023 pm 04:51 PM

区别:1、MySQL是关系数据库,NoSQL是非关系型。2、MySQL严格模式限制并不容易扩展,NoSQL容易扩展。3、MySQL创建数据库前需详细的数据库模型,而在NoSQL不需要。4、MySQL提供了大量的报告工具,而nosql没有。5、与MySQL相比,NoSQL提供了更灵活的设计。6、MySQL中使用的标准语言是SQL,而NoSQL中缺乏标准的查询语言。

php有没有方法重载?如何实现?php有没有方法重载?如何实现?Mar 28, 2023 pm 01:54 PM

PHP是一种非常流行的服务器端脚本语言,用于开发Web应用程序。然而,对于一些初学者来说,理解PHP的一些概念可能会带来一些困难。本文将探讨PHP中方法的重载的概念。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境