Ecmascript 5 и Ecmascript 6 Harmony

Неплохая обзорная статья на эту тему.
Но зная как чей-то блог может потом пропасть, перепощу.

Небольшое пояснение для тех кому слова ECMAScript и Harmony ни о чем не говорят. ECMAScript это спецификация языка, на основе которой развивается наш с вами JavaScript. А Harmony это следующая версия ECMAScript, работа над которой сейчас активно ведется. Теперь немного о том какие изменения произошли в этих версиях и какова текущая поддержка в браузерах.

ECMAScript 5

Это первое большое изменение спецификации, разработка которой шла около 10 лет. И, к сожалению, только недавно браузеры начали активное внедрение нового функционала. Коротко о том, что нового пришло с ECMAScript 5.

Array extras

Object extras

  • getters и setters — при попытке считать или установить значение свойства будет вызван указанный метод.

Так же добавлена поддержка native JSON, метода bind для Function и strict режим.

На данный момент, только самые современные браузеры более-менее полно поддерживают ECMAScript 5. Среди них >= IE9, >= Firefox 4, >= Safari 5.1, >= Chrome 13, >= Opera 12. Полную таблицу поддержки спецификации можно посмотреть здесь.

ECMAScript 6 или Harmony

В данный момент спецификация не закончена. На мой взгляд это самое большое, структурное и синтаксическое изменение языка за все время. Спецификация довольно объемная, поэтому я остановлюсь только на самом интересном для себя.

  • let — точно так же как var ограничивает видимость переменных в пределах функции, let ограничивает видимость переменных в пределах блока.
  • const — создание read-only констант.
  • Maps и WeakMap — для работы с объектами ключ/значение.

Кстати, CoffeeScript очень помог развитию Harmony, вот изменения в спецификации напрямую перешедшие из него:

Так же расширение методов FunctionStringNumberObject,RegExpMath и другие изменения.

Поддержка в текущих браузерах достаточно слабая, однако в отдельных браузерах части спецификации уже реализованы. Полную таблицу поддержки спецификации можно посмотреть здесь.

Все это здорово, но я хочу сейчас!

Специально для тех кто хочет уже сейчас писать по спецификации и не думать работает это в их браузере или нет созданы два проекта: es5-shim и es6-shim. Оба этих проекта реализуют функционал из спецификации недоступный текущему браузеру. Разумеется речи не идет о полной поддержки, однако большинство полезных новшеств уже работают хорошо.

2 Responses so far.

  1. Test:
    getters и setters это же ES5 функционал, по вашим же ссылкам и приведенной таблице kangax.

LEAVE A COMMENT