#26(2)es5继承

11 篇文章 0 订阅
6 篇文章 0 订阅

一、构造函数继承
(一) Call/apply 继承
(二) Call 与 apply 的异同:
1. 第一个参数 this 都一样,指当前对象
2. 第二个参数不一样:call 的是一个个的参数列 表;apply 的是一个数组(arguments 也可以)

(三) 构造继承特点:

  1. 子类实例共享父类引用属性的问题
  2. 创建子类实例时,可以向父类传递参数
  3. 可以实现多继承(call 或 apply 多个父类对象)
    (四) 构造继承缺点:
  4. 实例并不是父类的实例,只是子类的实例
  5. 只能继承父类的实例属性和方法,不能继承原 型属性和方法
  6. 无法实现函数复用,每个子类都有父类实例函 数的副本,影响性能

二、Prototype 的概念
(一) Javascript 中的每个函数都有 prototype 属性, 指向函数的原型对象。每一个对象都有__proto_ _属性,指向该对象的父对象。

三、原型链继承
(一) 特点:

  1. 非常纯粹的继承关系,实例是子类的实例,也 是父类的实例
  2. 父类新增原型方法/原型属性,子类都能访问 到
  3. 简单,易于实现
    (二) 缺点:
  4. 要想为子类新增原型属性和方法,必须要在 new 父类()这样的语句之后执行。要想为 子类新增实例属性和方法,必须要在构造函数
    中添加。
  5. 无法实现多继承
  6. 来自原型对象的所有属性被所有实例共享

四、混合继承
(一) 特点:
4. 可以继承实例属性和方法,也可以继承原型属 性和方法
4. 既是子类的实例,也是父类的实例
5. 不存在引用属性的共享问题
6. 可传参
5. 函数可复用

(二) 缺点: 1. 调用了两次父类构造函数,生成了两份实例 五、扩展:寄生组合继承 (一) 特点: 1. 完美

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值