欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6中Class的继承关系

程序员文章站 2022-07-13 09:12:53
...

es5实现中,每个对象都有__proto__属性(也就是关系图中[[prototype]]属性),指向对应的构造函数的prototypeClass 作为构造函数的语法糖,同时有prototype属性和__proto__属性,因此同时存在两条继承链。

  1. 子类的__proto__属性,表示构造函数的继承,总是指向父类
  2. 子类prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype
class A{
 constructor(){
   this.name = 'A';
   this.x = 1;
 }
 sayName(){
  console.log(this.name);
 }
};
class B extends A{
 constructor(){
   super();
   this.name = 'B';
   this.y = 1;
 }
 printY(){
  console.log(this.y);
 }
}
var a = new A();
var b = new B();

关系图:
ES6中Class的继承关系