1. Object.getPrototypeOf 可以从子类上获取父类
class A{
}
class B extends A{
}
console.log(Object.getPrototypeOf(B) === A) // true2. __proto__ 和constructor 是对象所特有的,prototype是函数所特有的,但是js中函数也是对象,所以函数也有 __proto__和constructor
3. 当存在继承的时候 有两条继承链
(1)子类的__proto__属性表示构造函数的继承,总是指向父类
(2)子类prototype属性的__proto__属性表示方法的继承,总是指向父类prototype
原型链继承 :
B.prototype = Object.create(A.prototype)
等同于 B.prototype.__proto__ = A.prototype
两种情况
(1)子类继承Object
class A extends Object{}A是构造函数Object的复制,A的实例就是Object实例
(2)不存在继承
class A{}
A.__proto__ === Function.prototype
A.prototype.__proto__ === Object.prototypeA作为基类(就是个普通函数),直接继承Function.prototype
A.prototype.__proto__指向构造函数(Object)的prototype属性
4. 实例的__proto__属性 子类原型的原型指向父类的原型
B 继承 A
let a = new A()
let b = new B()
b.__proto__.__proto__ === a.__proto__
b.__proto_ 其实是B.prototype a.__proto__其实是A.prototype