Rumah  >  Soal Jawab  >  teks badan

Mengapa newtoy.constructor === Alat menghasilkan konsol palsu?

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

Contoh di atas diambil dari buku "Panduan Pengaturcaraan Berorientasikan Objek"

怪我咯怪我咯2695 hari yang lalu880

membalas semua(2)saya akan balas

  • 欧阳克

    欧阳克2017-06-26 10:59:07

    Jika kod ditulis dengan betul, maka ia adalah palsu, kerana anda telah menulis semula objek prototaip Alat, dan objek prototaip yang anda tulis semula tidak mempunyai atribut pembina Anda boleh merujuk kepada Bab 6 "Pengaturcaraan Lanjutan JavaScript". prototaip

    balas
    0
  • typecho

    typecho2017-06-26 10:59:07

    Jawapan yang betul di tingkat atas, Gadget.prototype telah ditulis semula. Kerana terdapat pembina tersirat dalam objek prototaip, yang menunjuk kepada pembina itu sendiri. Seperti berikut:

    Peluasan prototaip paling baik ditulis dalam bentuk ini:

    Test.prototype.newFn = function() {
        ...
    }

    Atau gunakan Object.assign() untuk menggabungkan objek:

    Test.prototype = Object.assign(Test.prototype, {
        newAttr: '',
        newFn: function() {
            ...
        }
    })

    balas
    0
  • Batalbalas