Bagaimanakah kita boleh menentukan pembolehubah kelas dalam ES6 tanpa sokongan asli?

Linda Hamilton
Lepaskan: 2024-11-24 09:48:10
asal
701 orang telah melayarinya

How can we define class variables in ES6 without native support?

Alternatif Pembolehubah Kelas ES6

Dalam ES5, pembolehubah kelas biasanya ditakrifkan menggunakan corak FrameWork.Class(). Walau bagaimanapun, dalam ES6, pengisytiharan kelas tidak menyokong pembolehubah kelas secara asli.

Mengapa Peninggalan?

Ketiadaan pembolehubah kelas dalam ES6 adalah disengajakan. TC39 bertujuan untuk memisahkan perisytiharan kelas daripada definisi ahli. Takrifan kelas harus mentakrifkan keupayaan kelas, manakala ahli (kedua-dua pembolehubah dan kaedah) harus ditakrifkan di tempat lain.

Alternatif Pembina

Satu pilihan untuk mentakrifkan pembolehubah kelas ialah menetapkannya dalam pembina:

constructor() {
    this.MY_VAR = true;
}
Salin selepas log masuk

Walau bagaimanapun, ini boleh mengacaukan pembina, terutamanya dengan banyak kelas parameter.

Cadangan ES7

Ciri ES7 yang dicadangkan, "Property Initializers," menyediakan sintaks yang lebih ringkas untuk mentakrifkan pembolehubah contoh dalam pengisytiharan dan ungkapan kelas:

class MyClass {
    foo = bar;
}
Salin selepas log masuk

Pengendali Konfig Kelas

Pendekatan alternatif ialah mencipta konfigurasi kelas pengendali yang melampirkan pembolehubah pada kelas semasa permulaan. Contohnya, menggunakan WeakMap:

const classConfig = new WeakMap();
class ConfiguredClass {
    constructor() {
        const config = classConfig.get(this.constructor);
        if (config) {
            for (const [key, value] of Object.entries(config)) {
                this[key] = value;
            }
        }
    }
}

class MyConfiguredClass extends ConfiguredClass {}
classConfig.set(MyConfiguredClass, {
    variable: 'string',
    variable2: true
});
Salin selepas log masuk

Sokongan Babel dan TypeScript

Babel dan TypeScript kedua-duanya menyediakan sintaks untuk menentukan pembolehubah kelas:

// Babel
class MyClass {
    varName = value;
}

// TypeScript
class MyClass {
    varName: string = value;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah kita boleh menentukan pembolehubah kelas dalam ES6 tanpa sokongan asli?. 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