Это просто пример:Pass литерал объекта к объекту с именем переменной внутри функции
var foo = "foo1";
fooFunction({
bar: {
foo : value
}
});
Свойство будет называться foo
вместо foo1
.
Как можно называть его foo1
?
Это просто пример:Pass литерал объекта к объекту с именем переменной внутри функции
var foo = "foo1";
fooFunction({
bar: {
foo : value
}
});
Свойство будет называться foo
вместо foo1
.
Как можно называть его foo1
?
Вы не можете указать динамическое имя свойства в объектном литерале, вам нужно будет добавить свойство после создания объекта.
var foo = "foo1";
var obj = {
bar: {}
};
obj.bar[foo] = value;
function(obj);
Могу ли я использовать что-то вроде '[foo]: value'? Я помню, как некоторое время назад видел его где-то – Rafael
Если вы ориентируетесь только на самые последние браузеры, конечно. Тогда идите с ответом Амита. –
Нет ничего особенного в литературе объекта при использовании в качестве входа в вызов функции. Правила объектных литералов применяются везде, где они используются, включая назначение, входные параметры, разрушение (ES2015) или любое другое использование, которое я мог бы оставить без внимания.
Это возможно с помощью ES2015, чтобы сделать это с небольшим изменением:
var foo = "foo1";
fooFunction({
bar: {
[foo] : value
}
});
Это называется вычислен имя свойства.
Я видел, что некоторое время назад я это пробовал, но моя IDE заявила, что синтаксис неверен, поэтому я не тестировал его. И как узнать, использует ли браузер эту спецификацию и какие браузеры работают с этой спецификацией? Можете ли вы обновить свой ответ? – Rafael
@ Rafael - большинство браузеров не будут наивно поддерживать это сегодня. Если вы хотите использовать это надежно, используйте транспилер. Что касается обновления ответа, я не хочу этого делать. Ответы здесь, чтобы остаться, но функция поддержки меняется каждый день. Я не думаю, что имеет смысл, что ответ будет неправильным в (потенциально) ближайшем будущем. – Amit
Что такое транспилер? – Rafael
Это недопустимый синтаксис, функция должна иметь имя – Tushar
, можете ли вы уточнить, что вы хотите сделать? вы пытаетесь передать объект в качестве параметра, и вы хотите, чтобы foo1 был ключевым внутренним баром? тот факт, что код не соответствует правильному синтаксису в отношении функции, делает его несколько запутанным для того, чего вы пытаетесь достичь. – rvalerio
Это просто пример, но я отредактирую его с допустимым синтаксисом – Rafael