自我介绍:大家好,我是吉帅振的网络日志;微信公众号:吉帅振的网络日志;前端开发工程师,工作4年,去过上海、北京,经历创业公司,进过大厂,现在郑州敲代码。

JS继承专栏

1【JS继承】什么是JS继承?

2【JS继承】常见的7种继承方式

3【JS继承】JS继承之原型链继承

4【JS继承】JS继承之构造函数继承

5【JS继承】JS继承之组合继承

6【JS继承】JS继承之原型式继承

7【JS继承】JS继承之寄生式继承

8【JS继承】JS继承之寄生组合式继承

9【JS继承】JS继承之ES6 Class继承

一、继承

继承(英语:inheritance)是面向对象软件技术当中的一个概念。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

二、构造函数

在聊JS继承方式之前,我们需要做一点准备工作,首先来聊一聊构造函数。
在js中,构造函数其实和函数时一样的,写法都是函数的定义方式

function A(){// 定义其他操作
}

上面这个函数A我们既可以看成是普通函数,也可以看成是一个对象的构造函数。普通函数就直接用A()进行调用,而作为构造函数创建对象的时候,我们则是用new关键字

var obj = new A()

现在我们知道,一个函数可以作为创建对象实例的构造函数,也可以当做普通函数使用,区别就是在于是否使用了new关键字。
构造函数在创建对象的时候,会执行如下的操作:

function A(){}
let instance = new A()
instance.__proto__ === A.prototype

1.在内存中创建一个对象
2.在新对象内部的[[Prototype]]属性指向构造函数的prototype属性
3.构造函数内部的this指向这个创建的新对象
4.执行构造函数内部的代码,比如添加一些属性、方法等
5.如果构造函数有返回值,该返回值为非空对象,则返回该对象,否则返回创建的新对象。

三、JS继承分类

以前我们只需要知道“寄生组合继承”是最好用,有个祖传代码模版用就行。后来继承补充了ES6 Class的相关内容,JS继承分类也有了相应的变化。
如图所示,JS中继承可以按照是否使用object函数,将继承分成两部分(Object.create是ES5新增的方法,用来规范化这个函数)。其中,原型链继承和原型式继承有一样的优缺点,构造函数继承与寄生式继承也相互对应。寄生组合继承基于Object.create, 同时优化了组合继承,成为了完美的继承方式。ES6 Class Extends的结果与寄生组合继承基本一致,但是实现方案又略有不同。
未完待续......

【JS继承】什么是JS继承?相关推荐

  1. php中 继承中的概念,JavaScript_JavaScript中的继承方式详解,js继承的概念 js里常用的如下 - phpStudy...

    JavaScript中的继承方式详解 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于 ...

  2. JS原型继承和类式继承

    类式继承(构造函数) JS中其实是没有类的概念的,所谓的类也是模拟出来的.特别是当我们是用new 关键字的时候,就使得"类"的概念就越像其他语言中的类了.类式继承是在函数对象内调用 ...

  3. js 中的五种继承方法

    正式发布的ES6中已经封装实现了其他OO语言中的继承形式,Class Extends,这里主要记录js的原型继承和借用构造函数继承 一.原型链继承 function Super(){this.name ...

  4. js继承之借用构造函数继承

    2018.5.27 今天本人又在查关于继承的问题,重新温习了一遍书,发现之前举的例子实际上不太清晰,故做调整. 我的上一篇文章介绍了,原型链继承模式.原型链继承虽然很强大,但是单纯的原型链模式并不能很 ...

  5. JS面向对象的程序设计之继承-继承的实现-借用构造函数

    JS面向对象的程序设计之继承-继承的实现-借用构造函数 前言:最近在细读Javascript高级程序设计,对于我而言,中文版,书中很多地方翻译的差强人意,所以用自己所理解的,尝试解读下.如有纰漏或错误 ...

  6. js中的类、继承、闭包

    一.js中的类 类:在面向对象编程中,类(class)是对象(object)的模板,定义了同一组对象(又称"实例")共有的属性和方法. Javascript是一种基于对象(obje ...

  7. js面向对象的程序设计 --- 下篇 继承启蒙

    继承是oo语言中一个最为人津津乐道的概念.ECMAScript支持实现继承,而且实现继承只要是靠原型链来实现的 ·原型链 其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 简单回顾一 ...

  8. js原型和原型链_初识JS原型/原型链/原型继承

    本文思路: 原型->原型链->原型继承->基于原型的继承/ES6中的继承->__proto__与prototype 首先我们知道JS中有对象,比如: var 但是在我们没有对这 ...

  9. 【JS继承】JS继承之寄生式继承

    自我介绍:大家好,我是吉帅振的网络日志:微信公众号:吉帅振的网络日志:前端开发工程师,工作4年,去过上海.北京,经历创业公司,进过大厂,现在郑州敲代码. JS继承专栏 1[JS继承]什么是JS继承? ...

  10. JS继承之寄生组合式继承

    所谓寄生组合式继承,即通过借用构造函数来继承属性,通过原型链的混成形式来继承方法. 组合继承弥补了原型链和盗用构造函数的不足,是js中使用最多的继承模式. 实现思路: 不必为了指定子类型的原型而调用父 ...

最新文章

  1. 什么是传感器融合?我们从“盲人摸象”讲起……
  2. IE条件注释和CSS Hacks
  3. AndroidStudio_ListView
  4. java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?
  5. wampserver环境下,apache本地下设置多个域名
  6. 给大一师弟师妹的一些建议
  7. 客户端浏览器Chrome过早断开连接导致Nginx报400错误的解决办法
  8. poj Labeling Balls 3687 拓扑排序!!!!
  9. libcurl之curl_easy_getinfo的使用教程
  10. matlab右上角星号怎么打出来,星号怎么打出来(教你怎么输入特殊符号)
  11. MySQL - 5.7.31 - winx64 安装教程
  12. 计算机专业选什么笔记本cpu,笔记本电脑什么配置好?来看看这款硬核办公本
  13. 【论文阅读】DeepPap: Deep Convolutional Networks for Cervical Cell Classification
  14. vue全局更新以及孙组件调用祖组件(利用provide和inject)
  15. 如何将二维码分解成链接?二维码解码在线怎么操作?
  16. 知道python程序设计基础期末答案_Python程序设计基础_知到答案章节作业期末答案...
  17. 每天5分钟,定投聊通透-学习笔记01
  18. 基于物联网技术和RFID电子客票的铁路自动检票机
  19. 企业数字化转型要插上翅膀
  20. JS快速查找数组中重复项以及下标

热门文章

  1. webservice和jms的区别
  2. Unity3D 太空射击游戏学习笔记
  3. linux读取ads1115ADC例程
  4. 论文导读 | 社交网络上的信息传播预测
  5. 地铁口多了一堆小卡片,事情并不简单?
  6. PS:制作螺旋波点背景色块
  7. 海定计算机计算标准差,方差 标准差
  8. VMware虚拟机ubuntu ros安装摄像头驱动
  9. 图片怎么改成jpg格式
  10. 51 Nod 一维战舰