Можно ли добавить динамически именованные свойства в объект JavaScript?

Похоже, что index объявляется глобальной переменной и получает мутацию при каждом вызове buildList. Я думаю, что это ваша проблема (но, возможно, вы делаете это специально для чего-то, чего я не вижу). Попробуйте изменить свой оператор for:

for(var index=0; index < lis.length; index++){
    // ...
}
666
задан Toby Allen 28 December 2015 в 09:16
поделиться

5 ответов

Да.

 var data = {'PropertyA': 1, 'PropertyB': 2, 'PropertyC': 3}; данные ["PropertyD"] = 4; // диалоговое окно с 4 в нем alert (data.PropertyD); alert (data ["PropertyD"]); 
1131
ответ дан 22 November 2019 в 21:37
поделиться

Вы можете добавить столько свойств, сколько захотите, просто используя точечную нотацию:

var data = {
    var1:'somevalue'
}
data.newAttribute = 'newvalue'

или :

data[newattribute] = somevalue

для динамических ключей.

16
ответ дан 22 November 2019 в 21:37
поделиться

Да, это возможно. Предположим:

var data = {
    'PropertyA': 1,
    'PropertyB': 2,
    'PropertyC': 3
};
var propertyName = "someProperty";
var propertyValue = "someValue";

Либо:

data[propertyName] = propertyValue;

, либо

eval("data." + propertyName + " = '" + propertyValue + "'");

Первый метод предпочтительнее. eval () имеет очевидные проблемы безопасности, если вы используете значения, предоставленные пользователем, поэтому не используйте его, если вы можете этого избежать, но стоит знать, что он существует и что он может делать.

Вы можете ссылаться на это с помощью:

alert(data.someProperty);

или

data(data["someProperty"]);

или

alert(data[propertyName]);
82
ответ дан 22 November 2019 в 21:37
поделиться

Здесь, используя ваши обозначения:

var data = {
    'PropertyA': 1,
    'PropertyB': 2,
    'PropertyC': 3
};
var propName = 'Property' + someUserInput
//imagine someUserInput was 'Z', how can I now add a 'PropertyZ' property to 
//my object?
data[propName] = 'Some New Property value'
20
ответ дан 22 November 2019 в 21:37
поделиться

Определенно. Думайте об этом как о словаре или ассоциативном массиве. Вы можете добавить к нему в любой момент.

-11
ответ дан 22 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: