存在的差异:
1. 私有数据继承差异
  es5:执行父级构造函数并且将this指向子级
  es6:在构造函数内部执行super方法,系统会自动执行父级,并将this指向子级
2. 共有数据(原型链方法)继承的差异
  es5:子级原型链上的赋值,继承父级原型链上数据
  es6:extend 父级,会自动将父级原型链上的数据给子级
3. 原型链上的共有数据是否可枚举for in
  es5:可以枚举
  es6:不可枚举
4. 构造函数的指向
  es5:需要改变constructor的指向
  es6:不需要改
5. 静态方法的写法差异
  es5:直接在构造函数.静态方法
  es6:static a=1;静态方法——浏览器不支持,要用bable
6. 实例_proto_的指向差异
  es5:ƒ Child5(name)
  es6:class Child6

es6的优点:

  Class在语法上面更加贴近面向对象的写法;

  Class实现继承更加易读、易理解;

  更易于写Java后端等语言的使用;

  ****本质还是语法糖,使用prototype。

es5的方法

    //父级
function Parent5(name) {//构造函数
this.name=name;//私有数据
}
Parent5.prototype.say=function () {//公共数据
console.log(this.name);
}
//子级
function Child5(name) {//构造函数
Parent5.call(this,name)//执行父级的构造函数,并将this指向子级
}
Child5.prototype=new Parent5;//将父级原型上的共有数据给自己
Child5.prototype.constructor=Child5;//改变constructor的指向问题
Child5.prototype.buy=function () {
console.log('buy');
}
var c5=new Child5('邵');//实例
c5.say()//邵
c5.buy()//buy

es6的方法

    //父级
class Parent6{//类
constructor(name){//构造函数
this.name=name;
}
say(){
console.log(this.name);
}
}
class Child6 extends Parent6{//将父级原型上的共有数据给自己
constructor(name){
super(name);//执行父级的构造函数,并将this指向子级
}
buy(){
console.log('buy')
}
}
var c6=new Child6('邵');
c6.say()//邵
c6.buy()//buy

js类的继承,es5和es6的方法的更多相关文章

  1. js类式继承模式学习心得

    最近在学习<JavaScript模式>,感觉里面的5种继承模式写的很好,值得和大家分享. 类式继承模式#1--原型继承 方法 让子函数的原型来继承父函数实例出来的对象 <script ...

  2. JS创建对象、继承原型、ES6中class继承

    面向对象编程:java中对象的两个基本概念:1.类:类是对象的模板,比如说Leader 这个是泛称领导,并不特指谁.2:实例:实例是根据类创建的对象,根据类Leader可以创建出很多实例:liyi,y ...

  3. 精读JavaScript模式(八),JS类式继承

    一.前言 这篇开始主要介绍代码复用模式(原书中的第六章),任何一位有理想的开发者都不愿意将同样的逻辑代码重写多次,复用也是提升自己开发能力中重要的一环,所以本篇也将从“继承”开始,聊聊开发中的各种代码 ...

  4. js类(继承)(二)

    1. 定义js类 js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Sh ...

  5. js类的继承

    1.类式继承 首先要做的是创建构造函数.按惯例,其名称就是类名,首字母应该大写.在构造函数中,创建实例属性要用关键字this .类的方法则被添加到prototype对象中.要创建该类的实例,只需结合关 ...

  6. JS 类和继承

    function User(name, pass) { this.name = name this.pass = pass } User.prototype.showName = function ( ...

  7. js类(继承)(一)

    //call() //调用一个对象的一个方法,以另一个对象替换当前对象. //call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) //参数 //thisObj / ...

  8. ES5和ES6数组方法

    ES5 方法 indexOf和lastIndexOf 都接受两个参数:查找的值.查找起始位置不存在,返回 -1 :存在,返回位置.indexOf 是从前往后查找, lastIndexOf 是从后往前查 ...

  9. js原生设计模式——2面向对象编程之继承—new类式继承

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

随机推荐

  1. codeblock不能调试

    问题:codeblock  不能调试,如下图: 解决方法: 首先,项目的保存路径不能是中文路径. 其次,必须创建工程. 最后,build选项里select target选成debug codebloc ...

  2. Android : Android Studio 更新至gradle 4.10.1后Variants API变化

    同步警告: WARNING: API 'variantOutput.getPackageApplication()' is obsolete and has been replaced with 'v ...

  3. box-sizing的用法

        默认情况下设置盒子的width是指内容区域,所以在设置边框会使得盒子往外扩张,如果要让css设置的width就是盒子最终的宽度,那么就要设置box-sizing:border-box,     ...

  4. 5.使用std的迭代器访问并修改图像

    void Test_ColorReduceByIterator() { Mat g_srcImage=imread("D:\\OpenCV Projects\\OpenCV_Test_Ima ...

  5. Element UI样式无法修改解决方法。

    最近在做的项目中要用到Element UI组件来写,非常方便,但毕竟Element UI是有它自己的默认样式的,并不是客户所要求的,但就在我想要修改样式时遇到了棘手的问题. 如何引入和使用 Eleme ...

  6. Eclipse 护眼背景色设置

    链接地址:http://blog.chinaunix.net/uid-27183448-id-3509010.html 背景颜色推荐:色调:85,饱和度:123,亮度:205  文档都不再是刺眼的白底 ...

  7. Selenium - 搭建环境

    1. 在Python中安装第三方库 1)安装Selenium 通过pip安装   2). 下载geckodriverckod 从selenium3开始,webdriver/firefox/webdri ...

  8. hive入门学习线路指导

    hive被大多数企业使用,学习它,利于自己掌握企业所使用的技术,这里从安装使用到概念.原理及如何使用遇到的问题,来讲解hive,希望对大家有所帮助.此篇内容较多:看完之后需要达到的目标1.hive是什 ...

  9. 学习笔记TF029:实现进阶卷积网络

    经典数据集CIFAR-10,60000张32x32彩色图像,训练集50000张,测试集10000张.标注10类,每类图片6000张.airplance.automobile.bird.cat.deer ...

  10. [R] t.test()

    t.test(x, y = NULL, alternative = c("two.sided", "less","greater"), mu ...