JavaScript - Symbol.iterator 属性



在 JavaScript 中,一个名为 Symbol.iterator 的特殊符号属性用于为对象指定自定义迭代器。Symbol.iterator 属性用于定义特定对象的迭代器行为。迭代器是允许以每次一个的方式访问元素集合的对象。

当一个对象具有 Symbol.iterator 属性时,这意味着它可以使用 for...of 循环或 ... 展开运算符进行迭代。JavaScript 中许多内置的数据结构,如字符串、数组、映射、集合等,都具有默认的迭代器。可以使用 Symbol.iterator 属性访问此默认迭代器。

语法

以下是 JavaScript Symbol.iterator 属性的语法:

[Symbol.iterator]

参数

此属性不接受任何类型的参数。

返回值

此属性返回一个迭代器对象。

示例

示例 1

让我们看下面的例子,我们将使用生成器函数,该函数在 for of 循环中迭代时会产生一个序列。

<html>
   <body>
      <script>
         const x = {
            [Symbol.iterator]: function*() {
               yield 11;
               yield 22;
               yield 33;
            }
         };
         for (const a of x) {
            document.write(a + " < br > "); 
         }
      </script>
   </body>
</html>

如果我们执行上面的程序,它将在网页上显示数字。

示例 2

考虑另一种情况,我们将使用迭代器的 next() 方法在序列中检索值。

<html>
   <body>
      <style>
         body {
            font-family: verdana;
            color: #DE3163;
         }
      </style>
      <script>
         const x = {
            [Symbol.iterator]: function*() {
               yield "Ram";
               yield "Rahul";
               yield "Miryala";
            }
         };
         const a = x[Symbol.iterator]();
         document.write(a.next().value + " < br > ");
         document.write(a.next().value + " < br > "); 
         document.write(a.next().value);
      </script>
   </body>
</html>

执行上述脚本后,它将在网页上显示一段文本。

示例 3

在下面的示例中,我们将迭代字符串的字符。

<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         const x = "WELCOME";
         const a = x[Symbol.iterator]();
         let result = a.next();
         while (!result.done) {
            document.write(result.value + " < br > ");
            result = a.next();
         }
      </script>
   </body>
</html>

当我们执行脚本时,它将在网页上显示字符串的字符。

广告