Kasus di mana metode ditulis dalam konstruktor disebut sebagai metode dalam fungsi, dan kasus di mana metode ditulis pada atribut prototipe disebut sebagai metode pada prototipe.
• Metode dalam fungsi: Menggunakan metode dalam fungsi, kita dapat mengakses variabel pribadi di dalam fungsi. Jika objek kami menggunakan konstruktor baru untuk meminta kami mengoperasikan variabel pribadi di dalam konstruktor, kami harus mempertimbangkan untuk menggunakan metode dalam fungsi saat ini.
• Metode pada prototipe: Ketika kita perlu membuat sejumlah besar objek melalui fungsi, dan objek ini memiliki banyak metode; Pada saat ini, kita perlu mempertimbangkan untuk menambahkan metode ini ke prototipe fungsi. Dalam hal ini, kode kami akan mengkonsumsi memori yang relatif kecil.
• Dalam aplikasi aktual, kedua metode ini sering digunakan dalam kombinasi; Jadi kita harus terlebih dahulu memahami apa yang kita butuhkan, dan kemudian memilih cara menggunakannya.
// afungsi konstruktor a (name) {this.name = name || 'A'; this.sayhello = function () {console.log ('halo, nama saya:' + this.name); }} // konstruktor bfunction b (name) {this.name = name || 'b';} b.prototype.sayhello = function () {console.log ('halo, nama saya adalah:' + this.name);}; var a1 = baru a ('a1'); var a2 = new a ('a2'); a1.sayhello (); a2.sayhello (); var b (); a1. B ('b2'); b1.sayhello (); b2.sayhello ();Saya menulis dua konstruktor, yang pertama adalah A, yang berisi metode Sayshello; Yang kedua adalah Konstruktor B, yang menulis bahwa metode Sayshello pada properti prototipe konstruktor B. Menulis metode di dalam konstruktor meningkatkan biaya menginisialisasi objek melalui konstruktor, dan menulis metode pada properti prototipe secara efektif mengurangi biaya ini. Anda mungkin berpikir bahwa metode panggilan pada objek jauh lebih cepat daripada metode panggilan pada rantai prototipe, yang tidak terjadi. Jika Anda tidak memiliki banyak prototipe pada objek, kecepatannya sebenarnya serupa.
Selain itu, beberapa hal yang perlu diperhatikan:
• Pertama -tama, jika Anda mendefinisikan metode pada properti prototipe fungsi, ingat bahwa jika Anda mengubah metode, metode semua objek yang dihasilkan oleh konstruktor ini akan diubah.
• Poin lain adalah masalah peningkatan variabel. Kita dapat melihat kode berikut:
func1 (); // Kesalahan akan dilaporkan di sini karena Func1 belum diberi nilai ketika fungsi dieksekusi. Kesalahan: func1 bukan functionVar func1 = function () {console.log ('func1');}; func2 (); // Ini akan dieksekusi dengan benar karena deklarasi fungsi akan dipromosikan.Function func2 () {console.log ('func2');}• Mengenai masalah serialisasi objek. Atribut yang didefinisikan pada prototipe suatu fungsi tidak akan diserialisasi. Anda dapat melihat kode berikut:
fungsi a (name) {this.name = name;} a.prototype.saywhat = 'katakan apa ...'; var a = baru a ('dreamapple'); console.log (json.stringify (a));Kita dapat melihat bahwa outputnya adalah {"name": "DreamApple"}
Artikel di atas secara singkat membahas metode dan prototipe konstruktor JS adalah semua konten yang telah saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.