ホームページ ウェブフロントエンド jsチュートリアル JavaScript オブジェクト指向デザイン 2 コンストラクター pattern_js オブジェクト指向

JavaScript オブジェクト指向デザイン 2 コンストラクター pattern_js オブジェクト指向

May 16, 2016 pm 05:58 PM
コンストラクタ オブジェクト指向

コンストラクター パターンを使用してファクトリ パターンを書き換えます。

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

関数 従業員(名前、年齢、職業) {
this.name = 名前;
this.job = ジョブ;
alert(this.name); 🎜>} ;
}
var Jim = new Employee("jim", 22, "Software Engineer");
var Sun = new Employee("Sun", 24, "Doctor"); 🎜>Jim .sayName();
Sun.sayName();


上記のコードでは、Employee 関数が CreateEmployee 関数と置き換えられています。
なし 表示された作成オブジェクト
は、return ステートメント
を使用せずに、プロパティとメソッドをこのオブジェクト
に直接割り当てます。 Employee クラスの新しいインスタンスを作成するには、 new 演算子を使用する必要があります。これには実際には 4 つのステップが含まれます:
新しいオブジェクトを作成します
コンストラクターのスコープを新しいオブジェクトに割り当てます
コンストラクター内のコードを実行します
新しいオブジェクトを返します
最後に、Jim と Sun上記のコードでは、2 つの異なる Employee 値を保存します。両方のインスタンスには、Employee を指すコンストラクター属性があります。次のテストを実行できます




コードをコピーします。
コードは次のとおりです: alert(Jim instanceof Employee) //true alert(Sun instanceof Employee);//true
これら 2 つのオブジェクトは同時にオブジェクト型であり、次のコードを通じて検出できます。



コードをコピーします
コードは次のとおりです。 alert(Jim instanceof Object) // true alert(Suninstanceof Object);//true
カスタム コンストラクターを作成するということは、将来、そのインスタンスを特定の型としてマークできることを意味し、これはコンストラクターでもあります。パターンは工場出荷時のパターンよりも優れています。
以下では、コンストラクターについて詳しく説明します。
コンストラクターを関数として扱います。
コンストラクターと他の関数の唯一の違いは、それらを呼び出す方法です。ただし、コンストラクターも関数であり、コンストラクターを定義するための特別な構文はありません。実際、どの関数も new 経由でのみ呼び出すことができ、その場合はコンストラクターとして使用できます。たとえば、上記の new メソッドを使用して Employee を呼び出すだけでなく、次の方法でも呼び出すことができます。




コードをコピー
コードは次のとおりです: //Call Employee("通常の関数として" Sun", 28, "SoftWare Engineer") //ウィンドウに追加 window.sayName();//Sun




コードをコピーします
コンストラクターの問題
主な問題コンストラクターを使用するということは、上記の 2 つのオブジェクトの SayName メソッドが実際には異なる関数のインスタンスであることを意味します。これは、次のメソッドで証明できます。 //false
ただし、同じタスクを完了する 2 つの Function インスタンスを作成するため、上記の関数を次のように書き換えます



コードをコピー


コードは次のとおりです。 functionsayName() {
alert(this.name);
これは次の問題を解決します。 2 つの関数 同じ問題ですが、また新たな問題が発生します。グローバル スコープで定義されたこの関数は、実際には特定のオブジェクトによってのみ参照できます。最も恐ろしい問題は、そのオブジェクトに多数のメソッドを定義する必要がある場合です。多くのグローバル関数を定義するため、このカスタム参照型にはカプセル化がまったくありません。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java で Jackson を使用する @JsonIdentityInfo アノテーションの重要性は何ですか? Java で Jackson を使用する @JsonIdentityInfo アノテーションの重要性は何ですか? Sep 23, 2023 am 09:37 AM

@JsonIdentityInfo アノテーションは、Jackson ライブラリ内でオブジェクトに親子関係がある場合に使用されます。 @JsonIdentityInfo アノテーションは、シリアル化および逆シリアル化中にオブジェクトの ID を示すために使用されます。 ObjectIdGenerators.PropertyGenerator は、使用されるオブジェクト識別子が POJO プロパティから取得される状況を表すために使用される抽象プレースホルダー クラスです。構文@Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,PARAMETER})@Retention(value=RUNTIME)public

Go でオブジェクト指向プログラミングを探索する Go でオブジェクト指向プログラミングを探索する Apr 04, 2024 am 10:39 AM

Go 言語は、型定義とメソッドの関連付けを通じてオブジェクト指向プログラミングをサポートします。従来の継承はサポートされていませんが、合成を通じて実装されます。インターフェイスは型間の一貫性を提供し、抽象メソッドを定義できるようにします。実際の事例では、顧客操作の作成、取得、更新、削除など、OOP を使用して顧客情報を管理する方法を示します。

PHP の高度な機能: オブジェクト指向プログラミングのベスト プラクティス PHP の高度な機能: オブジェクト指向プログラミングのベスト プラクティス Jun 05, 2024 pm 09:39 PM

PHP における OOP のベスト プラクティスには、命名規則、インターフェイスと抽象クラス、継承とポリモーフィズム、依存関係の注入が含まれます。実際のケースには、ウェアハウス モードを使用してデータを管理する場合や、ストラテジー モードを使用して並べ替えを実装する場合などがあります。

PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 Aug 14, 2023 pm 05:25 PM

PHP オブジェクト指向プログラミングにおけるフライウェイト パターンの分析 オブジェクト指向プログラミングでは、デザイン パターンは一般的に使用されるソフトウェア設計手法であり、コードの可読性、保守性、スケーラビリティを向上させることができます。フライウェイト パターンは、オブジェクトを共有することでメモリのオーバーヘッドを削減する設計パターンの 1 つです。この記事では、PHP でフライウェイト モードを使用してプログラムのパフォーマンスを向上させる方法を説明します。フライ級モードとは何ですか?フライウェイト パターンは、異なるオブジェクト間で同じオブジェクトを共有することを目的とした構造設計パターンです。

Golang にはクラスのようなオブジェクト指向機能はありますか? Golang にはクラスのようなオブジェクト指向機能はありますか? Mar 19, 2024 pm 02:51 PM

Golang (Go 言語) には伝統的な意味でのクラスの概念はありませんが、構造体と呼ばれるデータ型が提供され、これによってクラスと同様のオブジェクト指向機能を実現できます。この記事では、構造体を使用してオブジェクト指向機能を実装する方法を説明し、具体的なコード例を示します。構造体の定義と使用法 まず、構造体の定義と使用法を見てみましょう。 Golang では、type キーワードを通じて構造を定義し、必要に応じて使用できます。構造には属性を含めることができます

Go言語のオブジェクト指向機能の分析 Go言語のオブジェクト指向機能の分析 Apr 04, 2024 am 11:18 AM

Go 言語は、オブジェクト指向プログラミング、構造体によるオブジェクトの定義、ポインター レシーバーを使用したメソッドの定義、インターフェイスによるポリモーフィズムの実装をサポートしています。オブジェクト指向の機能は、Go 言語でのコードの再利用、保守性、カプセル化を提供しますが、クラスや継承、メソッド シグネチャ キャストといった従来の概念が欠如しているなどの制限もあります。

C# 開発経験の共有: オブジェクト指向プログラミングと設計原則 C# 開発経験の共有: オブジェクト指向プログラミングと設計原則 Nov 22, 2023 am 08:18 AM

C# (CSharp) は、ソフトウェア開発の分野で広く使用されている強力で人気のあるオブジェクト指向プログラミング言語です。 C# 開発プロセスでは、オブジェクト指向プログラミング (OOP) の基本概念と設計原則を理解することが非常に重要です。オブジェクト指向プログラミングは、現実世界の物事をオブジェクトに抽象化し、オブジェクト間の対話を通じてシステム機能を実装するプログラミング パラダイムです。 C# では、クラスはオブジェクト指向プログラミングの基本的な構成要素であり、オブジェクトのプロパティと動作を定義するために使用されます。 C# を開発する場合、いくつかの重要な設計原則があります。

Python のコンストラクター Python のコンストラクター Sep 02, 2023 pm 04:29 PM

Python では、すべてのクラスにコンストラクターがあります。コンストラクターは、クラス内で指定される特別なメソッドです。コンストラクター/イニシャライザーは、クラスの新しいオブジェクトが作成されるときに自動的に呼び出されます。オブジェクトが初期化されるとき、コンストラクターはクラス内のデータ メンバーに値を割り当てます。コンストラクターを明示的に定義する必要はありません。ただし、コンストラクターを作成するには、次の規則に従う必要があります。クラスの場合、コンストラクターは 1 つだけ持つことができます。コンストラクター名は __init__ である必要があります。コンストラクターは、インスタンス プロパティを使用して定義する必要があります (最初の引数として self キーワードを指定するだけです)。 None 以外の値を返すことはできません。構文 classA():def__init__(self):pass 例 次の例を考えてみましょう。

See all articles