Rumah >hujung hadapan web >tutorial js >Kaedah Definisi Prototaip Javascript manakah yang Lebih Baik: Ungkapan Fungsi Dinamakan atau Tugasan Literal Objek?

Kaedah Definisi Prototaip Javascript manakah yang Lebih Baik: Ungkapan Fungsi Dinamakan atau Tugasan Literal Objek?

DDD
DDDasal
2024-11-27 01:19:11776semak imbas

Which Javascript Prototype Definition Method is Better: Named Function Expression or Object Literal Assignment?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn