Maison  >  Questions et réponses  >  le corps du texte

Pourquoi newtoy.constructor === Gadget génère-t-il une console fausse ?

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"

怪我咯怪我咯2646 Il y a quelques jours830

répondre à tous(2)je répondrai

  • 欧阳克

    欧阳克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

    répondre
    0
  • typecho

    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() {
            ...
        }
    })

    répondre
    0
  • Annulerrépondre