chaihongjun.me

javascript中构造函数,原型对象,实例对象三者之间的关系

最近貌似对这三者的关系豁然开朗,茅塞顿开了。通过一个工厂生产汽车的例子来说明以上三者的关系。


构造函数类似汽车工厂的生产车间或叫构造车间,用来构造汽车,汽车在量产之前一般都是有个原型车(原型对象),真正下线的量产车(实例对象)一般都是在这个原型车(原型对象)的基础上经过修改产生的。因此,这里的原型车类似于构造函数的原型对象。这里的量产车可以看做是实例对象。


从以上可以看出,

构造车间(构造函数)使用原型车(原型对象)作为模板生产量产车(实例对象)。

实际上记住这句话就足够了可以得出

1. 构造车间有对应的原型车可用

构造车间.prototype === 原型车

也就是:

构造函数.prototype === 原型对象

2.原型车有它对应的构造车间,即

原型车.constructor === 构造车间

也就是:

原型对象.constructor === 构造函数

3.量产车有对应的原型车,即

量产车.__proto__  === 原型车

也就是:

实例对象.__proto__  === 原型对象

再结合第一条,得出:

量产车.__proto__ === 构造车间.prototype

也就是

实例对象.__proto__ === 构造函数.prototype





知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:chaihongjun»