ES9 中指定一个方法为 Iterable 的语法及例子
在 ES9 中,我们可以使用一个特殊的语法来指定一个方法为 Iterable,这个语法是使用 Generator 函数来实现的。通过这个语法,我们可以使得一个对象能够被 for...of 循环遍历,也可以使用扩展运算符、解构赋值等操作。
具体来说,我们需要在对象的 Symbol.iterator 属性上定义一个 Generator 函数,这个函数会返回一个迭代器对象,这个迭代器对象必须包含一个 next 方法,用于返回迭代序列中的下一个值。
下面是一个简单的例子,展示了如何使用 Generator 函数来实现一个 Iterable 对象:
const myIterable = { *[Symbol.iterator]() { yield 1; yield 2; yield 3; } }; for (let value of myIterable) { console.log(value); } // Output: // 1 // 2 // 3
在上面的例子中,我们定义了一个名为 myIterable 的对象,并在它的 Symbol.iterator 属性上定义了一个 Generator 函数。这个函数使用 yield 语句来逐个返回迭代序列中的值。然后,我们可以使用 for...of 循环来遍历这个对象,并打印出每个值。
除了 for...of 循环之外,我们还可以使用扩展运算符来将一个 Iterable 对象转换为数组:
const myIterable = { *[Symbol.iterator]() { yield 1; yield 2; yield 3; } }; const myArray = [...myIterable]; console.log(myArray); // Output: [1, 2, 3]
在上面的例子中,我们将 myIterable 对象转换为数组,使用了扩展运算符。这个运算符会将 myIterable 中的每个值都插入到一个新数组中。
总结
通过 ES9 中指定一个方法为 Iterable 的语法,我们可以将一个对象转换为可迭代的序列,从而可以使用 for...of 循环、扩展运算符、解构赋值等操作。这个语法使用 Generator 函数来实现,需要在对象的 Symbol.iterator 属性上定义一个 Generator 函数,这个函数会返回一个迭代器对象,这个迭代器对象必须包含一个 next 方法,用于返回迭代序列中的下一个值。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658b96b9eb4cecbf2d0d445a