良いプログラマは、フロントラインは、特にこの特性を継承し、C#とJava言語で、オブジェクト指向のクラスを達成するための方法である、JavaScriptのオブジェクト指向技術のシミュレーションを学んで共有し、道のクラス継承は強力示しただけでなく、習得が容易。言語は、純粋なオブジェクト指向のJavaScriptが、オブジェクトベースの言語ではありません関数のプロトタイプを継承するオブジェクトは、多くの初心者がちょうどあまり理解し始めるが、これはJavaScript関数のプロトタイプとして実装されている場合、相続の形態であり、オブジェクト指向技術だけでなく、実現可能でなく、オブジェクト指向技術のための動的継承機能を提供し、この記事では、JavaScriptのオブジェクト指向技術に焦点を当てています。
プロトタイプオブジェクトのI.概要
各JavaScriptオブジェクトは、プロトタイプオブジェクトを持っているが、オブジェクトは、プロトタイプオブジェクトのすべてのプロパティを継承します。オブジェクトのプロトタイプは、オブジェクトのコンストラクタ定義によって作成されます。すべてのJavaScript関数は、プロパティと呼ばれるプロトタイプ、プロトタイプオブジェクトへのプロパティ参照を持って、オブジェクト属性を初期化するコンストラクタがプロトタイプオブジェクトオブジェクトを作成するために参照するだけのプロトタイプ。JavaScriptがClassクラスの概念を定義していない、それはつまり、プロトタイプオブジェクトは、共有のクラスのインスタンスを提供し、各クラスのメンバーは、プロトタイプオブジェクトから同じプロパティを継承するクラスのコンストラクタを定義し、クラス属性を初期化しますメモリを節約するプロパティとメソッド、。
JavaScriptが検索されない場合は、最初のを見て、オブジェクト、オブジェクトのプロパティを読み取るとき、唯一特に方法のために、それはプロトタイプオブジェクトを保存するのが最善である、プロトタイプオブジェクトの属性(またはメソッド)を見つけ、そうします共有し、メモリを節約する目的、およびプロトタイプオブジェクトにも、強力なを持っている、それはコンストラクタ内のオブジェクトのいくつかの例であれば、コンストラクタのプロトタイプオブジェクトは、プロパティとメソッドの増加を与えるためには、例を判明しましたオブジェクトインスタンスのこれらの追加のプロパティとメソッドを継承します。
第二に、オブジェクト属性、オブジェクトのメソッド、クラス属性、ベースの方法
各オブジェクトは、オブジェクトが5インスタンス化される場合、プロパティおよびインスタンスメソッドインスタンスの独自の別のコピーを有し、そのインスタンスの属性とインスタンスメソッド5つのオブジェクトのコピーが存在することになります。このキーワードは、そのオブジェクトのインスタンスを指し、それがインスタンスメソッドを操作している人、である、この参照;このオブジェクトを参照するために、このインスタンスをオブジェクト・インスタンスのプロパティを訪問します。
クラスメソッドとクラスのプロパティは、クラスメソッド呼び出しの唯一のコピーは、例えば、クラスのときに名前を参照する必要がある。Date.setHours();
以下の実施例は、プロパティ、インスタンスメソッド、クラスプロパティ、クラスのメソッドを表示するプログラムを使用し
モバイル機能(種類、ブランド){
this.kind =種類; //このようなGSM / CDMAなどの携帯電話の種類の定義
this.brand =ブランド; //が電話のブランドを定義し、次いで、コンストラクタで表されるこのキーワードはインスタンス化オブジェクトは
}
/ // 第二のステップは、クラスインスタンスメソッドの定義またはプロトタイプオブジェクトのコンストラクタにその他のプロパティを定義することで 、このクラスのすべてのインスタンスオブジェクト定義を継承の任意の属性を。 / //ここで電話番号をダイヤル単に返す Mobile.prototype.dialは=関数(PHONENO){ PHONENOを返す; }; /
// 第3のステップは、構造として、クラスメソッド、定数やその他の必要なクラス属性のクラス定義を定義することですプロパティ関数自体ではなく、コンストラクタ 彼らはそれらの動作にのみ実際のパラメータをしているので、プロトタイプオブジェクトのプロパティには、注意、クラスメソッドは、キーワードに、これを使用しません。 / //電源オフ方法 Mobile.turnOn =関数(){ "モバイルがオンになっているの電力の"リターン; } Mobile.turnOff =関数(){
「携帯の電源がオフになっている」を返します。
}
//クラス属性なので、彼らは読み取り専用されていない事実に一定の配慮として使用することができます
Mobile.screenColor = 64K; //クラスの64K色の画面カラー画面の携帯電話のすべての前提と
3つのサブクラス
JavaScriptのサポートをサブクラスは、ただ、それはプロトタイプオブジェクトスーパークラスのインスタンスのサブクラスを取得しているので、クラスの技術の後に存在するであろうこのような問題に、注意すべきで、スーパークラスのクラスのプロトタイプオブジェクトをインスタンス化することができるハンドルそれは、コンストラクタの正しさを保証するために、あなたは次のようにプログラム例は、サブクラス何を再指定する必要があり、JavaScriptの自体が提供するconstructorプロパティを抹消:
/ サブクラス /
//以下は、インテリジェントなサブクラスのコンストラクタです電話
機能スマートフォン(OS)
{
this.os = OS。
}
//モバイルそのプロトタイプとして、我々は、オブジェクトます
//これは、新しいクラスのインスタンスがSmartPhone.prototypeを継承することを意味し、
後者によって継承// Mobile.prototype
のObject.prototypeで順番には//Mobile.prototypeから継承されました
=新しい新しいモバイルSmartPhone.prototype(GSM、ノキア);
//次のサブクラス、電子メールに新しいメソッドを追加し、専用のメールアドレスを返す
SmartPhone.prototype.sendEmail =関数(EMAILADDRESS)は{
this.emailAddressを返す
}
//少し欠陥上記サブクラスのメソッド、我々は明らかにSmartPhone.prototypeを入れているので、我々が作成したオブジェクトに設定されているので、我々はカバーJS提供
//プロトタイプオブジェクトを、そしてコンストラクタのプロパティ与え破棄。プロパティの参照は、オブジェクトのコンストラクタを作成することです。しかし、スマートフォンは、そのターゲットに統合
//親クラスのコンストラクタを、それが明示的にプロパティを設定し、このプロパティを所有していないこの問題を解決することができます
SmartPhone.prototype.constructor =スマートフォン;
VARのobjSmartPhone =新新スマートフォン(); //インスタンス化サブクラス