Если вы определяете такой объект в JavaScript, ключом всегда будет строка - в вашем случае _name
.Чтобы назначить динамическую переменную в качестве ключа для объекта, вам нужно использовать скобочную запись []
.Значение, однако, оценивается как выражение.В вашем случае _age
оценивается, потому что это значение, а не ключ.
Вы можете легко исправить, например, с помощью этого примера:
function addValues(_arr, _name, _age){
var object = {};
object[_name] = {
age: _age
};
_arr.push(object);
}
Это много способовдля объявления объекта в JavaScript:
Встроенное объявление:
var object = {
_name: '123'
};
→ _name
всегда будет константной строкой.
Точечная нотация:
var object = {};
var object._name = '123';
→ В точечной нотации _name
также всегда будет постоянной строкой.
Нотация в скобках:
var object = {};
var object[_name] = '123';
→ В скобочных обозначениях _name
является оцененным выражением.В этом случае имя переменной _name
.Вы также можете передать строку, используя object['_name']
.
Имена вычисляемых свойств:
Как указано в других ответах, в ES6 (более новая версия JavaScript)(которая не полностью поддерживается всеми браузерами, но может быть перенесена в ES5), вы также можете использовать вычисленные имена свойств :
var object = {
[_name]: '123'
};
→ В этой записи _name
будет оцениваться, и его значение будет ключевым в этом объекте.Имейте в виду, что у вас не будет поддержки IE без переноса этого фрагмента.