zoukankan      html  css  js  c++  java
  • js各继承方法的优缺点

    在js中有很多种继承的方法,下面总结这些方法的优缺点。

    ####1.原型链继承

    优点:

    1. 非常纯粹的继承关系,实例是子类的实例,也是父类的实例
    2. 父类新增原型方法/原型属性,子类都能访问到
    3. 简单,易于实现

    缺点:

    1. 要想为子类新增属性和方法,必须要在new Animal()这样的语句之后执行,不能放到构造器中
    2. 无法实现多继承
    3. 来自原型对象的引用属性是所有实例共享的创建子类实例时,无法向父类构造函数传参

    ####2.构造继承

    忧点:

    1. 解决了子类实例共享父类引用属性的问题
    2. 创建子类实例时,可以向父类传递参数
    3. 可以实现多继承(call多个父类对象)

    缺点:

    1. 实例并不是父类的实例,只是子类的实例
    2. 只能继承父类的实例属性和方法,不能继承原型属性/方法
    3. 无法实现函数复用,每个子类都有父类实例函数的副本,影 大专栏  js各继承方法的优缺点响性能

    ####3.实例继承

    优点:

    1. 不限制调用方式,不管是new 子类()还是子类(),返回的对象具有相同的效果

    缺点:

    1. 实例是父类的实例,不是子类的实例
    2. 不支持多继承

    ####4.拷贝继承

    优点:

    1. 支持多继承

    缺点:

    1. 效率较低,内存占用高(因为要拷贝父类的属性)
    2. 无法获取父类不可枚举的方法(不可枚举方法,不能使用for in 访问到)

    ####5.组合继承

    特点:

    1. 可以继承实例属性/方法,也可以继承原型属性/方法
    2. 既是子类的实例,也是父类的实例
    3. 不存在引用属性共享问题
    4. 可传参
    5. 函数可复用

    缺点:

    1. 调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)

    总体来说还是组合继承的优点最多,但是实际使用的时候还是要根据实际情况选择继承方法。

  • 相关阅读:
    Spring Cloud学习笔记【二】Eureka 服务提供者/服务消费者(ribbon)
    Spring Cloud学习笔记【一】Eureka服务注册与发现
    Springboot分布式限流实践
    Springboot分布式锁实践(redis)
    Springboot2本地锁实践
    Springboot集成mybatis通用Mapper与分页插件PageHelper
    Springboot多数据源配置
    redis主从集群搭建
    assert的基本用法
    spring中BeanPostProcessor笔记
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12370552.html
Copyright © 2011-2022 走看看