JavaScript - Symbol.iterator 属性



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

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

语法

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


 [Symbol.iterator]

参数

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

返回值

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

示例 1

让我们看看下面的示例,我们将在其中使用 generator 函数,该函数在 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

考虑另一个场景,我们将使用 iteratot 的 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>

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