Mengapa newtoy.constructor === Alat menghasilkan konsol palsu?
怪我咯
怪我咯 2017-06-26 10:57:07
0
2
910
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"

怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(2)
学霸

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

typecho

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() {
        ...
    }
})
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan