方法Set.prototype.add调用不兼容的接收器undefined

时间:2016-05-12 23:26:26

标签: javascript

我无法理解为什么会出现此错误。

以下是我在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 个答案:

答案 0 :(得分:13)

在这种情况下,add方法在将其作为回调传递时会丢失其内部this上下文,因此您需要使用bind

['bar', 'baz'].forEach(mySet.add.bind(mySet))