Maison > Questions et réponses > le corps du texte
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"
欧阳克2017-06-26 10:59:07
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
typecho2017-06-26 10:59:07
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 :
Test.prototype.newFn = function() {
...
}
Ou utilisez Object.assign() pour fusionner des objets :
Test.prototype = Object.assign(Test.prototype, {
newAttr: '',
newFn: function() {
...
}
})