継承の紹介
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(これ)は、このオブジェクトの代わりに動物オブジェクトを使用することを意味します。それでは、猫には動物のすべての特性と方法がありませんか? CATオブジェクトは、動物の方法と特性を直接呼び出すことができます。
複数の継承:
function class10(){this.showsub = function(a、b){alert(ab); }} function class11(){this.showadd = function(a、b){alert(a+b); }} function class2(){class10.call(this); class11.call(this); }複数の相続財産を達成するために2つの呼び出しを使用して非常に簡単です
もちろん、この記事の範囲に分類されないプロトタイプチェーンの使用など、JSを継承する他の方法がありますが、ここでの通話の使用についてのみ説明します。コールといえば、もちろん適用されます。これらの2つの方法は基本的に同じことを意味します。違いは、コールの2番目のパラメーターが任意のタイプである可能性があるのに対し、適用の2番目のパラメーターは配列または引数でなければならないことです。
JavaScriptに単純な継承を実装する方法の説明は次のとおりですか?
次の例では、人からプロトタイププロトタイプのすべてのプロパティを継承する従業員クラスの従業員を作成します。
function Employee(name、sex、employeeId){this.name = name; this.sex = sex; this.employeeid = employeed;} //従業員のプロトタイプを個人のインスタンスに指している//人のインスタンスは個人のプロトタイプのメソッドを呼び出すことができるため、従業員のインスタンスは個人のプロトタイプのすべてのプロパティを呼び出すことができます。 employee.prototype = new Person(); employee.prototype.getEmployeid = function(){return this.employeeid;}; var zhang = new Employee( "zhangsan"、 "man"、 ""); console.log(zhang.getname(); // "Zhangsan上記の継承の実装は大まかであり、多くの問題があります。
人は、従業員のコンストラクターとプロトタイプ(以下、クラスと呼ばれる)を作成するときにインスタンス化されますが、これは不適切です。
従業員のコンストラクターは、親クラスのコンストラクターに電話をかけることができないため、従業員コンストラクターの名前と性の属性の繰り返しの割り当てをもたらします。
従業員の関数は、オーバーロードメカニズムなしで、同じ名前の関数を直接上書きします(そして、前のものは同じタイプの問題です)。
JavaScriptクラスを作成するための構文は散在しすぎており、C#/Javaの構文ほどエレガントではありません。
実装には、コンストラクター属性の指さしにエラーがあります。