Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mencipta Objek JavaScript dengan Nama Harta Dinamik?

Bagaimana untuk Mencipta Objek JavaScript dengan Nama Harta Dinamik?

Susan Sarandon
Susan Sarandonasal
2024-12-03 12:35:11130semak imbas

How to Create JavaScript Objects with Dynamic Property Names?

Mencipta Objek dengan Nama Harta Dinamik

Dalam JavaScript, objek biasanya ditakrifkan menggunakan pasangan nilai kunci literal. Walau bagaimanapun, terdapat keadaan di mana anda mungkin menghadapi senario di mana nama harta adalah dinamik atau tidak diketahui pada masa penciptaan objek. Ini boleh dicapai melalui penggunaan notasi kurungan.

Masalah:

Pertimbangkan coretan kod berikut:

var KEYS = {} ;

KEYS.PHONE_TYPE = 'phone-type';
KEYS.AGENT_TYPE = 'agent-type';

var myAppConfig = {
    ...
    iconMap : { 
        KEYS.PHONE_TYPE : 'icon-phone', 
        KEYS.AGENT_TYPE : 'icon-headphones'
    };
    ...
};

Kod ini gagal dengan ralat "Dijangka ':' dan sebaliknya melihat '.'." Ini kerana anda cuba mengakses objek KEYS sebagai harta objek myAppConfig menggunakan notasi titik (.). Untuk menangani isu ini, anda perlu menggunakan notasi kurungan [] untuk mengakses sifat secara dinamik.

Penyelesaian:

Menggunakan ES6 (atau transpiler seperti Babel/browserify), anda boleh memulakan objek dengan nama sifat dinamik menggunakan notasi kurungan, seperti yang ditunjukkan di bawah:

iconMap : { 
    [KEYS.PHONE_TYPE] : 'icon-phone', 
    [KEYS.AGENT_TYPE] : 'icon-headphones'
};

Dalam ini kod, kurungan [] di sekeliling sifat KEYS membolehkan anda menentukan nama sifat secara dinamik berdasarkan nilai yang disimpan dalam objek KEYS. Akibatnya, sifat iconMap bagi objek myAppConfig akan mengandungi pemetaan nilai yang dikehendaki:

{
    'phone-type' : 'icon-phone',
    'agent-type' : 'icon-headphones'
}

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Objek JavaScript dengan Nama Harta Dinamik?. 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