前几天重温了一下js的继承,今天分享给大家:

一,类式继承。

所谓的类式继承就是:第二个类的原型prototype被赋予了第一个类的实例,如subcals.prototype=new supercls();

原理:新创建的对象复制了父类的构造函数内的属性和方法,并且将原型_proto_指向了父类的原型对象;

虽然是继承了但是也是有缺点的,由于父类通过其原型prototype对父类实例化继承了父类,所以说父类中的属性和方法也成了引用类型,就会在引用类共用,因此只要一个子类中改变了原型中的父类构造函数那么就会直接影响其他子类对这个父类的引用。

二,构造函数继承。

所谓构造函数继承就是在原型函数中使用call,和apply 。(具体区别就不在这里细说了)

superclass.call(this);

原理:对superClass调用这个方法就是将子类中的变量在父类中执行一遍,由于父类中是this绑定属性的,因此子类自然也就继承了父类的共有属性。

缺点:由于这种类型的继承没有涉及到原型Prototye,所以父类的原型方法自然不会被子类继承。

三,组合继承

原理:在子类构造函数中执行父类构造函数,在子类原型上实例化父类就是组合继承模式。这样就融合了类式继承和构造函数继承的优点,但是也并不是没有缺点了。

我们在使用构造函数继承时又调用了一遍父类的构造函数,而在实现子类的原型的类式继承时调用了一遍父类的构造函数,因此调用了两遍。(虽然有缺点但是在我的代码中出现的频率还是挺高的不知道大家怎么使用的)

四,原型继承;

原理:根据已有的对象创建一个新的对象,同时不必创建新的自定义对象类型。

function inheritobject(0){

  function f(){}

 f.prototype=o;

  return new f(); 

}

缺点:与类式继承一样,引用类型;

五,寄生继承。

寄生继承就是对原型继承的第二次分装,并且在这个第二次封装中对继承的对象进行了扩展,这样新创建的对象不仅有父类中的属性和方法而且还添加新的属性方法。

六,寄生组合继承。

顾名思义就是寄生式继承和组合继承的结合体。

js传宗接代---继承的更多相关文章

  1. JS对象继承篇

    JS对象继承篇 ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的 原型链 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person() ...

  2. js实现继承的5种方式 (笔记)

    js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...

  3. js实现继承的方式总结

    js实现继承的5种方式 以下 均为 ES5 的写法: js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承 ...

  4. 【09-23】js原型继承学习笔记

    js原型继承学习笔记 function funcA(){ this.a="prototype a"; } var b=new funcA(); b.a="object a ...

  5. js实现继承的两种方式

    这是面试时面试官会经常问到问题: js的继承方式大致可分为两种:对象冒充和原型方式: 一.先说对象冒充,又可分为3种:临时属性方式.call().apply(): 1.临时属性方式: 当构造对象son ...

  6. js实现继承

    js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...

  7. 浅谈JS的继承

    JS继承 继承是OO语言中最为人津津乐道的概念,许多OO语言都支持两种方式的继承:接口继承:实现继承. 接口继承:只继承方法签名. 实现继承:继承实际的方法. 由于ES里函数没有签名,所以在ES里面无 ...

  8. JS类继承常用方式发展史

    JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...

  9. js实现继承的5种方式

    js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对象冒充实现继承(该种实现 ...

随机推荐

  1. Scraping_regex

    上面链接爬虫只是能将我们所需的网页下载下来,但是,我们没办法得到我们想要的数据.因此,我们只有URL管理器和URL下载器是不足以组成一个完整的网络爬虫的.我们还需要URL解析器,对数据进行提取. 数据 ...

  2. WebSocket学习总结

    一 .websocket 已解决      但是websocket延伸出来的网络编程还有好多知识点没有清理.主要的流程和实现方式已经大概了解清楚,下面从学习的进度思路来一点点复习.        网络 ...

  3. AutoFac学习摘要

    依赖注入(控制反转)常见的依赖注入工具:AutoFac,Spring.Net,Unity等依赖注入的方式:1.通过构造函数进行注入2.通过属性进行注入 注意:在项目中AutoFac的注入有两次,第一次 ...

  4. [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)

    线性回归属于回归问题.对于回归问题,解决流程为: 给定数据集中每个样本及其正确答案,选择一个模型函数h(hypothesis,假设),并为h找到适应数据的(未必是全局)最优解,即找出最优解下的h的参数 ...

  5. ThreadGroup详解

     ①定义线程组 ThreadGroup类中有 2个构造方法,它们用来定义线程组.这 2个构造方法的使用格 式如下: public ThreadGroup(String name); public Th ...

  6. winows 服务器环境搭建 (碰到了windows服务器,小记一下吧~)

    1.连接远程服务器  安装wamp 2.查看wamp 默认端口号是否与对应windows 服务器冲突,如果冲突,则改之 WAMP装好之后默认的端口是80,但是这个80端口呢,可以热门端口啊,迅雷,II ...

  7. jar包和war包

    Jar (Java archive), 是将实现了某功能的所有类及辅助资源用ZIP压缩形式打包而成的一个文件, 便于代码的管理和重复使用.当使用别人提供的jar时,只需要在classpath环境变量中 ...

  8. html学习笔记 - table表格

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. (数字IC)低功耗设计入门(五)——RTL级低功耗设计(续)

    二.RTL级低功耗设计(续) 前面一篇博文我记录了操作数隔离等低功耗设计,这里就主要介绍一下使用门控时钟进行低功耗设计. (4)门控时钟 门控时钟在我的第一篇博客中有简单的描述,这里就进行比较详细的描 ...

  10. javascript获取json对象的key名称的两种方法

    javascript获取json对象的key名称的两种方法 数据处理中,你可能接收到一个不确定内容格式的json对象,然后要把key的值提取出来.今天试过两种可以提取json key的方法,均可以正常 ...