Похоже, что проблема возникает здесь:
this.words.forEach(word => this.addWordFn(word));
, потому что функция, которую вы установили для addWordFn
здесь:
x.setAddWordFn(y.addWord);
Требуется другое значение this
чем вы это называете. Вы можете исправить это, привязав правильное значение этого к вашему обратному вызову:
x.setAddWordFn(y.addWord.bind(y));
Помните, что для обычных функций значение this
внутри функции определяется тем, как вызывается функция. Когда вы вызываете функцию с помощью obj.method()
, значение this
внутри method()
будет установлено на obj
. Итак, вы вызываете addWord
с неправильным значением this
, потому что вы сделали его методом какого-то другого объекта (который также не имеет необходимых данных) и вызываете его из этого объекта.