ホームページ >ウェブフロントエンド >jsチュートリアル >jsのpackage_javascriptスキルで使えるコンストラクタ継承利用の分析

jsのpackage_javascriptスキルで使えるコンストラクタ継承利用の分析

WBOY
WBOYオリジナル
2016-05-16 16:17:331101ブラウズ

この記事の例では、JS カプセル化で使用できるコンストラクター継承の使用法について説明します。皆さんの参考に共有してください。詳細は以下の通りです。

まず次のコードを見てみましょう

(YUI) ライブラリで使用されるメソッド:

コードをコピーします コードは次のとおりです。
function extend(Child, Parent) {

var F = function(){};
F.prototype = Parent.prototype;
Child.prototype = new F();
Child.prototype.constructor = 子;
Child.uber = Parent.prototype;
}

コピー継承メソッド、属性コピーもあります:

このメソッドは前のメソッドとは異なります。子のプロトタイプの拡張が完了しているため、child.prototype.constructor プロパティは上書きされなくなりますので、リセットする必要はありません。

前の方法と比較すると、この方法は明らかに効率が若干劣ります。ここで実行されるのは、サブオブジェクトのプロトタイプを 1 つずつコピーすることであるためです。単純なプロトタイプチェーンクエリではなく。

このメソッドは、基本的なデータ型のみを含むオブジェクトにのみ適用できます。関数や配列を含むすべてのオブジェクト型はコピーできず、参照の受け渡しのみをサポートします。

コードをコピー コードは次のとおりです。
function extend2(Child, Parent) {
var p = Parent.prototype;
var c = Child.prototype;
for (var i in p) {
c[i] = p[i];
}
c.uber = p;
}

var Shape = function(){}
var TwoDShape = function(){}
Shape.prototype.name = '形状';
Shape.prototype.toString = function(){
this.name を返します;
}
extend2(TwoDShape,Shape);
var t = new TwoDShape();
名前
//-->「形状」
t.toString();
//-->「形状」
TwoDShape.prototype.name = 'TwoDShape';
名前
//-->「2D 形状」
t.toString();
//-->「2D 形状」

TwoDShape.prototype.toString === Shape.prototype.toString
//-->true
TwoDShape.prototype.name === Shape.prototype.name
//-->false

この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。