ホームページ ウェブフロントエンド jsチュートリアル Javascript オブジェクト指向 (ステートメント)_js オブジェクト指向

Javascript オブジェクト指向 (ステートメント)_js オブジェクト指向

May 16, 2016 pm 06:28 PM
javascript オブジェクト指向

私の知識の少なさと知識の少なさから、『Javascript Advanced Programming』から内容の一部を抜粋しました。これらは私の読書メモとも言えます。 Javascriptのオブジェクト指向の仕組みは非常に重要であり、内容も非常に広範囲に及ぶため、ここでは章に分けて一つずつ紹介していきます。

オブジェクトを使用するには、まずそれを宣言する必要があります (もちろん、組み込みオブジェクトの場合は必要ありません)。 Javascript は常に私たちの脳細胞を大量に死なせます。この記事では主に Javascript クラスを宣言するいくつかの方法について説明します。

ファクトリー モード
ファクトリー モードは、多くの開発者が使用するモードかもしれません。簡単に言うと、このメソッドは最初に「基盤」を定義し、それをさまざまな関数の上に投げます (バインディング)。そしてプロパティ。次のコードは非常に見覚えがあるかもしれません:

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

var oCar = 新しいオブジェクト;
oCar.color = "red";
oCar.showColor = function() {
alert(this.color)
oCar.showColor ();


もちろん、クラスにパッケージ化されているため、再利用する必要があります (上記のメソッドは構文的には単なる変数です)。特定のオブジェクトを返すファクトリ関数を使用してカプセル化できます:

コードをコピー コードは次のとおりです:
function createCar() {
var oCar = 新しいオブジェクト;
oCar.showColor = function() {
alert(this.color) ;
}

return oCar;
}
oCar.showColor();


もちろん変更します, createCar 関数にいくつかのパラメーターを追加できます。これは非常にプロフェッショナルに見えます:


コードをコピー コードは次のとおりです: function createCar(sColor) {
var oCar = new Object;
oCar.showColor = function() {
alert(this.color) ) ;
}

return oCar;
}
oCar.showColor();


人々は非常に奥深いものを感じますが、時には自分自身を混乱させることもあります。長さを考慮しない場合は、外部で定義できます:



コードをコピー
コードは次のとおりです: function showColor () { alert(this.color);
function createCar(sColor) {
var oCar = new Object; = sColor;
oCar.showColor = showColor;

を返す;
oCar();


これも実行してください 利点の 1 つは、oCar.showColor を繰り返し定義する必要がないことです (誰もが効率的なプログラムを好みます)。


コンストラクター パターン

コンストラクターは実際にはファクトリ メソッドに似ています。コード量の観点から見ると、コンストラクター内でオブジェクトが作成されないことを意味します。



コードをコピーします

コードは次のとおりです。

function Car(sColor) { this.color = sColor; this.showColor = function () { alert(this.color); } oCar = new Car("red"); >oCar.showColor();
実際、この暗黙的なオブジェクトは new 後にインスタンス化されています。デフォルトでは、コンストラクターは this の値を返します (したがって return を使用する必要はありません)。ただし、コンストラクター パターンは、ファクトリ パターンと同様にメソッドを繰り返し定義する可能性があります。この点については、前述のファクトリ パターンを参照することで回避できます (常に不完全に見えます)。


プロトタイプ モード

定義の繰り返しの問題にはもう飽きたので、完璧な解決策はあるのでしょうか?もちろんあります。プロトタイプ手法を使用すると、このような問題を効果的に回避できます。



コードをコピー


コードは次のとおりです。
function Car() {}
Car.prototype .color = new Array("red", "green", "blue");
Car.prototype.showColor = function() { alert(this.color); 🎜>oCar = 新しい Car(); oCar.showColor();
ただし、このモードを使用するときに注意する必要があるのは、クラス内のすべてのプロパティとメソッドが共有される (実際にはポインター) ということです。これは、2 つの変数がインスタンス化されますが、一方の値が変更されると、他方も変更されることを意味します。

注: この段落の内容は変更されました。詳細については、こことここを参照してください (提案してくれた Brother Fish に感謝します)。

混合モード
上記で学んだ方法を組み合わせると、プロトタイプ モードの問題を簡単に解決でき、よりプロフェッショナルなプログラムのように見えます。 .メンバー。
コードをコピーします コードは次のとおりです。

function Car(sColor) {
this.color = sColor;
}
Car.prototype.showColor = function() {
alert(this.color);
}
oCar = new Car("red");
oCar.showColor();

上記のメソッドで宣言されたクラスの場合、showColor メソッドはプロトタイプ (インスタンスは 1 つだけ作成されます) であり、その他はコンストラクターです (干渉しません)お互いに)。

動的プロトタイピング モード
独自のメソッドを外部に保持することは、あまり環境に優しいとは言えません。次の方法は非常に「グリーン」です:
コードをコピーします コードは次のとおりです。
function Car() {
this.color = "red"; 🎜> if (typeof Car._initialized == "未定義") {
Car.prototype.showColor = function() {
alert(this.color);
Car._initialized = true;
}
}
oCar = new Car("red");


このメソッドは上記と同じ効果があります。ブレンディング モード。つまり、プロパティはコンストラクター内で定義されますが、メソッドはプロトタイプ パターンを使用します。唯一の違いは、オブジェクト メソッドが割り当てられる場所です。

Mixed Factory Pattern

Mixed Factory Pattern は、関数自体がオブジェクトであるため、構築パターンと混合パターンの統合として考えることができ、関数自体は new を使用してインスタンス化できます (どうぞこのように説明させてください)。


コードをコピー
コードは次のとおりです。 function Car() { var oCar = 新しいオブジェクト;
oCar.color = "red";
oCar.showColor = function() {
alert(this.color)

return oCar;
}
oCar = new Car();
oCar.showColor();


ただし、上記のファクトリー パターンと同様に、このメソッド定義の使用は避けることをお勧めします。 、繰り返しの宣言質問があります。

どのモードを選択しますか?
実際、上記の説明では、混合モードと動的プロトタイプ モードが通常使用されます (私は個人的には動的プロトタイプ モードに投票します)。ただし、不必要な無駄が生じるため、Factory パターンと Construction Pattern (または 2 つの組み合わせ) を単独で使用しないでください。

テストコード





[Ctrl A
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

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

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

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

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

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

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

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

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

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

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

PHP オブジェクト指向プログラミングの深い理解: オブジェクト指向プログラミングのデバッグ手法 PHP オブジェクト指向プログラミングの深い理解: オブジェクト指向プログラミングのデバッグ手法 Jun 05, 2024 pm 08:50 PM

オブジェクトのステータスの追跡、ブレークポイントの設定、例外の追跡を習得し、xdebug 拡張機能を利用することで、PHP オブジェクト指向プログラミング コードを効果的にデバッグできます。 1. オブジェクトのステータスを追跡する: var_dump() と print_r() を使用して、オブジェクトの属性とメソッドの値を表示します。 2. ブレークポイントの設定: 開発環境にブレークポイントを設定すると、実行がブレークポイントに到達するとデバッガが一時停止するため、オブジェクトのステータスを簡単に確認できます。 3. 例外のトレース: try-catch ブロックと getTraceAsString() を使用して、例外発生時のスタック トレースとメッセージを取得します。 4. デバッガーを使用します。xdebug_var_dump() 関数は、コードの実行中に変数の内容を検査できます。

JavaScript と WebSocket: 効率的なリアルタイム検索エンジンの構築 JavaScript と WebSocket: 効率的なリアルタイム検索エンジンの構築 Dec 17, 2023 pm 10:13 PM

JavaScript と WebSocket: 効率的なリアルタイム検索エンジンの構築 はじめに: インターネットの発展に伴い、ユーザーのリアルタイム検索エンジンに対する要求はますます高くなっています。従来の検索エンジンで検索を行う場合、ユーザーは検索ボタンをクリックする必要があり、リアルタイムの検索結果を求めるユーザーのニーズに応えることができませんでした。そのため、JavaScript と WebSocket テクノロジを使用してリアルタイム検索エンジンを実装することが注目されています。この記事ではJavaScriptの使い方を詳しく紹介します。

See all articles