ES5的继承方法可以看这篇:
https://blog.csdn.net/qq593249106/article/details/83098432

ES5与ES6的继承方法对照:

ES5

function Parent() {this.name = 'parent';this.arr = [1,2,3,4];
}
Parent.prototype.say = function () {console.log('say');
};
function Child(age) {Parent.call(this);this.age = age;
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
var c = new Child(12);
console.log(c.name); //输出parent
c.say(); //输出say
console.log(c.constructor); //输出function Child(age) {Parent.call(this);this.age = age;}
console.log(new Parent().constructor); //输出Parent() {this.name = 'parent';this.arr = [1,2,3,4];}

ES6

class Parent2 {constructor() {this.name = 'parent';}
}
Parent2.prototype.say = function () {console.log('say');
};
class Child2 extends Parent {constructor(age) {super();this.age = age;}
}
var c2 = new Child2(12);
console.log(c2.name); //输出parent
c2.say(); //输出say
console.log(c.constructor); //输出function Child(age) {Parent.call(this);this.age = age;}
console.log(new Parent().constructor); //输出Parent() {this.name = 'parent';this.arr = [1,2,3,4];}

ES5的继承实质上是先创建子类的实例对象,然后再将父类的方法添加到this上(Parent.apply(this)),然后再把原型链继承。

ES6的继承机制完全不同,实质上是先创建父类的实例对象this(所以必须先调用父类的super()方法,才可使用this关键字,否则报错。),然后再用子类的构造函数修改this实现继承。

ES5和ES6继承的区别相关推荐

  1. es5和es6声明类的区别/es5和es6继承的区别

    // es5和es6声明类的区别,es5没有统一语法规范.es6有统一写法规范 start. // es5声明"类"的语法--伪类 // function Person(name, ...

  2. JS面试题--ES5和ES6有什么区别?

    ES5和ES6有什么区别? ES6新增了一些技术: 1.let声明变量和const声明常量,两个都有块级作用域ES5中是没有块级作用域的,并且var有变量提升,在let中,使用的变量一定要进行声明 2 ...

  3. ES5继承和ES6继承的区别

    ES5的继承:实质是先 创造 子类的实例对象this,然后再将父类实的方法添加到this上( Parent.apply(this) ) function Parent(name){this.name ...

  4. ES5 和ES6 继承机制

    为什么80%的码农都做不了架构师?>>>    ES5 的继承,实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面(Parent.apply(this)).ES ...

  5. ES5、ES6 继承

    es5继承类型: 原型链继承:让构造函数的原型指向父类的实例,缺点是子类没有办法构建私有属性,对一个子类实例的属性进行更改,会改变所有子类的实例 function Parent(){this.name ...

  6. ES5和ES6继承有何区别

    ES5 是先新建子类的实例对象this,再将父类的属性添加到子类上. 由于父类的内部属性无法获取,导致无法继承原生的构造函数 ES6 是先新建父类的实例对象this,然后再用子类的构造函数修饰this ...

  7. es5 vs es6 继承

    ES5 继承 借助构造函数继承(call, apply);无法继承父级原型上属性和方法 function Animal(name, txt) {console.log('构造函数:Animal', t ...

  8. JavaScript 中的 require / exports、import / export、浅谈JavaScript、ES5、ES6

    Node.js 的基础教学 之 exports 和 module.exports:https://zhuanlan.zhihu.com/p/82057593 浅谈 JavaScript.ES5.ES6 ...

  9. 常用浏览器内核的了解、ES5和ES6的区别、ES6的更新的笔试题

    对浏览器的内核的了解?有哪些内核?(重点6分) 浏览器要渲染出网页给用户看,必须加载html编码和js脚本,渲染引擎渲染页面的UI和js执行引擎操作内存,就是浏览器的的重要组成程序:内核 根据不同的浏 ...

最新文章

  1. java关键字和保留字整合(不定期补充) 转自小码哥
  2. CentOS7.2 开启内网转发
  3. 表情显示服务器异常,MySqlmoji表情引发的存储异常微信昵称
  4. 子串字谜substring anagrams
  5. JS魔法堂:彻底理解0.1 + 0.2 === 0.30000000000000004的背后 1
  6. [hackinglab][CTF][上传关][2020] hackinglab 上传关 writeup
  7. 20135320赵瀚青LINUX内核分析第一周学习笔记
  8. 计算机二合一二级基础知识软件,全国计算机等级考试笔试+上机题库二合一二级Visual FoxPro...
  9. STL标准模版库---set操作
  10. 明解C语言第三章习题
  11. 领克01、领克02、领克03,百度地图新系统安装第三方软件教程
  12. 三自由度机械臂的三维设计
  13. ScreenToClient和ClientToScreen
  14. 计算机新建里没有word,电脑鼠标右键没有新建Word选项怎么办?
  15. 全国青少年计算机考试官网,全国青少年计算机考试开考 每年组织四次
  16. 火车采集 PHP插件 post,火车采集器2010版PHP插件增加扩展的方法
  17. 最激励人心\作为一个程序员
  18. PE文件中对DOS存根的一些想法
  19. 64位 regsrv win10_win10 专业版 64位 系统 频繁蓝屏,MEMORY_MANAGEMENT - Microsoft Community...
  20. What's the difference between Atomic and Ordinary database engine

热门文章

  1. 国产ssh连接工具FinalShell简单的使用教程
  2. Android自动手绘,Android应用开发之Android 实现手绘功能教程
  3. RSA生成公钥与私钥
  4. 田野调查手记·浮山篇(二)
  5. CentOs7安装Vim
  6. 世界上第一根光纤,是谁造出来的?
  7. Core系统部署IIS报错
  8. 数据库多表查询 myBatis四表联查
  9. 进入AI领域做产品 —— 我的自学之路(CV-人脸识别)
  10. 林轩田机器学习基石笔记3—Types of Learning