構造の継承
親クラスのコンストラクターを使用してサブクラスを拡張します。親クラスの構築プロパティを子クラスにコピーします(親クラスのプロトタイプはコピーできません)。
//动物类
function Animal(name, sex) {
this.name = name || 'Animal';
this.sex = sex || '未知';
this.sleep = function () {
console.log(this.name + "在睡觉!");
}
}
//添加原型属性和方法
Animal.prototype = {
eat: function () {
console.log(this.name + "在吃饭!");
},
play: function () {
console.log(this.name + "在玩!");
}
}
//科目类
function Type(type) {
this.type = type || '类型';
}
Type.prototype.paTree = function (args) {
console.log(args);
}
function Cat(name, sex, type) {
Animal.call(this, name, sex);
Type.call(this, type);
}
var cat = new Cat('小黑', '公', '猫科');
cat.sleep();
console.log(cat);
//子类的实例是本身
console.log(cat instanceof Cat);//true
console.log(cat instanceof Animal);//false
console.log(cat instanceof Type);//false
特徴
サブクラス作成時に親クラスにパラメータを渡すことができます。
多重継承を実現できます。
欠点
サブクラス オブジェクトのインスタンスは、それ自体であり、親クラスではありません。
継承できるのは親クラスの構築プロパティおよびメソッドのみであり、プロトタイプのプロパティおよびメソッドは継承できません。
完全な継承ではなく、親クラスのコピーであるクローン作成に似ており、パフォーマンスに影響します。