zoukankan      html  css  js  c++  java
  • 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"

    二 优缺点

    与原型式继承相同。

  • 相关阅读:
    搭建wamp环境,数据库基础知识
    练习题:选择器和选择好友
    例子:滑动效果
    TCPDump
    内存
    Cache和Buffer的区别(转载)
    经典问题回忆
    history
    DNS
    bc的用法
  • 原文地址:https://www.cnblogs.com/sea-breeze/p/10191643.html
Copyright © 2011-2022 走看看