我无法理解为什么会出现此错误。
以下是我在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(…)
提前致谢。
答案 0 :(得分:13)
在这种情况下,add
方法在将其作为回调传递时会丢失其内部this
上下文,因此您需要使用bind
:
['bar', 'baz'].forEach(mySet.add.bind(mySet))