Tuesday, July 25th, 2017

Обновленный синтаксис Getters/Setters в IE8 RC1

Published on Март 2, 2009 by   ·   Комментариев нет

Как программный менеджер, мне нравится писать спецификации функций (это требование есть даже в описании должности!). В каждом отдельном случае программный менеджер взвешивает все за и против каждого проектного компромисса, основываясь при этом на пользовательских предпочтениях, данных обратной связи и телеметрии и так далее. На базе всех этих данных мы строим определенные предположения о том, какие функции реализовывать и как именно. Несмотря на все наши усилия при планировании, мы знаем, что некоторые из наших предположений, сделанных в ранних версиях спецификаций, могут измениться в любой момент разработки. И наиболее часто меняются, пожалуй, веб-стандарты, поэтому мы заранее запланировали дополнительное время на повторную проверку поддержки стандартов и внесение необходимых изменений.

buy cigars online usa

Сгеагировать на изменения, внесенные в веб-стандарт в середине цикла разработки новой версии продукта, бывает достаточно сложно по ряду причин. Если говорить с точки зрения разработки, то изменения в работе функции не даются бесплатно — эти изменения влекут за собой шлейф ошибок, на поиск и исправление которых необходимо время. Другие изменения также рискованны, так как стандарты, на которых они основаны, могут измениться в любой момент. Каждый раз, когда мы рассматриваем вопрос внесения изменений, мы должны четко взвесить все возможные последствия.

В данной статье я хотел бы рассказать о важном событии в эволюции одного ве-стандарта и том, как мы среагировали на него в Internet Explorer 8. Я думаю, что данная статья даст вам уникальную возможность увидеть сложности, связанные с необходимостью реагировать на внесение изменений в принятый веб-стандарт во время цикла разработки программы.

ECMAScript 3.1
ECMAScript — стандарт, определяющий JavaScript, который последний раз обновлялся почти 10 лет назад. Однако, в прошлом году ревизия, которая впоследствии получила название ECMAScript 3.1, быстрыми темпами начала двигаться к стандартизации. Когда мы начинали работать над Internet Explorer 8, мы ожидали, что новая ревизия ECMAScript скоро будет стандартизирована, что даст нам возможность интегрировать ее в наши планы. Учитывая столь стремительное принятие ECMAScript 3.1, нам пришлось пересмотреть эти планы. Нам не хотелось интегрировать в Internet Explorer 8 функции, которые в итоге могут быть несовместимы с тем, что мы увидим в будущем черновике ECMAScript 3.1.

ECMAScript 3.1 включает в себя массу расширений для JavaScript, которые упрощают и ускоряют веб-разработку. Одной из таких функций является поддержка JSON и мы тут же решили, что встроенная в IE8 поддержка JSON API должна быть такой же, как в черновике ECMAScript 3.1. Еще одной функцией из этого черновика, которая тут же привлекла мое внимание, была поддержка синтаксиса Getters и Setters.

Макеты DOM
Много месяцев мы работали над функцией, которая помогла бы сделать DOM более совместимыми с языком JavaScript с помощью концепции JavaScript-макетов в DOM. Используя DOM-макеты, находчивые разработчики могут легко расширить функциональность HTML-элементов и других объектов DOM, разрабатывать более мощные библиотеки и уровни абстракции и даже заменять любые встроенные свойства и методы собственными. Это была, пожалуй, одна из наиболее востребованной серьезными JavaScript-экспертами функций. Одним из самых важных элементов данной функции являются свойства getters/setters в DOM.

До появления ревизии 3.1 ECMAScript не включал концепцию свойств getters/setters, но некоторые реализации JavaScript ее поддерживали, используя API, которые поддерживаются несколькими основными браузерами и системами программирования. Когда мы начали работать над поддержкой макетов DOM, мы решили реализовать поддержку этого API.

В спецификации ECMAScript 3.1 свойства getter/setter включены, но используя более гибкий API, а не фактический. Это решение было принято в разрез со всеми основными производителями браузеров, учитывая тех, которые уже поддерживают оригинальный getter/setter API. Учитывая, что разработка ECMAScript 3.1 в самом разгаре, а в данный процесс вовлечены разработчики основных браузеров, нам необходимо принять очень важное решение: реагировать ли нам на это неожиданное изменение и заниматься реализацией getter/setter API для DOM от ECMAScript 3.1 или же выпускать IE8 с тем, что у нас есть сейчас, а ECMAScript 3.1 API реализовать в будущем релизе?

В действительно ответ зависит от того, что лучше для веб-разработчиков. Им нужно интероперабельность, а если мы обеспечим поддержку getters/setters по ECMAScript 3.1, то мы гарантировать наличие интероперабельности нашего браузера в течение обозримого будущего. Учитывая, что на тот момент мы находились всего лишь в нескольких неделях от выпуска Beta 2, мы не хотели подвергать опасности качество данного релиза, и что важнее выпустить существующую реализацию (фактический getters/setters), чтобы дать разработчикам возможность протестировать данную функцию и найти серьезные ошибки, вместо того, чтобы убрать ее из Beta 2 и оставить для RC1. Поэтому у нас было достаточно времени, чтобы среагировать на те проблемы с совместимостью, на которые в ином случае времени могло и не хватить .

Первым делом стандарты
Сейчас я рад сообщить, что в Internet Explorer 8 RC будет добавлена не только высококачественная реализация макетов DOM, но и будут внесени изменения в реализацию getter/setter — теперь она будет в полной мере соответствовать черновику стандарта ECMAScript 3.1. И хотя наш JavaScript-движок и DOM в IE8 не будут поддерживать все изменения, представленные в ECMAScript 3.1, это значит, что код, разработанный для поддержки getters и setters в DOM в Internet Explorer 8 будет работать и сейчас, и в будущем, так как это код написан в соответствии с принятыми веб-стандартами.

Я безумно рад, что IE8 обзавелся этой функцией! Чтобы помочь начинающим веб-разработчикам, я написал несколько вводных статей по макетам DOM и getter/setters, а также новому синтаксису, который станет доступен в RC-сборке.

  • Document Object Model Prototypes, Part 1: Introduction
  • Document Object Model Prototypes, Part 2: Accessor (getter/setter) Support[/list[

    Кроме того, некоторые из вас могли заметить, что статья на MSDN была обновлена и теперь включает в себя макеты, поддерживаемые в Internet Explorer 8!

    Макеты DOM и getters/setters позволяют реализовать несколько классных возможностей по программированию. В будущих статьях я попытаюсь более подробно рассказать о нескольких сценариях, которые можно реализовать в IE8. Буду принателен, если в комментариях вы поделитесь своим опытом, какие сценарии удалось вам реализовать с помощью данной функции.

    Возвращаясь к вопросу целесообразности реакции на изменения, то изменения в веб-стандартах могут происходить и в ходе цикла разработки продукта. Опыт, который я получил с методами getters/setters во время разработки Internet Explorer 8, это только подтверждает. Как только мы завершим разработку IE8 и начнем задумываться о будущем, мы продолжим собирать нужные данные, прислушиваться к отзывам пользователей и вносить изменения там, где это необходимо. Скажу лишь одно — наша команда действительно заботиться о соответствии принятым веб-стандартам и об их поддержке, как способе достижения интероперабельности. В конечном итоге это позволяет разработчикам работать более эффективнее. А поддержка ECMAScript 3.1 — еще один шаг в этом направлении.

    Тревис Лейтхед (Travis Leithead),
    программный менеджер Internet Explorer

    Источник: http://blogs.msdn.com/ieru

zp8497586rq





Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]