Ответ 1
ECMAScript 2015 (также известный как ES6 Harmony)
ES 2015 обеспечивает поддержку этого с помощью функции имена вычисленных свойств (хотя релевантный спецификации называется "Инициализатор объектов" ).
Проще говоря, окружите переменную (в общем, любое выражение) квадратными скобками, чтобы оценить ее и использовать результат как имя свойства. В вашем примере это будет
elements = { [art]: stk };
Исходный ответ (таргетинг на ES5)
Вы не можете создавать литералы объектов, подобные этому. Вам нужно написать
elements = {};
elements[art] = stk;
Причина, по которой elements = { art: stk }
не работает, заключается в том, что она эквивалентна elements = { "art": stk }
(с кавычками). Две версии эквивалентны в JavaScript, если art
является юридическим идентификатором, а вторая версия дает понять, что происходит.