Помогите пожалуйста понять форму записи итератора в объект. Например я создаю такой генератор:
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'; }
}
Но в первом коде я не вижу никаких двоеточий. Почему?