Когда вы используете нотацию []
, она ожидает промежуточное выражение, которое преобразуется в строку.
Использование name
без кавычек 'name'
предполагает, что вы используете переменную с именем name.
Который в вашем случае undefined
.
Правильное использование будет
topics["name"] = ["chapter 1", "chapter 2", "chapter 3"];
Если вы хотите использовать переменную, вы можете сделать что-то вроде
var prop = 'name';
var topics = {};
topics[prop] = ["chapter 1", "chapter 2", "chapter 3"];
это создаст свойство name
для объекта .. полезное для динамического / автоматического создания / заполнения объектов ..