この記事では、JSカプセル化で使用できるコンストラクター継承の使用について説明します。参照のためにそれを共有してください。詳細は次のとおりです。
次のコードを見てみましょう
(YUI)ライブラリで使用される方法:
次のようにコードをコピーします。関数拡張(子、親){
var f = function(){};
f.prototype = parent.prototype;
child.prototype = new f();
child.prototype.constructor = child;
child.uber = parent.prototype;
}
コピー継承方法、属性コピーもあります。
この方法は以前とは異なります。子供のプロトタイプが拡張されているため、child.prototype.constructorプロパティを再び上書きしないため、child.prototype.constructorプロパティをリセットする必要はありません。
以前の方法と比較して、この方法は明らかに効率が優れています。ここで実行されているのは、サブオブジェクトのプロトタイプのコピーが1つずつあるからです。単純なプロトタイプチェーンクエリではなく。
この方法は、基本的なデータ型のみを含むオブジェクトにのみ適用できます。関数や配列を含むすべてのオブジェクトタイプは、複製可能ではありません。彼らは参照の合格のみをサポートします。
コードを次のようにコピーします。関数extend2(子、親){
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';
shape.prototype.tostring = function(){
this.nameを返します。
}
extend2(twodshape、shape);
var t = new twodshape();
T.NAME
//->「形」
t.toString();
//->「形」
twodshape.prototype.name = 'twodshape';
T.NAME
//->「2D Shape」
t.toString();
//->「2D Shape」
twodshape.prototype.tostring === shape.prototype.tostring
//-> true
twodshape.prototype.name === shape.prototype.name
//-> false
この記事がみんなのJavaScriptプログラミングに役立つことを願っています。