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>

當我們執行指令碼時,它將在網頁上顯示字串的字元。

廣告