ES5和ES6继承有何区别

ES5 是先新建子类的实例对象this,再将父类的属性添加到子类上。

由于父类的内部属性无法获取,导致无法继承原生的构造函数

ES6 是先新建父类的实例对象this,然后再用子类的构造函数修饰this,使得父类的所有行为都可以继承。

ES6 允许继承原生构造函数定义子类
class MyArray extends Array {
    
    
  constructor(...args) {
    
    
    super(...args);
  }
}
var arr = new MyArray();
arr[0] = 12;
arr.length // 1
arr.length = 0;
arr[0] // undefined
上面代码定义了一个MyArray类,继承了Array构造函数,因此就可以从MyArray生成数组的实例。
这意味着,ES6 可以自定义原生数据结构(比如Array、String等)的子类,这是 ES5 无法做到的。

这就使的在es6之中extends关键字不仅可以用来继承类,还可以用来继承原生的构造函数。因此可以在原生数据结构的基础上,定义自己的数据结构。

猜你喜欢

转载自blog.csdn.net/weixin_43131046/article/details/125303536