ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の継承とその他の継承_javascript のヒント

JavaScript の継承とその他の継承_javascript のヒント

PHP中文网
リリース: 2016-05-16 15:02:53
オリジナル
1686 人が閲覧しました

継承の概要

JS の継承は非常に複雑なトピックであり、他のオブジェクト指向言語での継承よりもはるかに複雑です。他のほとんどのオブジェクト指向言語では、クラスからの継承に必要なキーワードは 1 つだけです。 JS でパブリック メンバーを継承するという目的を達成するには、一連の措置を講じる必要があります。 JS はプロトタイプ継承に属します。この柔軟性のおかげで、標準のクラスベースの継承またはより微妙なプロトタイプ継承を使用できます。 JS では、すべての継承がプロトタイプを通じて実行され、JS がオブジェクトに基づいて継承することは明らかです。

継承:

function Animal(name){ 
this.name = name; 
this.showName = function(){ 
alert(this.name); 
} 
} 
function Cat(name){ 
Animal.call(this, name); 
} 
var cat = new Cat("Black Cat"); 
cat.showName();
ログイン後にコピー

Animal.call(this) は、このオブジェクトの代わりに Animal オブジェクトを使用すると、Cat オブジェクトは Animal のすべてのプロパティとメソッドを持ちます。

多重継承:

function Class10() 
{ 
this.showSub = function(a,b) 
{ 
alert(a-b); 
} 
} 
function Class11() 
{ 
this.showAdd = function(a,b) 
{ 
alert(a+b); 
} 
} 
function Class2() 
{ 
Class10.call(this); 
Class11.call(this); 
}
ログイン後にコピー

非常に簡単で、2 つの呼び出しを使用して多重継承を実現します

もちろん、js 継承 他にも方法がありますプロトタイプチェーンの使用など、これはこの記事の範囲外です。ここでは call の使用法についてのみ説明します。 call と apply について言えば、これら 2 つのメソッドは基本的に同じことを意味します。違いは、call の 2 番目のパラメーターは任意の型にできるのに対し、apply の 2 番目のパラメーターは配列または引数でなければならないことです。

JavaScript で単純な継承を実装する方法を紹介しましょう。

次の例では、従業員クラス Employee を作成します。これは、プロトタイプのすべてのプロパティを Person から継承します。

function Employee(name, sex, employeeID) {
this.name = name;
this.sex = sex;
this.employeeID = employeeID;
}
// 将Employee的原型指向Person的一个实例
// 因为Person的实例可以调用Person原型中的方法, 所以Employee的实例也可以调用Person原型中的所有属性。
Employee.prototype = new Person();
Employee.prototype.getEmployeeID = function() {
return this.employeeID;
};
var zhang = new Employee("ZhangSan", "man", "");
console.log(zhang.getName()); // "ZhangSan
ログイン後にコピー

上記の継承の実装は非常に大まかであり、多くの問題があります:

Employee コンストラクターとプロトタイプを作成するとき (以下、クラスと呼ばれます)、パーソンがインスタンス化されますが、これは不適切です。

Employee のコンストラクターは親クラス person のコンストラクターを呼び出すことができないため、Employee コンストラクターで名前と性別属性が繰り返し割り当てられます。

Employee の関数は Person の同じ名前の関数を上書きしますが、オーバーロード メカニズムはありません (これは前のものと同じタイプの問題です)。

JavaScript クラスを作成する構文は断片化しすぎており、C#/Java の構文ほど洗練されていません。

実装のコンストラクター属性にポインティングエラーがあります。

上記は JavaScript の継承とその他の継承 javascript テクニックの内容です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート