一、原型链继承

原理:修改子类型的原型,使其指向父类型的实例;

缺点:

1,不能以字面量方式在子类型的原型上添加新方法;这回重新改写子类型的原型;

2  创建子类型的实例时无法向父类型的构造函数传参。

3,不同子类型的实例对父类型中引用类型的属性进行操作时,会产生篡改

产生这种问题的原因是:父类型实例的color属性被子类型的原型继承;成为了子类型的原型属性;而引用类型值的原型属性会被所用实例共享。

二、借用构造函数继承

借用构造函数继承,可以解决原型中包含引用类型值所带来的问题;

原理:在子类型的构造函数内部调用父类型构造函数,需要使用call方法来在子类型的构造函数的作用域中执行父类型的构造函数。

缺点:

1,每创建一个子类型实例时,都要调用父类型的构造函数,不能实现复用;

2,父类型的原型中定义的方法,对子类型来说无法访问。

三、组合继承(combinnation inheritance)

原理:将原型链继承和构造函数继承结合起来,从而发挥二者之长的一种继承模式。借用构造函数继承属性,借用原型链继承属性和方法;

缺点:因为调用了两次父类型实例(Parent),所以子类型创建实例后,其原型中会包含两份相同的属性和方法。

四、原型式继承

首先介绍一下Object.creat()方法,这个方法接收两个参数:一个用作新对象原型的对象,一个可以为细腻对象定义额外属性的对象;

Obeject.creat()如果只接收一个参数的话,和下面object()函数效果相同;

下面是使用原型式继承的一个实例

缺点:1,new每一个实例都要使用Object.creat()方法来调用父类型;

   2,父类型中引用类型的值会被所用实例共享。

五、寄生式继承

与原型式继承的区别在于,可以在用用某种方式来增强创建出来的实例对象;

person1不仅继承了Parent的属性,还有了自己的方法sayHi();

缺点:不能做到函数复用降低效率。

六、寄生组合式继承

Child.prototype=Object.create(Parent.prototype);修改子类型的原型,使其指向父类型的原型;
Child.prototype.constructor=Child;如果不写这句代码,由于上面修改了原型的指向,构造器指向Parent。

最新文章

  1. Java 实现批量重命名,亲测可用(精简版)
  2. .Net语言 APP开发平台——Smobiler学习日志:如何在手机上开发仪表盘控件
  3. c#解析xml
  4. Behind RabbitMQ Exchange Types
  5. [Z]CS权威会议
  6. 【Java】Java处理double相加的结果异常
  7. [转载]ASP.NET MVC 3的分部视图
  8. VB指针 与CopyMemory
  9. ThinkPHP 的CURD 基本操作
  10. CArray
  11. angularJS之使用指令封装DOM操作
  12. Android 开发之错误整理java.lang.SecurityException: Requires READ_PHONE_STATE: Neither user 10088 nor current process has android.permission.READ_PHONE_STATE.
  13. Scrapy中使用Django的Model访问数据库
  14. HttpClient 实现 get,post请求
  15. iTOP-4418开发板所用核心板研发7寸/10.1寸安卓触控一体机
  16. java集合(list,set,map)
  17. Linux常用基本命令:三剑客命令之-awk格式化动作
  18. keys(),values()和items()
  19. 【HQL】常用函数
  20. Java-----隐藏手机号中间四位,身份证号码中间几位

热门文章

  1. 芯灵思Sinlinx A64 Linux&qt编译安装
  2. 使用python调用其他脚本
  3. centos7设置rc.local开机执行命令
  4. Kettle 部署
  5. Linux下 USB设备驱动分析(原创)
  6. 【python】python打包生成的exe文件运行时提示缺少模块
  7. abaqus 帮助文档 Substructure(子结构) 理论
  8. MySQL 数据库索引
  9. Docker端口映射与容器互联
  10. android SDK 安装