Метод Set.prototype.add вызывается несовместимым приемником undefined
Я просто не могу понять, почему он дает эту ошибку.
Вот что я тестировал на своей консоли Chrome:
> var mySet;
<- undefined
> mySet = new Set;
<- Set {}
> mySet.add('foo', 'bar', 'baz') // Worked as expected
<- Set {"foo"} // just the first argument was added
> ['bar', 'baz'].forEach(mySet.add)
X-> VM1529:1 Uncaught TypeError:
Method Set.prototype.add called on incompatible receiver undefined(…)
Спасибо заранее.
Ответы
Ответ 1
В этом случае метод add
теряет свой внутренний контекст this
когда вы передаете его как обратный вызов, поэтому вам нужно использовать bind
:
['bar', 'baz'].forEach(mySet.add.bind(mySet));
или же
['bar', 'baz'].forEach((item) => mySet.add(item));