W3C School の定義によれば、JavaScript はクラスはありませんが、宣言はなく、各オブジェクトを直接使用するだけであることがわかります。キー - 値の組み合わせとして理解できます。
W3C School からの説明を添付します:
オブジェクト指向言語の要件
オブジェクト指向言語は、開発者に 4 つの基本機能を提供する必要があります:
カプセル化 - 関連情報 (データまたはメソッド) を格納する オブジェクト内の機能
集約 - 1 つのオブジェクトを別のオブジェクト内に格納する機能
継承 - クラスのプロパティとメソッドを別のクラス (または複数のクラス) から派生する機能
ポリモーフィズム -複数の方法で使用できるプログラムを作成する機能 メソッド 関数またはメソッド
ECMAScript を実行する機能は、これらの要件をサポートしているため、オブジェクト指向であると考えることができます。
以下は比較的規則的なオブジェクト定義です (以下の例は <
var person = new Object();
person.name = "Horky";
person。年齢 = 40;
person.job = "ソフトウェア エンジニア";
person.sayName = function(){
document.write(this.name);
}
呼び出しメソッド:
person.sayName(); document.write("
document.write("
もう 1 つ。方法はよりカジュアルで、Key-Value を定義するところまでですが、ブラウザの古いバージョンではサポートされていない可能性があります:
var person = ( 名前: "Horky"、
年齢: 40、
職業: "ソフトウェア エンジニア"、
sayName:function(){
}
};
JavaScriptの変数の性質は緩い型なので、はっきり言ってアナーキーな型なので、使わなくても大丈夫です。最初に完全な定義を与えるためですが、次のようにすることもできます (表示には必須ですが、決して推奨されません):
person.name = "Horky";
{
document.write(this.name);
}
person.sayName();
document.write("
Age: ") ; その理由は、基本的なデータ型と参照型が依然として Javascript で明確に定義されているためです。 .
JavaScript には前述したオブジェクト指向の機能があることを思い出してください。言うまでもなく、最初の 2 つの点はより明白であり、3 番目の点については後で説明します。個人的には、これは C++ の C の /Variable パラメーター関数に似ていると思います。つまり、関数のパラメーターは非常に任意であり、JavaScript では制限できないからです。すべては開発者に委ねられます。その結果、ポリモーフィズムが作成されます。コンストラクターを組み合わせて例を示します。 .age = 0;
switch(arguments.length)
{
case 3:
this.job = job;
case 2:
case 1:
this.name = name;
break;
}
this.introduceSelf = function()
{
document.write("
function object(o)
{
function F() {};
return new F();
}次に、次の 2 つの新しいオブジェクトを試してください:
var horky_alias = object(horky);
var arthas_alias = object(horky, {name:{value:"Arthas"}}); ちなみに、 horky をコピーするときの 2 番目のオブジェクトです。名前も変更されました
this.prototype = 新しい人(名前,年齢,仕事);
this.introduceSelf = function()
{
this.prototype.introduceSelf();
document.write("< ; p /> I am BOY!");
}
}
varboy = new Boy("A",3);
プロトタイプの使用が低レベルすぎて少し荒っぽいと感じる場合は、次のようにすることができます。それも行います。より単純な継承を実現するには、「借用コンストラクター」メソッドを使用します。