Rumah  >  Soal Jawab  >  teks badan

javascript - Adakah masalah prototaip lagi?

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!

怪我咯怪我咯2684 hari yang lalu489

membalas semua(3)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:32:56

    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.

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

    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.

    balas
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:32:56

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

    balas
    0
  • Batalbalas