Mentakrifkan Prototaip Javascript: Perbandingan Dua Kaedah
Apabila mentakrifkan prototaip dalam Javascript, pembangun mempunyai dua pilihan utama: menggunakan fungsi bernama ungkapan atau tugasan literal objek. Kaedah ini mempunyai tujuan yang berbeza dan mempunyai implikasi yang berbeza pada pewarisan ahli prototaip.
Pilihan 1: Ungkapan Fungsi Dinamakan
Person.prototype.sayName = function(name) { alert(name); }
Sintaks ini memanjangkan objek prototaip sedia ada dengan menambah harta baharu yang dipanggil sayName. Jika contoh kelas Orang sudah wujud, mereka akan mewarisi kaedah baharu ini. Walau bagaimanapun, ahli prototaip sedia ada kekal tidak terjejas.
Pilihan 2: Tugasan Literal Objek
Person.prototype = { sayName: function(name) { alert(name); } }
Tidak seperti Pilihan 1, kaedah ini menimpa keseluruhan objek prototaip dengan objek baru literal. Akibatnya, mana-mana ahli prototaip sedia ada hilang, termasuk fungsi pembina lalai. Ini boleh membawa kepada tingkah laku yang tidak dijangka jika sudah ada kejadian kelas yang bergantung pada ahli tersebut.
Perbezaan Fungsian
Perbezaan fungsi utama antara kedua-dua kaedah ialah Pilihan itu 1 mengubah suai prototaip semua kejadian sedia ada, manakala Pilihan 2 hanya mempengaruhi kejadian yang dibuat selepas menimpa.
Faedah Memilih Satu Daripada Yang Lain
Pilihan 1 dianggap lebih bersih dan lebih cekap, kerana ia membenarkan sambungan sasaran objek prototaip tanpa mengubah sedia ada ahli. Pilihan 2, sebaliknya, mempunyai risiko menimpa fungsi prototaip penting secara tidak sengaja.
Untuk melanjutkan prototaip asing atau asli, Pilihan 1 disyorkan untuk mengelakkan akibat yang tidak dijangka. Jika sintaks literal objek lebih disukai, Object.assign() atau fungsi utiliti yang serupa boleh digunakan untuk melanjutkan prototaip dengan selamat:
Object.assign(Person.prototype, { sayName: function(name) { alert(name); } });
Atas ialah kandungan terperinci Kaedah Definisi Prototaip Javascript manakah yang Lebih Baik: Ungkapan Fungsi Dinamakan atau Tugasan Literal Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!