function Gadget(name,color){
this.name=name;
this.color=color;
this.whatAreYou=function(){
return 'I am a ' + this.color + ' ' + this.name;
};
}
Gadget.prototype={
price:100,
rating:3,
getInfo:function(){
return 'Rating: ' + this.rating + ', price: ' + this.price;
}
};
var newtoy=new Gadget('webcam','black');
new.rating;//3
newtoy.constructor === Gadget;//true
上述例子摘自《物件導向程式設計指南》一書
如果程式碼沒寫錯的話,那麼就是false,因為你已經把Gadget的原型物件給重寫了,而你重寫的原型物件中沒有constructor屬性,可以參考一下《JavaScript高階程式設計》中第六章關於原型的介紹
樓上正解,Gadget.prototype 被重寫了。因為原型物件中有個隱式的constructor,指向了建構子本身。如下:
原型拓展,最好寫成這種形式:
或使用Object.assign()合併物件: