2015-12-22 4 views
-2

Я пытался «поместить функцию в объект», поэтому я хотел сделать что-то подобное, но везде получаю ошибки.javascript функции в объектах

var someobject = { 
    makename(1) : null, 
    makename(2) : null, 
    makename(3) : null, 
    makename(4) : null 
}; 

function makename(num) { 
    return (identifier + ' Bot' + num) 
} 
+0

да, ключи JSON не могут быть результатом вызова функции – AmmarCSE

+4

на самом деле, я думаю, что в ES6 там вычисляются ключи или что-то в этом роде – AmmarCSE

+0

Они могут, если вы используете кронштейн обозначение вместо этого, что это единственный способ получить динамические ключи – adeneo

ответ

3

В современных (ES2015) средах JavaScript, вы можете сделать это:

var someobject = { 
    [makename(1)]: "foo", 
    [makename(2)]: "bar" 
}; 

[ ] оберткой имя свойства позволяет ему быть произвольным выражением. Результат вычисления выражения интерпретируется как строка и используется как имя свойства.

+0

:-), вот что я искал! – AmmarCSE

+0

Спасибо за это! –

3
var someobject = {} 

someObject[makename(1)] = null; 
someObject[makename(2)] = null; 
someObject[makename(3)] = null; 
someObject[makename(4)] = null; 

Это работает везде. Однако решение @ pointy лучше!

Смежные вопросы