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

 

一 原理

 

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

 

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"

 

二 优缺点

 

与原型式继承相同。

 

posted on 2018-12-28 17:02  沙滩海风  阅读(423)  评论(0编辑  收藏  举报

导航