JavasSript Prototype对象的初始值

Javascript prototype的初始值在Object-Oriented Javascript 这本书第五章中提到:

prototype is a property that gets created as soon as you define the function.It’s initial value is a empty object

这句话应该是错误的。prototype的初始值并不是一个空的对象,而是包含了constructor这个属性,值既指向构造函数:

1
2
function Func(){}
console.log(Func.prototype.hasOwnProperty('constructor')); // 输出true`

这样,后面的Own Properties versus prototype Properties小节的代码才能够说的通:

1
2
newtoy.constructor // 输出Gadget(name, color)
newtoy.constructor.prototype.constructor // 输出Gadget(name, color)

Gadget.prototype是一个普通的对象,那么这个对象的constructor默认应该是指向Object()
然而因为prototype拥有一个constructor的自身属性,也就是prototype.hasOwnProperty('constructor')true,从而覆盖掉由继承而来的constructor值。

0%