Как уже отмечали другие, Fire
- это массив, поэтому для доступа к свойствам первого элемента из этого массива необходимо использовать Fire[0]...
. Однако есть несколько других проблем с вашим кодом, которые также необходимо исправить.
Ваши функции FireGen
и Particle
, по-видимому, определяются как функции конструктора (вы используете this
в теле функции). Поэтому вы должны вызывать эти функции с помощью оператора new
, например, new FireGen()
. После того, как вы внесете это изменение, вам, вероятно, следует изменить порядок своего кода таким образом, чтобы x
и y
передавались в качестве аргументов, и вы определяли каждую функцию только один раз.
Например:
var Fire = [];
function FireGen(x, y)
{
this.x = x;
this.y = y;
this.particle = [];
this.particle.push(new Particle(x, y));
};
function Particle(x, y)
{
this.x = x;
this.y = y;
};
function spawnFire(event)
{
var x = event.clientX;
var y = event.clientY;
Fire.push(new FireGen(x, y));
console.log(Fire[0].particle.length); //Outputs undefined
}
document.addEventListener('click', spawnFire);