Проблема заключается не в методе push
для Array.prototype
, а в ваших привязках. Вы изменяете один и тот же объект s
на каждой итерации вашего блока async.foreach
, который на самом деле является тем же объектом, что и ранее определенный Subscriber
.
Сначала вы должны перенести объявление s
переменная к блоку foreach.
А также, если вы хотите создать объект со значениями по умолчанию, он должен быть function
, который возвращает новый объект:
function Subscriber() {
return {
'userID': '',
'email': '',
'name': '',
'stage': '',
'poster': false,
'canEmail': false,
'stage': ''
};
};
И тогда вы можете создать экземпляр объекта Subscriber
следующим образом:
var s = Subscriber();
Подробнее см. этот ответ или Закрытие на MDN .