Тема: Collection v5
Показать сообщение отдельно
  #4 (permalink)  
Старый 04.06.2014, 20:07
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Octane Посмотреть сообщение
а как ты реализуешь итератор для браузеров, которые поддерживают Map и Set, но не поддерживают @@iterator?
Написан полифил, который аккуратно добавляет поддержку без оверхедов, т.е. работает всё также быстро.

PS:

Наглядный пример использования протокола @@iterator в работе:

// Для более сахарного вида используем итератор на основе генератора
$C(function *() {
    var str = '1-2 4-5 6-7';
    var rgxp = /(\d+)-(\d+)/g;

    var tmp;
    while ((tmp = rgxp.exec(str))) {
        yield tmp;
    }
}).get() // [["1-2", "1", "2"], ["4-5", "4", "5"], ["6-7", "6", "7"]]

// Можно любому объекту или классу определить свойство @@iterator и Collection это поймёт
$C({'@@iterator': function *() {
    for (let i = 0; i < 10; i++) {
        yield i;
    }
}}).get() // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 04.06.2014 в 20:19.
Ответить с цитированием