Может ли кто-нибудь объяснить, как работает приведенный ниже метод назначения ключей в JavaScript?
a = "b"
c = {[a]: "d"}
возвращение:
Object {b: "d"}
источник
Может ли кто-нибудь объяснить, как работает приведенный ниже метод назначения ключей в JavaScript?
a = "b"
c = {[a]: "d"}
возвращение:
Object {b: "d"}
Это новый синтаксис имени вычисляемого свойства ES2015 (спецификация EcmaScript, формально известная как ES6) . Это сокращение для someObject[someKey]
задания, которое вы знаете из ES3 / 5:
var a = "b"
var c = {[a]: "d"}
синтаксический сахар для:
var a = "b"
var c = {}
c[a] = "d"
На самом деле использование []
дает отличный способ использовать фактическое значение переменной в качестве ключевого /
свойства при создании объектов JavaScript .
Я в значительной степени удовлетворен приведенным выше ответом и ценю его, поскольку он позволил мне написать это с помощью небольшого примера.
Я выполнил код построчно на Node REPL (Node shell).
> var key = "fullName"; // Assignment
undefined
>
> var obj = {key: "Rishikesh Agrawani"} // Here key's value will not be used
undefined
> obj // Inappropriate, which we don't want
{ key: 'Rishikesh Agrawani' }
>
> // Let's fix
undefined
> var obj2 = {[key]: "Rishikesh Agrawani"}
undefined
> obj2
{ fullName: 'Rishikesh Agrawani' }
>
const animalSounds = {cat: 'meow', dog: 'bark'};
const animal = 'lion';
const sound = 'roar';
{...animalSounds, [animal]: sound};
Результат будет
{cat: 'meow', dog: 'bark', lion: 'roar'};
Кроме того, единственное условие - использовать []
нотацию для доступа или назначения данных в объектах, когда мы еще не знаем, что это будет, до оценки или выполнения.