Rumah  >  Artikel  >  hujung hadapan web  >  Gotcha dengan Contoh Kelas Tanpa Nama: Bila dan Bagaimana untuk Mengelakkan Perangkap JavaScript ini?

Gotcha dengan Contoh Kelas Tanpa Nama: Bila dan Bagaimana untuk Mengelakkan Perangkap JavaScript ini?

Patricia Arquette
Patricia Arquetteasal
2024-10-20 12:34:30830semak imbas

Gotcha with Anonymous Class Instances: When and How to Avoid this JavaScript Pitfall?

Instance Kelas Tanpa Nama: Satu Perangkap dalam JavaScript

Dalam ES6, pengaturcara boleh mentakrifkan kelas tanpa nama dengan kata kunci kelas dan serta-merta membuat seketika mereka dengan operator baharu:

<code class="javascript">var entity = new class {
    constructor(name) { this.name = name; }
    getName() { return this.name; }
}('Foo');</code>

Walaupun ini kelihatan mudah, adalah penting untuk memahami gelagat asas dan potensi kelemahannya.

Di Sebalik Tabir

Di sebalik tabir, ekspresi kelas baharu mencipta pembina baharu fungsi dan objek prototaip setiap kali ia dinilai. Ini tidak seperti pengisytiharan kelas biasa, yang mentakrifkan satu pembina dan prototaip yang dikongsi antara semua kejadian.

Kaveat

a. Penggunaan Memori Berlebihan:

Dengan instantiasi segera, pembina dan prototaip baharu dicipta setiap kali objek dicipta menggunakan ungkapan kelas baharu. Ini boleh menyebabkan penggunaan ingatan yang tidak perlu, terutamanya jika banyak objek dibuat seketika.

b. Kekurangan Warisan:

Objek yang dibuat menggunakan corak kelas baharu tidak diwarisi daripada pembina induk atau berkongsi prototaip biasa. Oleh itu, mereka kehilangan faedah kelas, seperti warisan, penggunaan semula kaedah dan polimorfisme.

Salah Tanggapan Objek Tunggal

Sesetengah pembangun mungkin menggunakan corak ini untuk mencipta objek tunggal, tetapi ia tidak berkesan. Fungsi pembina masih boleh diakses dan contoh kedua boleh dibuat menggunakan entity.constructor baharu, menentang tujuan tunggal.

Syor Pengelakan

Disebabkan kelemahan ini, sangat dinasihatkan supaya tidak menggunakan corak kelas baharu. Sebaliknya, pilih literal objek tradisional untuk kesederhanaan, kebolehbacaan dan kecekapan instantiasi:

<code class="javascript">var entity = {
    name: 'Foo',
    getName() { return this.name; }
};</code>

Atas ialah kandungan terperinci Gotcha dengan Contoh Kelas Tanpa Nama: Bila dan Bagaimana untuk Mengelakkan Perangkap JavaScript ini?. 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