我一直在研究Javascript集的最后一点(我认识的人都没有使用过它们)。其中一些方法是我梦objects以求的对象,但是我对值vs @@ iterator有疑问。
文档显示他们基本上做同样的事情:
Set.prototype.values()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/values
Set.prototype @@ iteratorhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/@@iterator
有人可以告诉我为什么您要在另一个上使用它,或者它们基本上是相同的(在我看来)?
谢谢! :)
编辑:拼写
它们不仅在“基本”上相同,而且完全上相同:
Set.prototype.values === Set.prototype[Symbol.iterator] // true
在显式地在代码中创建迭代器时,您将使用.values()
。 Symbol.iterator
方法在iteration protocol中隐式使用,例如当您在集合上使用for … of
循环时。