ホームページ ウェブフロントエンド jsチュートリアル JavaScript_javascript スキルのクラスの詳細な紹介

JavaScript_javascript スキルのクラスの詳細な紹介

May 16, 2016 pm 04:23 PM
class javascript 親切

JavaScript では、クラスを使用してオブジェクト指向プログラミングを実装できます。ただし、JavaScript のクラスは Java のクラスとは異なり、対応する定義や使用方法も異なります。

JavaScript でのクラスの定義

JavaScript では、同じプロトタイプ オブジェクト (プロトタイプ) から派生したすべてのオブジェクトがクラスを形成します。つまり、JavaScript のクラスは、2 つのオブジェクトが同じプロトタイプを持つ場合、それらはオブジェクトのコレクションに属します。 JavaScript のクラスにはクラス名さえ必要ありません。次のコードを例として挙げます:

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

var p = {x:42};
var a = Object.create(p);
var b = Object.create(p);
console.log(a === b);//false
console.log(Object.getPrototypeOf(a) === Object.getPrototypeOf(b));//true

上記の例では、オブジェクト a と b は同じプロトタイプ オブジェクト (プロトタイプ) p を持っているため、a と b は同じクラスに属し (ただし、このクラスにはクラス名がありません)、プロトタイプから値を継承します。オブジェクト p を 42 属性 x として扱います。

この例からもわかるように、プロトタイプオブジェクトはテンプレートとして機能し、そこから複数のオブジェクトを派生/作成することができます。その状態は、Java 言語のクラスコードと同じです。 . 定義の核心。次の例のプロトタイプ オブジェクトは、クラス コードに似ています:


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

var p = {
INCREMENT_BY : 1,
インクリメント : function(x){
return x this.INCREMENT_BY;
}
}
var a = Object.create(p);
var b = Object.create(p);
console.log(a.increment(7));//8
console.log(b.increment(9));//10


上記の例では、プロトタイプ オブジェクト p は、値 1 のプロパティ (INCREMENT_BY) と、increment という名前の関数を定義します。オブジェクト a と b は、テンプレート p から INCREMENT_BY 関数と increment 関数を取得します。オブジェクト a または b のインクリメント関数を呼び出すと、JavaScript は a または b の INCREMENT_BY 値 (this.INCREMENT_BY) を取得しようとします。INCREMENT_BY は p から取得され、その値はすべて 1 (テンプレートから取得されたもの) であるためです。 Java の静的変数と同様に、すべて同じ変数であるため、上記の例では、INCREMENT_BY 変数に名前を付けるときにすべて大文字が使用されています。

上記の例では、テンプレート p から作成されたすべてのオブジェクト (同じクラスに属するオブジェクト) は、まったく同じプロパティと動作を持ちます。しかし実際には、同じクラスの異なるオブジェクトの場合、クラスによって定義された属性/動作に加えて、いくつかの固有の属性と動作を持つことがよくあります。したがって、プロトタイプ テンプレートをクラスとして使用する必要がある場合は、そこから派生した各オブジェクトをカスタマイズする必要があります。


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

var p = {
INCREMENT_BY : 1,
インクリメント : function(x){
return x this.INCREMENT_BY this.custom_increment_by;
}
}
var a = Object.create(p);
var b = Object.create(p);
a.custom_increment_by = 0;
b.custom_increment_by = 1;
console.log(a.increment(7));//8
console.log(b.increment(9));//11


この例では、テンプレート p から作成されたオブジェクト a と b は、値が必ずしも互いに等しいとは限らない変数custom_increment_byを持ち、それらのincrement()関数の最終結果はcustom_increment_byの値に関連しています。一般に、新しいオブジェクトのカスタマイズは、次のような統一関数で行われることがよくあります:


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

var p = {
INCREMENT_BY : 1,
インクリメント : function(x){
return x this.INCREMENT_BY this.custom_increment_by;
}
}
function getIncrementalClassObject(customIncrementByValue){
var incrementalObj = Object.create(p);
incrementalObj.custom_increment_by =customIncrementByValue;
増分オブジェクトを返します;
}
var a = getIncrementalClassObject(0);
var b = getIncrementalClassObject(1);
console.log(a.increment(7));//8
console.log(b.increment(9));//11


このように、クラスの定義は、プロトタイプ オブジェクト p と getIncrementalClassObject() 関数を通じて完了します。getIncrementalClassObject() 関数を呼び出すことで、プロトタイプ オブジェクトが p であるオブジェクトを取得でき、これらの新しいオブジェクトは呼び出し中に作成できます。 getIncrementalClassObject() 関数をいくつかカスタマイズします。現時点では、この定義されたクラスにはクラス名がないことに注意してください。説明の便宜上、これを Incremental と呼びます。

getIncrementalClassObject() 関数で行われた作業を振り返ると、Incremental クラスから新しいオブジェクトを作成するプロセスが次のとおりであることがわかります。

1. 空のオブジェクトを作成し、そのプロトタイプ オブジェクトを p として定義します。
2. さまざまなパラメータ値に従って、この新しく作成された空のオブジェクトをカスタマイズします。
3. カスタマイズされた新しいオブジェクトを返します。

JavaScript では、Constructor (コンストラクター) を使用することで、クラスの定義と新しいオブジェクトの作成をすばやく完了できます。

JavaScript のコンストラクター

上記の Incremental クラスの例からわかるように、新しいクラスを定義するには、コードの 2 つの部分が必要です。1 つはテンプレートとしてプロトタイプ オブジェクトを作成し、新しいオブジェクトを作成するときに新しいオブジェクトを初期化するカスタム関数を作成することです。クラスは、新しいオブジェクトのプロトタイプ オブジェクトの指定、新しいオブジェクトのカスタマイズ/初期化、新しいオブジェクトを返すという 3 つのプロセスを経ます。 JavaScript では、これはすべて Constructor (コンストラクター) を通じて実行できます。

JavaScript のコンストラクターは、新しいオブジェクトの初期化を担当する関数であり、このコンストラクター関数のプロトタイプは、新しいオブジェクトを作成するためのテンプレートとして使用されます。上記の Incremental クラスを例として、Constructor を使用してコードを書き直すと、次のようになります:


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

関数 Incremental(customIncrementByValue){
This.custom_increment_by =customIncrementByValue;
}
Incremental.prototype = {
INCREMENT_BY : 1,
インクリメント : function(x){
return x this.INCREMENT_BY this.custom_increment_by;
}
}

var a = new Incremental(0);
var b = 新しい増分(1);
console.log(a.increment(7));//8
console.log(b.increment(9));//11

Constructor 関数を使用して new キーワードを通じて新しいオブジェクトを作成するプロセスは、実際には次の段階を経ます:

新しい空のオブジェクトを作成します。

1. このオブジェクトのプロトタイプオブジェクトをコンストラクター関数のプロトタイプ属性にポイントします。
2. このオブジェクトをパラメータとして使用して、コンストラクター関数を実行します。
3. これは、前の getIncrementalClassObject() 関数で行われたのと同じ作業です。

クラス名

コンストラクターを使用してオブジェクトを作成する場合、対応するオブジェクトにも「クラス名」があり、これは、instanceof 演算子の結果から確認できます。

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

console.log(Incremental のインスタンス);//true
console.log(b 増分インスタンス);//true

ただし、instanceof 演算子は、オブジェクトが Incremental コンストラクターによって作成されるかどうかを決定しません。instanceof 演算子は、オブジェクトのプロトタイプ オブジェクトが Incremental.prototype であるかどうかのみを決定します。同じプロトタイプを持つ 2 つのコンストラクターがある場合、instanceof 演算子は、オブジェクトの作成にどのコンストラクターが使用されたかを区別せずに一律に true を返します。
コードをコピー コードは次のとおりです:

function Incremental2(customIncrementByValue){
This.custom_increment_by =customIncrementByValue 3;
}
Incremental2.prototype = Incremental.prototype;
console.log(Incremental2 のインスタンス);//true
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 Dec 17, 2023 pm 02:54 PM

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

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

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

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

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

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

jQueryを使用して要素のクラス名を置換する jQueryを使用して要素のクラス名を置換する Feb 24, 2024 pm 11:03 PM

jQuery は、Web 開発で広く使用されている古典的な JavaScript ライブラリで、イベントの処理、DOM 要素の操作、Web ページ上でのアニメーションの実行などの操作を簡素化します。 jQueryを使っていると要素のクラス名を置き換える場面がよくありますが、この記事ではその実践的な方法と具体的なコード例を紹介します。 1.removeClass() メソッドと addClass() メソッドを使用する jQuery には、削除用の RemoveClass() メソッドが用意されています。

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

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

PHP クラスの使用法の詳細な説明: コードをより明確で読みやすくします。 PHP クラスの使用法の詳細な説明: コードをより明確で読みやすくします。 Mar 10, 2024 pm 12:03 PM

PHP コードを記述するとき、クラスを使用するのは非常に一般的な方法です。クラスを使用すると、関連する関数とデータを 1 つのユニットにカプセル化できるため、コードがより明確になり、読みやすく、保守しやすくなります。この記事では、PHPClass の使用法を詳しく紹介し、クラスを適用して実際のプロジェクトでコードを最適化する方法を読者がよりよく理解できるように、具体的なコード例を示します。 1. クラスの作成と使用 PHP では、キーワード class を使用してクラスを定義し、クラス内のプロパティとメソッドを定義できます。

C言語でクラスとは何を意味しますか C言語でクラスとは何を意味しますか Jan 03, 2024 am 10:18 AM

C言語では「クラス」はクラスを定義するためのキーワードです。

See all articles