Heim >Web-Frontend >js-Tutorial >Warum lässt JavaScript dynamische Objektschlüssel nicht direkt in Objektliteralen zu?

Warum lässt JavaScript dynamische Objektschlüssel nicht direkt in Objektliteralen zu?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 21:48:15891Durchsuche

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

JavaScript-Objektschlüssel aus Variablenrätsel

Bei der Verwendung von Objektliteralen in JavaScript kann es zu einem eigenartigen Verhalten kommen, wenn Sie einer Dynamik eine Variable zuweisen Der Eigenschaftsschlüssel funktioniert nicht. Betrachten Sie diese beiden Codefragmente:

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

Warum die Diskrepanz?

Das erste Snippet setzt erfolgreich die „top“-Eigenschaft eines Objekts unter Verwendung der Punktnotation. Das zweite Snippet schlägt jedoch fehl, da JavaScript die Verwendung von Variablen zum Definieren dynamischer Objekteigenschaftsnamen direkt in Objektliteralen nicht zulässt.

Lösung in ES5 und früher

Zur dynamischen Zuweisung Eigenschaftsnamen aus Variablen in ES5 und früher müssen Sie das Objektliteral manuell erstellen:

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

Lösung in ES6 und später

ES6 führte „ComputedPropertyName“ in die Objektliteralgrammatik ein und ermöglichte die direkte Zuweisung dynamischer Eigenschaftsnamen aus Variablen:

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

Diese Syntax wird in den neuesten Versionen von unterstützt Hauptbrowser.

Das obige ist der detaillierte Inhalt vonWarum lässt JavaScript dynamische Objektschlüssel nicht direkt in Objektliteralen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn