Сначала вы строите массив ([]
), затем присваиваете ему свойства с помощью нечисловых ключей (player
).Это технически возможно (например, чтобы не вызывать ошибку), но это не то, для чего предназначены массивы.
Вместо них следует использовать объекты ({}
).Кроме того, ["player"]
совпадает с .player
.
var obj = {};
obj.entities = {};
obj.entities.player = []; // array here because you're filling with indices ([0])
obj.entities.player[0] = {}; // object again, because non-indices as keys (`pos`)
obj.entities.player[0].pos = "0,0";
Объекты могут иметь любой ключ свойства.Массивы - это подмножество объектов, которые должны иметь только индексы (цифры >= 0
) в качестве ключей.