2013-08-29 4 views
6
HeroName = new Hero() 
HeroName.Spells = []; 
HeroName.Spells[0].Type = []; 

Это не работает = (даже если я пытаюсь новый Array() или что-нибудь еще, что не представляется возможным сделать массивы в массивах Это то, что я собирался для:Массив внутри массива, внутри объекта? .?

HeroName.Spells[0].Type[0] = new DmgSpell(); 
HeroName.Spells[0].Type[1] = new Buff(); 

Я знаю, Я могу сделать что-то вроде

HeroName.Spells[0][0] = new DmgSpelL(); 
HeroName.Spells[0][1] = new Buff(); 

Но это не делает его так легко читать

Я делаю что-то не так? Я пробовал все возможные комбинации я мог думать и использование google для поиска массива в массиве дает мне другие результаты, которые мне не помогают. Любая помощь с благодарностью

+1

'Spells [0]' должен иметь объект, назначенный ему для того, чтобы работать - на данный момент это выглядит, как вы пытаетесь добавить свойство 'type' к nonexistant объекта. – Marty

+0

Извините за отсутствие такой очевидной вещи и большое спасибо за объяснение этого. –

ответ

7

Вы пропустили шаг. Вы не объявили HeroName.Spells[0] объектом, так что вы не можете присвоить ему свойство Type, потому что его не существует. Это работает:

HeroName = new Hero(); 
HeroName.Spells = []; 
HeroName.Spells[0] = {}; 
HeroName.Spells[0].Type = []; 
+0

Doh Я чувствую себя глупо сейчас ... Большое спасибо за вашу помощь, так что рад, что это сработало! еще раз спасибо –

+0

Добро пожаловать @HateNames – Paulpro

3

Set HeroName.Spells [0] в качестве объекта, в противном случае, это undefined. undefined не может иметь никаких свойств.

HeroName.Spells[0] = {}; 
+0

Большое спасибо за то, что нашли время, чтобы объяснить и выписать пример –

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