JavaScriptは、オブジェクト指向プログラミングを使用する多くの方法を提供します。 これを行うには、次の手法を使用します。
- 新しい演算子
- リテラル表記
- オブジェクトコンストラクター
- プロトタイプ
- 連想配列
新しい演算子を使用します
これはおそらく、オブジェクトを作成する最も簡単な方法です。 オブジェクト名を作成し、それを新しいJavascriptオブジェクトと同等にするだけです。
//オブジェクトを作成します
var MyObject = new Object();
//変数
MyObject.id = 5; //数値プロパティ
MyObject.name = "Sample"; //文字列プロパティ
//関数
MyObject.getName = function()
{
this.nameを返します。
}
この方法の欠点は、新しく作成されたオブジェクトを1つしか操作できないことです。
//オブジェクトを使用します
アラート(MyObject.getName());
リテラル表記
リテラル表記は、新しいオブジェクトを定義するためのやや珍しい方法ですが、理解するのに十分簡単です。 リテラル表記はJavascript 1.3で機能します。
//リテラル表記を使用してオブジェクトを作成します
Myobject = {
id:1、
名前:「サンプル」、
boolval:true、
getName:関数()
{
this.nameを返します。
}
}
ご覧のとおり、これは非常に簡単です。
オブジェクト= {
識別子:値;
...
}
これを使用するのは簡単です。
アラート(MyObject.getName());
オブジェクトコンストラクター
オブジェクトコンストラクターは、何度も使用できるオブジェクトを作成するための強力なツールです。 オブジェクトのコンストラクターは、実際には通常のJavascript関数であり、さまざまなパラメーターを渡すこともできます。
関数MyObject(id、name)
{
}
OOPと平行線を引く場合、これはコンストラクター関数です。 それを使用して、オブジェクトを作成します。
var MyFirstObjectInstance = new MyObject(5、 "Sample");
var MySecondObjectInstace = new MyObject(12、 "Othe Sample");
したがって、オブジェクトのさまざまなインスタンスを作成しました。 1つのインスタンスのプロパティを変更することで、別のインスタンスのプロパティに影響を与えることを恐れずに、MyObjectオブジェクトの各インスタンスを個別に操作できるようになりました。
OOPと同様に、MyObjectにはメソッドとさまざまなプロパティがあります。 プロパティには、デフォルト値、またはオブジェクトのコンストラクターでユーザーが渡す値を割り当てることができます。
関数MyObject(id、name)
{
//ユーザーから渡された値
this._id = id;
this._name = name;
//デフォルト値
this.defaultvalue = "MyDefaultValue";
}
同様に、関数を作成できます。
関数MyObject(id、name)
{
this._id = id;
this._name = name;
this.defaultvalue = "MyDefaultValue";
//現在の値を取得します
this.getDefaultValue = function()
{
this.defaultvalueを返します。
}
//新しい値を設定します
this.setDefaultValue = function(newvalue)
{
this.defaultvalue = newvalue;
}
//任意の関数
this.sum = function(a、b)
{
return(a + b);
}
}
これは最も強力なJavascriptエンジンの1つだと思います。
プロトタイプを使用する
JavaScriptのプロトタイプは、JavaScript1.3 / JScript2.0 / ECMAScript 3rd Editionで登場しました。 プロトタイプを使用すると、既存のオブジェクトに新しいプロパティとパラメーターを追加できます。
オブジェクト-クラス-クラスのインスタンス
この図は、クラスのインスタンスがクラスのすべてのプロパティとメソッドを継承し、クラスが作成されたオブジェクトのプロパティとメソッドを継承することを示しています。
ここでオブジェクトを作成することは、コンストラクターを使用してオブジェクトを作成するときの同様のプロセスと同じです。
関数MyObject(id、name)
{
//値を設定します
this._id = id;
this._name = name;
}
突然、MyObjectオブジェクトの新しいプロパティを作成する場合、次のようにこれを行うことができます。
var MyInstance = new MyObject(5、 "some value");
MyInstance.newproperty = true;
ご覧のとおり、オブジェクトの新しいプロパティを作成することは難しくありませんが、このインスタンスでのみ使用でき、他のユーザーには配布されません。 この問題を解決するには、プロトタイプを使用する価値があります。
var MyInstance = new MyObject(5、 "some value");
MyInstance.prototype.newproperty = false;
MyInstance.newproperty = true;
これはプロトタイプを使用するのに最適なソリューションではありません-これは単なる例です。 なぜこれが最良の解決策ではないのですか? オブジェクトのプロパティが(オブジェクト自体で)期待どおりではなく、スクリプト内の任意の場所にある場合、コードの維持が困難になるためです。
プロトタイプを通じて作成されたプロパティは、デフォルト値に設定できます。 その後、それらを上書きできます(これは前の例で示しました)。
予想どおり、プロパティに加えて、メソッドを作成できます。 これを行う方法の簡単な例を次に示します。
// <b>インスタンス</ b>ではなく、<b>オブジェクト</ b>を使用します。
MyObject.prototype.getId = function()
{
this._idを返します。
}
プロトタイプメカニズムは、上記の可能性だけでなく、String、Arrayなどの独自のJavascriptオブジェクトを改善できるため、強力です。 簡単な例を示します。
// 1行あたりの単語数を取得する関数
関数getWordsCount()
{
return this.split( "").length;
}
//プロトタイプに関数を割り当てます
String.prototype.getWordsCount = getWordsCount;
//使用例:
var mystring = "My Test String";
アラート(mystring.getWordsCount()); //数字3を印刷する必要があります
連想配列
標準的な方法に加えて、連想配列の作成など、非常にエキゾチックな方法もあります。 これは、同じタイプの多数のオブジェクトを整理するのに役立ちます。
var MyObject = new Array();
MyObject ["id"] = 5;
MyObject ["name"] = "SampleName";
そこで、Javascriptを使用してオブジェクトを作成する方法を検討しました。 使用する方法の選択は完全にプログラマーにあり、現在のタスクに対応する必要があります。