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
L'exemple ci-dessus est tiré du livre "Guide de programmation orientée objet"
Si le code est écrit correctement, alors il est faux, car vous avez réécrit l'objet prototype de Gadget et l'objet prototype que vous avez réécrit n'a pas d'attribut constructeur. Vous pouvez vous référer au chapitre 6 de "Programmation avancée JavaScript" Introduction à. prototype
La bonne réponse à l'étage, Gadget.prototype a été réécrit. Parce qu'il existe un constructeur implicite dans l'objet prototype, qui pointe vers le constructeur lui-même. Comme suit :
L'expansion du prototype est mieux écrite sous cette forme :
Ou utilisez Object.assign() pour fusionner des objets :