|
JS.next(стандарты, фичи, движки)
Предлагаю в этом треде обсуждать/вопрошать всё, что связано с будущим JS: стандартами(ES6/7/8), фичами, движками, и прочими новостями из мира нового JS.
Сейчас на подходе ES6, многие фичи уже реализованы в последних версиях браузеров. Пока лидером по реализованным фичам является [не]всеми любимая Панда. Кто из форумчан уже опробовал новый мясной JS со вкусом ES6? Как вам? Используете его в продакшене или только на своих личных проектах? C помощью транслятора или любите рисковать?) Если не используете, то почему? Ждёте полной поддержки в браузерах или не понравилось? |
Использую давно, ну это и так все знают :)
|
Недавно начал активно юзать шестёрку в маленьком пробном проекте, и знаете, она довольно хороша. Чаще всего использую стрелочные функции, параметры по умолчанию и классы(не на полную). Раньше ещё let использовал, но Traceur не может в него. Немного `новое форматирование ${строк}` и объявление методов без function. Пока это всё, что успел. |
kobezzza,
ну и как? Насколько [не]доволен новыми возможностями? |
Цитата:
*** Потом сомнительна фича shorthand properties: var a = 1, b = 2; var c = {a, b}; Гораздо лучше, чтобы данный синтаксис отдали под литерал для Set: var c = {a, b} // new Set(['a', 'b']) Т.к. очень часто приходится писать такое: var c = { foo1: true, foo2: true, foo3: true }; И это правда раздражает. Вообще нужно больше литералов: {a: 1} // Object [1] // Array int32[1] // Int32Array {a, b} // Set {{a: 1, b: 2}} // Map Литералы регулярных выражений нужно дорабатывать! Обязательно нужна поддержка разбиения на строки и комментариев var pattern = /// ^\(?(\d{3})\)? # Capture area code, ignore optional parens [-\s]?(\d{3}) # Capture prefix, ignore optional dash or space -?(\d{4}) # Capture line-number, ignore optional dash /// *** Мне не нравится подход к рефлексии через объект Proxy, почему нельзя было сделать это на основе Symbol? var a = { @@noSuchMethod() { ... } @@delete() { ... } }; Тем более такой подход используется в ES6, так почему бы его не сделать для рефлексии также. *** Нужно больше встроенных коллекций, кто сказал, что в JS они не нужны? Вообще стандартная библиотека в JS на редкость убогая. Также необходима хорошая доработка для API коллекций: во первых его нужно сделать универсальным на столько, на сколько это возможно и добавить больше методов. *** Нужна нормальная опциональная декларация типов, хватит костылись с jsDoc. *** Нужны нормальные потоки на уровне языка и не нужно рассказывать, что JS однопоточный. Потоки нужны, без них современный язык выглядит кастратом. *** Нужна поддержка асинхронного программирования на уровне синтаксиса (промисы - это хорошо, но этого мало): async () { var result = await $.getJSON(url); } Ну т.е. как сейчас делают на генераторах, но более продвинуто. *** Нужна возможность нормальной трансляции JS в байткод и загрузки уже его, а не исходного текста. *** Т.к. JS можно считать веб-ориентированном языком, то нужна поддержка шаблонов на уровне синтаксиса var a = { ... }; function foo() { ... } template bar() { < h1 Hello World! } *** Нужна универсальная обёртка для запросов к БД, аля Linq .... Много чего нужно :) |
kobezzza,
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Но ведь ты можешь предложить эти фичи поцонам из рабочей группы, чтобы они впихнули их ES7. Вероятность не так уж высока, но почему бы и нет?) |
И ещё вот какой вопросец. В классах ES6 есть возможность использовать ключевое слово super(). Что оно делает? Как я понял из статей на английском, super позволяет вызвать конструктор родительского класса как свой. Я прав или как обычно?)
|
http://blogs.msdn.com/b/ie/archive/2...m-roadmap.aspx
Ну вот, теперь и в IE уже работают над классами. Хотя модули под вопросом, странные люди) |
Релиз Хрома с поддержкой Map, Set, for...of, Symbol и математическими функциями из ES6: http://www.opennet.ru/opennews/art.shtml?num=40773
|
Алилуйя. Поддержка была давно, но она включалась флагами, что не айс было.
|
kobezzza,
ну ты ведь и сам понимаешь, что флаги это почти тоже самое что и отсутствие поддержки) Ведь у обычного пользователя они выключены. |
Цитата:
Одно дело, когда фича что-то ломает, но тут просто добавили новые типы данных, которых не было в ES5 и шансов что-то сломать просто нет. Ну если их так заботит не стабильность фичи, то добавили бы префикс: blinkMap какойнить. |
kobezzza,
или как вариант вообще их не выкатывать, если считают их не стабильными. |
Это уже работает! (в 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 |
Octane, поясни пожалуйста, что за вызод демона происходит в коде :)
|
В 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); } |
Немного о будущем ES6/7
http://www.infoworld.com/article/283...al-intent.html |
Цитата:
function({param: param, param1: param1, param2: param2}) { } Вообще ES6 очень ёмко описан здесь - https://github.com/lukehoban/es6features |
Цитата:
|
Это тип данных, который уникален и никогда ничему (кроме себя) не равен. Как и объекты, но для использования в ключах.
|
Erolast, какую задачу он решает?
|
Например
Цитата:
|
Кстати, никто не знает, где можно оставлять предложения по ES6/ES7?
|
Erolast,
конечно знаем) Держи https://esdiscuss.org/ |
Аха, спасибо.
|
Итак, вот некоторые плюхи, которые будут в ES7
https://github.com/tc39/ecma262 |
Майкрософт добавит много годноты из ES6 в IE12
http://habrahabr.ru/company/microsoft/blog/243215/ |
Цитата:
|
Похоже, что на данный момент ИЕ12 осуществляет самую богатую поддержку ES6, значительно обходя ФФ и Хром, но к моменту релиза, я думаю все эти браузеры уже будут поддерживать стандарт в полной мере, однако свято место пусто не бывает и теперь Safari самый слоупочный по всем параметрами браузер, и учитывая тот факт, что на яблока девайсах нет технической возможности юзать другой браузер (все другие браузеры под iOS на самом деле надстройка над Safari), то это сильно тормозит развитие мобильных технологий, а на десктопный Сафари можно смело класть болт :)
|
kobezzza,
Цитата:
Думаю, к тому моменту даже Сафари осилит внедрить хотя бы часть нового стандарта. |
Цитата:
|
|
kobezzza, и как я полагаю ты хотел бы чтобы обьекты и функции обьединили в нечто одно? чтобы у обектов был @call метод который вызывался бы если обьект пытаются вызвать obj() что думаешь по поводу разделения на обьекты и функции?
|
Цитата:
this._privateName = function(){} пишешь: privateName = new Symbol() this[privateName] = function(){} по сути я в своем полифиле new Symbol() просто генерирую уникальную строку, и все) |
Цитата:
|
вот и новый тип данных symbol
var isSymbolSupports = typeof Symbol === 'function' && typeof Symbol() === 'symbol'; alert(isSymbolSupports); |
devote,
ФоФоша пока не держит( |
Уже начинают активно обсуждать 7-ку.
https://www.eventbrite.com/e/version...ts-14284664817 |
|
Цитата:
|
Часовой пояс GMT +3, время: 07:58. |
|