每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,实例都包含一个指向原型对象的内部指针。 ----《JavaScript高级程序设计》

那么,这么理解这句话呢?

其实其中想告诉我们的就是,每一个构造函数中都有一个指针(prototype)指向它的原型对象,每一个原型对象中都有一个指针(constructor)指向它的构造函数,每一个实例对象中都有一个指针(__protot__)指向它的原型对象。

我想,如果光是靠文字的说明还是无法直观的描述他们三者之间的关系的,那么,接下来直接上图

从图中可以清晰地得知:

1.在构造函数Object中有一个prototype指针,它指向了它的原型对象 Object.prototype,写在构造函数中的是静态属性和静态方法,只能由构造函数本身调用。

2.在原型对象Object.prototype中,有一个指针constructor指向它的构造函数Object,写在原型对象中的是实例属性和实例方法,它可以通过原型对象本身调用或者通过实例对象调用。

3.在实例对象中,有一个__proto__指针,指向它的原型对象Object.prototype,实例对象可以调用继承自原型对象的实例属性和实例方法。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐