Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menghidupkan Objek Secara Dinamik dalam JavaScript ES6?

Bagaimana untuk Menghidupkan Objek Secara Dinamik dalam JavaScript ES6?

Linda Hamilton
Lepaskan: 2024-12-05 11:18:14
asal
981 orang telah melayarinya

How to Dynamically Instantiate Objects in JavaScript ES6?

Pemasangan Objek Dinamik dalam JavaScript ES6

Pernyataan Masalah

Mencipta objek daripada nama kelas menggunakan sintaks gaya lama dalam ES6 menyebabkan ralat. Kod berikut menimbulkan ralat:

let className = this.specColumn[name] ? this.specColumn[name] : this.specColumn['__default'];
return new window[className](name);
Salin selepas log masuk

Penyelesaian

Untuk menyelesaikan isu, alih keluar nama kelas daripada objek yang ditentukan dan sebaliknya gunakan kelas itu sendiri. Ini menghapuskan pergantungan pada akses global melalui objek tetingkap. Selain itu, kilang boleh dipermudahkan kepada objek, kerana ia biasanya dibuat seketika sahaja.

Pembetulan Kod

export class Column {}
export class Sequence {}
export class Checkbox {}

export const columnFactory = {
    specColumn: {
        __default: Column,    // <-- Class reference
        __sequence: Sequence, // <-- Class reference
        __checkbox: Checkbox  // <-- Class reference
    },
    create(name, ...args) {
        let cls = this.specColumn[name] || this.specColumn.__default;
        return new cls(...args);
    }
};
Salin selepas log masuk

Kod ini menyimpan kelas terus dalam objek specColumn, membolehkan dinamik instantiasi objek menggunakan kaedah cipta.

Atas ialah kandungan terperinci Bagaimana untuk Menghidupkan Objek Secara Dinamik dalam JavaScript ES6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan