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"
二 优缺点
与原型式继承相同。