JavaScript各种继承方式(五):寄生式继承

一 原理

与原型式继承完全相同,只是对父类的实例(也当作子类的实例使用)进行了增强。

function create(obj){
    let mango = Object.create(obj);
    mango.desc = function(){
        console.log('desc');
    };
    return mango;
}
let fruit = {
    name:'水果',
    nutrition:['维生素']
};

let mango1 = create(fruit);
let mango2 = create(fruit);

mango1.nutrition.push('膳食纤维');
mango2.nutrition.push('柠檬酸');
console.log(mango1.nutrition); // ["维生素", "膳食纤维", "柠檬酸"]
console.log(mango2.nutrition); // ["维生素", "膳食纤维", "柠檬酸"]

// 增强的属性是子类的实例的独有属性
console.log(mango1.desc === mango2.desc); // false;
mango1.desc(); // "desc"
mango2.desc(); // "desc"

二 优缺点

与原型式继承相同。

猜你喜欢

转载自www.cnblogs.com/sea-breeze/p/10191643.html