最近貌似对这三者的关系豁然开朗,茅塞顿开了。通过一个工厂生产汽车的例子来说明以上三者的关系。
构造函数类似汽车工厂的生产车间或叫构造车间,用来构造汽车,汽车在量产之前一般都是有个原型车(原型对象),真正下线的量产车(实例对象)一般都是在这个原型车(原型对象)的基础上经过修改产生的。因此,这里的原型车类似于构造函数的原型对象。这里的量产车可以看做是实例对象。
从以上可以看出,
构造车间(构造函数)使用原型车(原型对象)作为模板生产量产车(实例对象)。
实际上记住这句话就足够了,可以得出
1. 构造车间有对应的原型车可用
构造车间.prototype === 原型车
也就是:
构造函数.prototype === 原型对象
2.原型车有它对应的构造车间,即
原型车.constructor === 构造车间
也就是:
原型对象.constructor === 构造函数
3.量产车有对应的原型车,即
量产车.__proto__ === 原型车
也就是:
实例对象.__proto__ === 原型对象
再结合第一条,得出:
量产车.__proto__ === 构造车间.prototype
也就是
实例对象.__proto__ === 构造函数.prototype