>
明らかに、プロトタイプ継承の中核は clone 関数であり、これはプロトタイプ チェーンの原理でもありますが、この場合、サブクラスはスーパー クラスのすべての属性とメソッドを継承するという点が異なります。特に、このタイプの継承では、コンストラクターを作成する必要はありません。オブジェクトの単語変数を作成し、対応するプロパティとメソッドを定義し、サブクラスで参照するだけで済みます。
C. ドープされたクラス: いくつかの一般的で汎用性の高いメソッドを関数にカプセル化し、次の関数を通じてこれらのメソッドを使用するクラスに割り当てます。さまざまなクラスに必要なメソッドを選択的に渡すこともできます。
コードをコピー
コードは次のとおりです。
🎜>
ポリモーフィズム: 個人的には、これは比較的抽象的で言葉で説明するのが難しいと思うので、オーバーロードと上書きの 2 つの側面から簡単に説明します。
オーバーロード: 上記の例では、agument 関数は最初に 2 つのパラメーターを受け取りますが、その後の呼び出しでは、agument(Fish,Name,"sayLove") は任意の数のパラメーターを受け取ることもできます。これは、JavaScript のオーバーロードによって実装されます。関数内のユーザーは、arguments 属性を操作して操作します。
オーバーライド: これは非常に単純です。サブクラスで定義されたメソッドがスーパークラスから継承されたメソッドと同じ名前を持つ場合、このメソッドは上書きされます (これはスーパークラスのメソッドをオーバーライドするわけではないことに注意してください)。もう面倒なことはありません!
最後に、this と実行コンテキストに注目してみましょう。前のカプセル化の例では、this は、this が配置されているクラスのインスタンス化オブジェクト自体を表しますが、たとえば、HTML 属性を通じて定義されるものとは異なります。イベント処理コード。次のコードを参照してください:
Up この例では、ボタンをクリックした後、インスタンス オブジェクトのプロパティがポップアップ ボックスに表示されません。これは、現在のコンテキストが変更されたためです。 HTMLタグですが、このタグには getName 属性がないので、当然この属性の属性値は出力できません。この例から、実行コンテキストは実行中に決定され、いつでも変更できることが簡単にわかります。
もちろん、上でコメントアウトしたコードを削除し、getName メソッドを取得する呼び出しを通じてこの実行コンテキストを変更することもできます。 apply メソッドでも実行コンテキストを変更する機能を実現できますが、より美しい実装メソッドのバインドがプロトタイプ フレームワークで見つかりました。このメソッドの実装を見てみましょう。私たちの先祖の偉大さに感心するしかありません...
コードをコピーします
コードは次のとおりです。 Function.prototype.bind = function(obj) {
var method = this, temp = function() {
return method.apply (obj, argument);
} ;
}
これを明確に理解できれば、簡単なスクリプト フレームワークを作成できると思います。近い将来、マスターにアップグレードできると思います。理解していなくても、心配する必要はありません。オブジェクト指向は本質的に少し抽象的です。もっと練習すれば大丈夫です。
とりあえずこの記事を書きましょう。次の記事では、JavaScript のデザイン パターンについて説明します。ご期待ください。