Сравнение равенств:
Оператор ==
Возвращает true, когда оба операнда равны.
>>> 1 == 1
true
>>> 1 == 2
false
>>> 1 == '1'
true
Сравнение параметров и эквивалентов:
g7] Возвращает true, если оба операнда равны и одного типа. Как правило, лучше и безопаснее сравнивать этот путь, потому что нет конверсий типа «за кадром».>>> 1 === '1'
false
>>> 1 === 1
true
Попробуйте изменить
this.Chests.push(Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
на
// note the "new" keyword!
this.Chests.push(new Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
Ключевое слово new
важно для правильного построения объекта с правильным контекстом. Он также правильно возвращает объект Chest
, который будет помещен в ваш массив.
Вы можете найти больше информации с этим ответом Stackoverflow: https://stackoverflow.com/a/30478240/11240618 , а также здесь: https://developer.mozilla.org / EN-US / Docs / Web / JavaScript / Справочник / Операторы / новый
Когда вы создаете новый объект Chest
, вы должны использовать оператор new
. Итак, в этом коде:
// Create 4 chests on Startup
for (var i = 0; i < 4; i++)
{
this.Chests.push(Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
}
... Вы должны изменить
this.Chests.push(Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));
... На это:
this.Chests.push(new Chest(random(25,375), random(25,375), random(20,25), random(15,20), random(0,5)));