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, 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.
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.
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.
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!