寄生继承
寄生继承相当于对原型继承的二次封装,并在二次继承中对继承的对象进行拓展,使其不仅拥有父类的属性方法也拥有新加的属性方法。
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype = {
sleep: function () {
console.log(this.name + "在睡觉!");
}
}
//实例继承
function Student(obj) {
function fun() {
}
//寄生到 fun函数的prototype上面
fun.prototype = obj;
return new fun();
}
var p = new Person('小明',18);//实例化person
//带个壳子
function getObj() {
var stu=Student(p);
stu.work="学习";
return stu;
}
var s = getObj();
console.log(s);
s.sleep();
用寄生式继承来为对象添加函数,会由于不能做到函数复用而降低效率。