首先给大家介绍下在es5中构造函数的继承

  1. function A(){
  2. 2 //构造函数A
  3. 3 this.name="我是A函数";
  4. 4 }
  5. 5
  6. 6 A.prototype={
  7. 7 constructor:A,
  8. 8 render(){
  9. 9 console.log("我是A实例的render方法")
  10. 10 }
  11. 11 }
  12. 12
  13. 13 let a=new A();
  14. 14
  15. 15 function B(a){
  16. 16 this.age=a;
  17. 17 A.call(this);
  18. 18 //通过call改变this指向从而达到继承A函数里面的私有属性
  19. 19 console.log(this.name)
  20. 20 }
  21. 21 let b=new B("18")
  22. 22
  23. 23 //B函数继承A函数的原型
  24. 24 //B.prototype=A.prototype; 如果是这样直接继承的话会出现如果你改变B的方法A的同时在变
  25. 25 B.prototype=Object.create(A.prototype)
  26. 26 //原型继承完毕需要更改一下constructor指向
  27. 27 B.prototype.constructor=B;
  28. 28 B.prototype.render();//这样的话通过B函数的原型就能调用A函数的原型方法render了
  29. 29 console.log(b)
  30.  
  31. //总结 在es5中继承无非就是先私有属性的继承 注意通过call和apply改变this指向 接着就是原型的继承了

  其实想要彻底弄清es5的继承可以从原型链上去理解 下面通过几个方法给大家介绍下原型链

  1. //在上面代码的基础上
  2. //在上方代码中A函数没有toString这个函数 假如说我们通过a调用toString这个函数能不能调用到呢
  3. a.toString()
  4. //显而易见 我们能够找到这个函数 为什么呢 因为我们通过a找这个方法时候
  5. //首先系统会先去我们A这个构造函数中去寻找 假如说我们从A中没有找到
  6. //然后接着去A的原型prototype去寻找 如果这里面又没找到接着去找a的__proto__
  7. //如果这个a的__proto__里面没有找到就接着再去__proto__去找 ,顺着proto
  8. //找到最后是null
  9.  
  10. //所以如果我们构造函数中有这个方法的话会先取我们构造函数中的 原型中有的话就去原型找
  11. //都没有才去__proto__找

配张原型链的图片理解下

接下来分享下es6的继承 es6的继承相对来说就简单多了 也更方便初学者使用了

es6的class函数语法类似与构造函数  基本上大同小异

  1. class A{
  2. constructor(){//相当于原型构造函数
  3. this.name="aa";//成员属性或者叫私有属性
  4. this.init()
  5. }
  6. init(){
  7. //这些都是原型方法
  8. //基本上类似构造函数
  9. }
  10. }
  11.  
  12. class的继承
  13. class B extends A{
  14. constructor(){
  15. super(A函数的constructor传的参数)
  16. //super()是一个语法糖 作用是调用父构造函数
  17. //在没有调用super之前this指向不能使用
  18. }
  19. }

浅谈es5和es6中的继承的更多相关文章

  1. 浅谈ES5和ES6继承和区别

    最近想在重新学下ES6,所以就把自己学到的,记录下加强下自己的理解 首先先简单的聊下ES5和ES6中的继承 1.在es5中的继承: function parent(a,b){ this a = a; ...

  2. ES5和ES6中的继承

    看到一篇写的非常好的关于js继承的文章,其中对构造函数.原型.实例之间的关系的描述十分透彻,故转载作者文章以随时学习,并供大家共同进步! ES5 ES5中的继承,看图: function Super( ...

  3. ES5和ES6中的继承 图解

    Javascript中的继承一直是个比较麻烦的问题,prototype.constructor.__proto__在构造函数,实例和原型之间有的 复杂的关系,不仔细捋下很难记得牢固.ES6中又新增了c ...

  4. ES5和ES6中对于继承的实现方法

    在ES5继承的实现非常有趣的,由于没有传统面向对象类的概念,Javascript利用原型链的特性来实现继承,这其中有很多的属性指向和需要注意的地方. 原型链的特点和实现已经在之前的一篇整理说过了,就是 ...

  5. ES5与ES6中的继承

    ES5继承在ES5中没有类的概念,所以一般都是基于原型链继承,具体的继承方法有以下几种: 父类: function Father (name) { this.name = name || 'sam' ...

  6. 浅谈surging服务引擎中的rabbitmq组件和容器化部署

    1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...

  7. 浅谈线程池(中):独立线程池的作用及IO线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-2-dedicate-pool-and-io-pool.html 在上一篇文章中,我们简单讨论了线程池的 ...

  8. 【ASP.NET MVC系列】浅谈NuGet在VS中的运用

    一     概述 在我们讲解NuGet前,我们先来看看一个例子. 1.例子: 假设现在开发一套系统,其中前端框架我们选择Bootstrap,由于选择Bootstrap作为前端框架,因此,在项目中,我们 ...

  9. 浅谈如何检查Linux中开放端口列表

    给大家分享一篇关于如何检查Linux中的开放端口列表的详细介绍,首先如果你想检查远程Linux系统上的端口是否打开请点击链接浏览.如果你想检查多个远程Linux系统上的端口是否打开请点击链接浏览.如果 ...

随机推荐

  1. OmniGraffle教程(二)

    原文链接:简书网 创建一个树形结构图是任何一个作图软件最常用的功能之一了,而OmniGraffle画树形图的快速方便是其他软件无法比拟的,花1分钟即可学会,受益无穷. 方法一:用Diagram工具快速 ...

  2. html5\CSS3有哪些新特性、移除了哪些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分HTML和HTML5?

    (1)HTML5现在已经不是SGML的子集,主要是关于图像,位置,存储,地理定位等功能的增加. 绘画canvas元素: 用于媒介回放的video和audio元素: 本地离线存储localStorage ...

  3. python之路——网络基础

    你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据,你要怎么做 ...

  4. 打通版微社区(3):在Web服务器上部署memcache For DZ3.2

    写在前面:首先这个数据库加速程序的原理,是将数据库内容缓存到Web服务器的内存上,也就是内存换速度.我本次微社区的应用其实应该用不了这个,只是看到好多DZ论坛部署的都安装了这个,我就练手一下以便不时之 ...

  5. POP动画[2]

    POP动画[2] 1:定制控制器间的转场动画. 源码有点多-_-!! // // RootViewController.h // Animation // // Copyright (c) 2014年 ...

  6. Win10开启PIN码使用教程

    很多电脑爱好者对于Win10内置的PIN码功能不太了解,很多朋友都还没有使用.其实,创建PIN码可以提到密码使用,当你登录到Windows和其它应用服务时,可以通过PIN码替代输入账户密码,提升安全性 ...

  7. Maximum Flow and Minimum Cut

    最大流最小割 Introduction Mincut Problem 最小割问题,输入是带权有向图,有一个源点 s(source)和一个汇点 t(target),边的权重在这里称作容量(capacit ...

  8. 异常处理与MiniDump详解(3) SEH(Structured Exception Handling)

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 一.   综述 SEH--Structured Exception Handlin ...

  9. memcached源码剖析5:并发模型

    网络连接建立与分发 前面分析了worker线程的初始化,以及主线程创建socket并监听的过程.本节会分析连接如何建立与分发. 初始状态 A,可以摸清楚master线程的大致逻辑: 1)初始化各个wo ...

  10. python将字符串转变成dict格式

    字符串的内容是字典,需将字符串转变成字典格式 s1 = '{"lid":2,"date":"20190211","type&quo ...