Почему/как JavaScript позволяет задавать имя свойства объекта именем переменной при предоставлении значения переменной без имени свойства?

Название этого вопроса было полным, и это очень трудно объяснить без примера:

Учитывая переменную:

const string = 'test';

Объект может быть создан, когда переменная передается как значение свойства без явного определения имени свойства:

const obj = { string };

В результате имя переменной используется в качестве имени свойства, а значение переменной используется в качестве значения свойства:

{
    string: 'test'
}

Мне интересно, есть ли имя для этой функции, или это где-то задокументировано как ожидаемое поведение? Является ли это частью конкретной версии языка JS? (Другими словами, это то, что будут поддерживать все браузеры?)

Моя первая мысль заключалась в том, что это имеет какое-то отношение к деструктурирующему присваиванию, поскольку аналогичный синтаксис существует для чего-то вроде:

const { a, b } = { a: 'Letter A', b: 'Letter B' };

Но это не совсем одно и то же, поэтому я не знаю, имеет ли эта идея какую-либо ценность.

Я хочу убедиться, что понимаю эту языковую функцию, прежде чем использовать ее (или решить, нужно ли ее использовать, если это, возможно, не функция, а скорее то, что просто происходит, но не должно быть полагаться ;) )


person Blake Mann    schedule 02.11.2018    source источник