JavaScript各种继承方式:寄生组合继承
Posted 沙滩海风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript各种继承方式:寄生组合继承相关的知识,希望对你有一定的参考价值。
一 原理
用寄生继承来改造组合继承。
function Fruit(name){ this.name = name; } Fruit.prototype.eat = function(){ console.log(\'eat\'); } function Mango(name,level){ Fruit.call(this,name); this.level = level; } function create(obj){ let instance = Object.create(obj); // 对父类的实例进行了增强 instance.desc = function(){ console.log(\'desc\'); }; return instance; } Mango.prototype = create(Fruit.prototype); // 通过寄生拿到父类的实例,并没有调用父类的构造函数 Mango.prototype.constructor = Fruit; let mango1 = new Mango(\'泰国芒果\',\'优\'); let mango2 = new Mango(\'海南芒果\',\'良\'); console.log(mango1); console.log(mango2);
二 优点
具有组合继承的优点,同时只调用一次父类的构造函数,避免了内存和性能的浪费,消除了组合继承的缺点。
《高级程序设计》对寄生组合继承对评价:
Babel采用了寄生组合继承来编译class语法糖。
以上是关于JavaScript各种继承方式:寄生组合继承的主要内容,如果未能解决你的问题,请参考以下文章