Почему итераторы так странно записываются в генераторы?

Помогите пожалуйста понять форму записи итератора в объект. Например я создаю такой генератор:

let gen = {
	[Symbol.iterator]() {
		let id = 1;
		return{
			next() {
				let value = id > 10 ? undefined : id++;
				let done = !value;
				return {value, done};
			}
		}
	}
}

for (let id of gen) {
	console.log(id);
}

Здесь [Symbol.iterator] это свойство, которое по умолчанию есть у итерируемых объектов (строк, массивов и т.д.). В приведённом коде я сам создаю итерируемый объект. То есть сам определяю свойство/метод [Symbol.iterator].

Проблема в том, что обычно свойства записываются в объект так:

let obj = {
  prop: function() { return 'result'; }
}

Но в первом коде я не вижу никаких двоеточий. Почему?
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы