В моем текущем JS-проекте у меня есть класса, который выглядит следующим образом:Javascript - Получить прототип вернуть генератор
function MyClass() {
this.prop1 = true;
this.prop2 = "Hello World";
this.prop3 = "This is another String.";
this.prop4 = "Just another string here.";
}
Я хочу, чтобы иметь возможность перебирать строку, используя Generator. Я мог бы достичь этого, делая это:
function* createStringIteratorFromMyClass(myclass) {
yield myclass.prop2;
yield myclass.prop3;
yield myclass.prop4;
}
Теперь я могу перебрать строку, как это:
for(const str createStringIteratorFromMyClass(...)) {
// access str here
}
Это прекрасно работает, но я хотел бы добавить createStringIteratorFromMyClass
к прототипу MyClass
.
Что-то вроде этого:
MyClass.prototype.createStringIterator = function*() {
yield this.prop2;
yield this.prop3;
yield this.prop4;
}
На данный момент я получаю ошибку:
Unexpected token '*'. Expected an opening '(' before a function's parameter list.
Как я могу добавить функцию, которая возвращает генератор с прототипом моего класса?
Но что, если я хочу иметь несколько разных итераторов? Как тот, который выполняет итерации поверх свойств строки и выполняет итерацию над целыми свойствами? – LastSecondsToLive
@LastSecondsToLive: в этом случае ваш код в порядке. Какой транспилер вы используете? – georg
http://tinyurl.com/honkvm4 – georg