JS的原型与原型链是什么?
推荐
在线提问>>
JS的原型与原型链
每一个对象实例都有自己对应的构造器, 对应的构造器都拥有一个prototype的属性, 值为一个plain object,这就是 构造器的原型,而且对象实例的proto属性也指向构造器的原型:
a.__proto__ === A.prototype
所以构造器原型上的属性方法是可以被对象实例访问到。
因为每一个构造器是prototype原型都是一个对象,理论上来说,这个原型对象也可能是另一个构造器的实例,这样就形成了一条原型的链,在原型链上的实例对象,是可以访问到上级原型对象上的属性方法, 原型链的顶层是Object
function B() {}
B.prototype = {}
function A() {}
const b = new B()
A.prototype = b
const a = new A()
a.__proto__ === A.prototype = b
b.__proto__ === B.prototype === {}
a.__proto__.__proto__ === {}