class A {}
class B extends A {}
const a1 = new A()
const b1 = new B()
console.log(typeof A) // function
console.log(A === A.prototype.constructor)
console.log(B.__proto__ === A) // true
console.log(B.prototype.__proto__ === A.prototype) // true
console.log(b1.__proto__.__proto__ === a1.__proto__)
子类B的__proto__属性指向父类A,子类B的prototype属性的__proto__属性指向父类A的prototype属性.
类的继承是按照下面的模式实现的
class A {}
class B {}
// B 的实例继承 A 的实例
Object.setPrototypeOf(B.prototype, A.prototype);
// B 继承 A 的静态属性
Object.setPrototypeOf(B, A);
Object.setPrototypeOf = function (obj, proto) {
obj.__proto__ = proto;
return obj;
}