js中的原型链

每一个构造函数中都含有prototype原型对象,这个对象包含了constructor和__proto__。


constructor,人如其名,里面的value当然是是构造函数的函数体。
__proto__则指向objcet构造函数的prototype原型对象
(结果为true)
所以能证明构造函数Star的 prototype原型对象指向object构造函数的prototype原型对象。
object构造函数中也有prototype原型对象,它也包含了constructor和__proto__。
根据第一个图所述,object构造函数的protype指向谁呢?指向null。
有一个有意思的情况就是“我老子的老子还是我老子”。
var 一个实例对象liudehua

按照惯性思维来说,实例对象中的__proto__一定是指向Star构造函数的prototype原型对象,可是结果却指向了Object

说明new Star(’ldh‘,30)生成的是一个对象,对象统一继承于Object。
虽然ldh实例有了Star的函数体,但ldh实例的却有两个父亲,一个Star隐形父亲,一个Object不隐型父亲。恰好object还是Star的父亲,您说奇葩不奇葩。
所以才有了段子一般有趣的说法“我爸爸的爸爸还是我爸爸"。
浙公网安备 33010602011771号