javascript - Adakah masalah prototaip lagi?
怪我咯
怪我咯 2017-05-19 10:30:56
0
3
501

Saya tidak faham apakah perbezaan penting antara dua cara penulisan berikut?

function Person() {
}

Person.prototype.age = function(n) {
    return n;
}
var person = new Person();
person.age(9);

Kaedah penulisan di atas menggunakan prototaip untuk membenarkan objek yang di instantiated memanggil fungsi kelas induk.

Kaedah berikut tidak melepasi prototaip, tetapi ia betul-betul sama dalam penggunaan.

function Person() {
    this.age = function(n) {
        return n;
    }
}
var person = new Person();
person.age(9);

Jadi dalam aspek apakah kedua-duanya boleh dibandingkan? Mohon nasihat, terima kasih!

怪我咯
怪我咯

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

membalas semua(3)
过去多啦不再A梦

Terdapat perbezaan dalam penjimatan memori

  • Cara pertama ialah definisi prototye Semua keturunan berkongsi definisi kaedah dan hanya menduduki satu ruang dalam ingatan Tidak kira berapa banyak kejadian yang anda buat, kaedah umur semua kejadian menunjukkan alamat memori ini.

  • Kaedah kedua ditakrifkan dalam pembina Setiap kali tika dibuat, takrifan kaedah umur akan memperuntukkan ruang yang eksklusif untuk tika itu. Apabila lebih banyak kejadian dicipta, ingatan meningkat secara berkadar.

Ringkasnya, jika ia kaedah biasa, sila masukkan ke dalam prototaip.

習慣沉默

Cara penulisan kedua ialah corak konstruktor, yang mudah digunakan, tetapi masalah utama kaedah ini ialah setiap kaedah mesti dicipta semula pada setiap contoh.
Pendekatan corak prototaip pertama menyelesaikan masalah ini dengan membenarkan semua kejadian objek berkongsi sifat dan kaedah yang terkandung di dalamnya.

習慣沉默

Ringkasnya, fungsinya adalah sama, kecuali dalam kebanyakan kes kaedah ditulis dalam prototaip dan sifat ditulis dalam pembina, jadi kaedah pertama lebih biasa digunakan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!