Rumah > hujung hadapan web > tutorial js > Mengapa JavaScript Tidak Membenarkan Kekunci Objek Dinamik dalam Literal Objek Secara Terus?

Mengapa JavaScript Tidak Membenarkan Kekunci Objek Dinamik dalam Literal Objek Secara Terus?

Patricia Arquette
Lepaskan: 2024-12-30 21:48:15
asal
907 orang telah melayarinya

Why Doesn't JavaScript Allow Dynamic Object Keys in Object Literals Directly?

JavaScript Object Key dari Variable Conundrum

Apabila menggunakan literal objek dalam JavaScript, anda mungkin menghadapi tingkah laku yang pelik apabila menetapkan pembolehubah kepada dinamik kunci hartanah tidak berfungsi. Pertimbangkan dua coretan kod ini:

<something>.stop().animate({ 'top': 10 }, 10); // Works
var thetop = 'top';
<something>.stop().animate({ thetop: 10 }, 10); // Doesn't work
Salin selepas log masuk

Mengapa Percanggahan?

Coretan pertama berjaya menetapkan sifat "atas" objek, menggunakan tatatanda titik. Walau bagaimanapun, coretan kedua gagal kerana JavaScript tidak membenarkan penggunaan pembolehubah untuk mentakrifkan nama sifat objek dinamik secara langsung dalam literal objek.

Penyelesaian dalam ES5 dan Terdahulu

Untuk menetapkan dinamik nama harta daripada pembolehubah dalam ES5 dan lebih awal, anda mesti membina objek literal secara manual:

var thetop = "top";
var aniArgs = {};
aniArgs[thetop] = 10; // Assign value to variable property name
<something>.stop().animate(aniArgs, 10);
Salin selepas log masuk

Penyelesaian dalam ES6 dan Kemudian

ES6 memperkenalkan "ComputedPropertyName" dalam tatabahasa literal objek, membolehkan penetapan nama sifat dinamik daripada pembolehubah secara langsung:

var thetop = "top",
    obj = { [thetop]: 10 };
console.log(obj.top); // -> 10
Salin selepas log masuk

Sintaks ini disokong dalam versi terkini major pelayar.

Atas ialah kandungan terperinci Mengapa JavaScript Tidak Membenarkan Kekunci Objek Dinamik dalam Literal Objek Secara Terus?. 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