Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   JS.next(стандарты, фичи, движки) (https://javascript.ru/forum/offtopic/50248-js-next-standarty-fichi-dvizhki.html)

Safort 08.10.2014 11:42

kobezzza,
ну ты ведь и сам понимаешь, что флаги это почти тоже самое что и отсутствие поддержки) Ведь у обычного пользователя они выключены.

kobezzza 08.10.2014 12:03

Цитата:

Сообщение от Safort (Сообщение 334029)
kobezzza,
ну ты ведь и сам понимаешь, что флаги это почти тоже самое что и отсутствие поддержки) Ведь у обычного пользователя они выключены.

Понимаю, но не понимаю чем относительно этих фич она была мотивирована.

Одно дело, когда фича что-то ломает, но тут просто добавили новые типы данных, которых не было в ES5 и шансов что-то сломать просто нет. Ну если их так заботит не стабильность фичи, то добавили бы префикс: blinkMap какойнить.

Safort 08.10.2014 12:36

kobezzza,
или как вариант вообще их не выкатывать, если считают их не стабильными.

Octane 14.10.2014 15:57

Это уже работает! (в Chrome 40 dev)
NodeList.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator];

for (var x of document.querySelectorAll('p')) {
  console.log(x);
}

https://twitter.com/mathias/status/521953589175283712

melky 14.10.2014 16:15

Octane, поясни пожалуйста, что за вызод демона происходит в коде :)

Octane 14.10.2014 16:29

В NodeList.prototype добавляется итератор, который можно использовать в for-of
[][Symbol.iterator] === [].values //true

просто добавить метод values в NodeList.prototype не получится, потому что в for-of используется именно iterator, как я понимаю используется ключ типа Symbol для того, чтобы не конфликтовать с обычными свойствами (раньше было свойство @@iterator)

Стандартный ключ Symbol.iterator используется для именования всех итераторов:
Array.prototype[Symbol.iterator]
Map.prototype[Symbol.iterator]
и т.д.

тоесть это заранее подготовленный
Symbol.iterator = Symbol();
с помощью которого в прототипы добавили итераторы

Внутри метода iterator что-то типа такого:
Array.prototype.myIterator = function () {
    return function * (array) {
        var index = 0;
        while (index < array.length) {
            yield array[index++];
        }
    }(this);
};

var array = [1, , 3],
    values = array.myIterator(),
    value;
for (value of values) {
    alert(value);
}

Safort 25.10.2014 09:35

Немного о будущем ES6/7
http://www.infoworld.com/article/283...al-intent.html

Erolast 26.10.2014 07:59

Цитата:

сомнительна фича shorthand properties:
А я вот часто пользуюсь, очень удобно, плюс деструктуризация же. Без этой фичи она выглядела бы так:
function({param: param, param1: param1, param2: param2}) {

}


Вообще ES6 очень ёмко описан здесь - https://github.com/lukehoban/es6features

FINoM 27.10.2014 15:41

Цитата:

Сообщение от Octane
Symbol

Прочел статью на МДН и на русском и на английском, но не понимаю, что это такое. Это тип данных, который, если является ключем объекта, не перечисляется в циклах?

Erolast 27.10.2014 16:59

Это тип данных, который уникален и никогда ничему (кроме себя) не равен. Как и объекты, но для использования в ключах.


Часовой пояс GMT +3, время: 12:39.