JavaScript ファクトリ パターン、プロトタイプ パターン、コンストラクタ パターン
1. パターンとは何ですか? パターンは再利用可能な解決策ですが、アンチパターンは特定の問題に対する不適切な解決策です。
js アンチパターンの一般的な例
① 関数の代わりに文字列を setTimeout と setInterval に渡すと、eval() の内部使用がトリガーされます。
②グローバルコンテキストで大量の変数を定義するとグローバル名前空間が汚染される
③オブジェクトクラスのプロトタイプを変更する
④インライン形式でjsを使用すると、HTMLファイルに埋め込まれたjsコードを外部の単体テストツールに含めることができません。
⑤document.write を悪用します。ページが読み込まれた後に document.write が実行されると、現在のページが書き換えられます。代わりに document.creatElement を使用できる場合は、document.write を使用しないようにしてください。
2. デザインパターンの分類
(1).ファクトリパターン(単純なものと複雑なもの)
簡単に言うと、カプセル化されたコードです。その役割については、オブジェクトを使用することが分かりやすいです。いくつかのオブジェクトをカプセル化し、多くのスペースを占めるいくつかの反復コードをカプセル化するための指向性メソッド。実装方法は非常に簡単で、関数内でオブジェクトを作成し、そのオブジェクトにプロパティやメソッドを代入し、そのオブジェクトを返すだけです。この方法 は、インスタンス化されたオブジェクトの多数の重複の問題 を解決するためのものです。
function creatper(name,age){ var per=new Object(); //原料 //加工 per.name=name; per.age=age; per.sayHi=function(){ console.log(per.name+'已经有'+per.age+"岁"); } return per; //出厂 } var test1=creatper('lili',22); var test2 =creatper('mike',25);//第二个实例 test1.sayHi(); test2.sayHi(); console.log(test1.name);
ファクトリモードを使用すると、この関数ごとに繰り返し呼び出して、さまざまな属性値を持つオブジェクトを生成できることがわかります。これはまさに工場のように、大量生産され、原材料、加工、配送がすべて非常に明確です。 。ただし、日付や配列などとは異なり、オブジェクトはすべてオブジェクトであるため、ファクトリ パターンではオブジェクトの種類を識別できないことがわかります。
ファクトリーパターンをいつ使用するか?
ファクトリ パターンは主に次のシナリオで使用されます:
① オブジェクトまたはコンポーネントに高度な複雑性が含まれる場合
② 異なる環境に応じてオブジェクトの異なるインスタンスを簡単に生成する必要がある場合
③ 共有する多数の小さなオブジェクトを扱う場合同じプロパティまたはコンポーネント時間
(2)。Constructor (コンストラクター) パターン
Constructor (コンストラクター メソッド) を ECMAScript で使用して、特定のオブジェクトを作成できます。 このモードは、上記のファクトリ モードがオブジェクト インスタンスを識別できないという問題を解決できます。
function Student(name,age,classa){//构造函数模式 this.name = name; this.age = age; this.classa = classa; this.run = function () { console.log(this.name+ this.age+ "岁上"+this.classa +"!"); } } var Benz = new Student('Lili',22,'初三'); var BMW = new Student("Mike",25,"初一"); console.log(Benz instanceof Student); //很清晰的识别他从属于Student Benz.run(); BMW.run();
このコードからは、ファクトリー モードでの異なる関数名を除いて、a. コンストラクター メソッドが明示的にオブジェクト (new Object()) を作成しないこと、b. プロパティとメソッドを直接割り当てることがわかります。このオブジェクトには return ステートメントがありません。オブジェクトを認識する能力 (これは、コンストラクター パターンがファクトリー パターンよりも優れている点です) 。注: コンストラクター メソッドの仕様: 1. 関数名とインスタンス化コンストラクター名は同じで大文字です。 2. コンストラクターを通じてオブジェクトを作成するには、new 演算子を使用する必要があります。
オブジェクトはコンストラクターを通じて作成できるので、このオブジェクトはどこから来て、どこで new Object() が実行されるのでしょうか?実行プロセスは次のとおりです。
1. コンストラクターが使用され、 newconstructor() がバックグラウンドで実行されます。
2. コンストラクターのスコープを新しいオブジェクトに与えます。 Object() 作成されたオブジェクト)、関数本体の this は new Object() によって作成されたオブジェクトを表します。
3. コンストラクターでコードを実行します。
4. 新しいオブジェクトを返します (バックグラウンドで直接返します)。
(3). プロトタイプ パターン
js は、作成されたすべての関数がプロトタイプ属性を持つことを規定しており、この属性はオブジェクトを指すポインターであり、このオブジェクトの目的は特定の型のすべてのインスタンスによって共有されることです。プロパティとメソッドは、プロトタイプ オブジェクトを使用して、すべてのインスタンス オブジェクトにこれらのプロパティとメソッドを含めることができます。
function Per(){} Per.prototype.name='小米'; Per.prototype.age=22; Per.prototype.course=['php','javascript','java','C#']; Per.prototype.say=function(){ console.log(this.name+"有"+this.age+"岁,学习了"+this.course+"等课程。"); } var per1=new Per(); var per2=new Per(); per1.name='小林'; per1.course.push('Html5'); per1.say(); per2.say(); per2.course.pop();
プロトタイプパターンの欠点については、初期化パラメータを渡すコンストラクターを省略していることも明らかだと思いますが、デフォルトではすべてのインスタンスが同じ属性値を取得します。後で変更することはできますが、これは最大の問題ではありません。共有の性質により、一方のインスタンスが参照を変更し、もう一方のインスタンスも変更されます。属性を変更します。したがって、プロトタイプ モードは通常、単独で使用されません。
(4). プロトタイプを持つコンストラクター = プロトタイプ パターン + コンストラクター パターン
function Per(name,age,course){ this.name=name; this.age=age; this.course=course; } Per.prototype.say=function(){ console.log(this.name+"有"+this.age+"岁,学习了"+this.course+"等课程。"); } var per1=new Per('Make',22,['C#','java','PHP','Javascript']); var per2=new Per('小高',21,['oracle','mysql','nodejs','html5']); per1.say();//Make有22岁,学习了C#,java,PHP,Javascript等课程。 per2.say();//小高有21岁,学习了oracle,mysql,nodejs,html5等课程。 per1.course.pop(); per1.say();//Make有22岁,学习了C#,java,PHP等课程。 per2.say();//小高有21岁,学习了oracle,mysql,nodejs,html5等课程。
上記の分析: コンストラクターはインスタンスの属性を定義するために使用され、プロトタイプ パターンはメソッドと一部の共有属性を定義するために使用されます。各インスタンスは独自の属性を持ちますが、同時にメソッドを共有し、メモリを最大限に節約します。さらに、このモードは初期パラメータの受け渡しもサポートしています。最も広く使用されています。
関連する推奨事項:
以上がJavaScript ファクトリ パターン、プロトタイプ パターン、コンストラクタ パターンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

株式分析に必須のツール: PHP および JS でローソク足チャートを描画する手順を学びます。特定のコード例が必要です。インターネットとテクノロジーの急速な発展に伴い、株式取引は多くの投資家にとって重要な方法の 1 つになりました。株価分析は投資家の意思決定の重要な部分であり、ローソク足チャートはテクニカル分析で広く使用されています。 PHP と JS を使用してローソク足チャートを描画する方法を学ぶと、投資家がより適切な意思決定を行うのに役立つ、より直感的な情報が得られます。ローソク足チャートとは、株価をローソク足の形で表示するテクニカルチャートです。株価を示しています

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

インターネット金融の急速な発展に伴い、株式投資を選択する人がますます増えています。株式取引では、ローソク足チャートは一般的に使用されるテクニカル分析手法であり、株価の変化傾向を示し、投資家がより正確な意思決定を行うのに役立ちます。この記事では、PHP と JS の開発スキルを紹介し、株価ローソク足チャートの描画方法を読者に理解してもらい、具体的なコード例を示します。 1. 株のローソク足チャートを理解する 株のローソク足チャートの描き方を紹介する前に、まずローソク足チャートとは何かを理解する必要があります。ローソク足チャートは日本人が開発した

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。
