Javascript.RU

Приложение B

Update: Более новый материал по этой теме находится по адресу http://es5.javascript.ru.
Приложение B
(информативное)
Совместимость
B.1 Дополнительный синтаксис

Предыдущие версии ECMAScript включали дополнительный синтаксис и семантику для указания восьмеричных литералов и восьмеричных escape-последовательностей. Они были удалены из данной редакции ECMAScript. Это ненормативное приложение представляет единый синтаксис и семантику для восьмеричных литералов и восьмеричных escape-последовательностей для совместимости со старыми программами на ECMAScript.

B.1.1 Численные литералы

Синтаксис и семантика раздела 7.8.3 могут быть расширены согласно следующему описанию:

Синтаксис

ЧисленныйЛитерал ::
ДесятичныйЛитерал
ШестнадцатеричныйЦелыйЛитерал
ВосьмеричныйЦелыйЛитерал
ВосьмеричнаяЦифра :: одна из
0 1 2 3 4 5 6 7
ВосьмеричныйЦелыйЛитерал ::
0 ВосьмеричнаяЦифра
ВосьмеричныйЦелыйЛитерал ВосьмеричнаяЦифра

Семантика

  • МЗ ЧисловогоЛитерала :: ВосьмеричногоЦелогоЛитерала равняется МЗ ВосьмеричногоЦелогоЛитерала.
  • МЗ ВосьмеричнойЦифры :: 0 равно 0.
  • МЗ ВосьмеричнойЦифры :: 1 равно 1.
  • МЗ ВосьмеричнойЦифры :: 2 равно 2.
  • МЗ ВосьмеричнойЦифры :: 3 равно 3.
  • МЗ ВосьмеричнойЦифры :: 4 равно 4.
  • МЗ ВосьмеричнойЦифры :: 5 равно 5.
  • МЗ ВосьмеричнойЦифры :: 6 равно 6.
  • МЗ ВосьмеричнойЦифры :: 7 равно 7.
  • МЗ ВосьмеричногоЦелогоЛитерала :: 0 ВосьмеричнойЦифры равно МЗ ВосьмеричнойЦифры.
  • МЗ ВосьмеричногоЦелогоЛитерала :: ВосьмеричногоЦелогоЛитерала ВосьмеричнойЦифры равно сумме (МЗ ВосьмеричногоЦелогоЛитерала умноженной на 8) и МЗ ВосьмеричнойЦифры.
B.1.2 Строковые литералы

Синтаксис и семантика раздела 7.8.4 могут быть расширены согласно следующему описанию:

Синтаксис

EscapeПоследовательность ::
СимвольнаяEscapeПоследовательность
ВосьмеричнаяEscapeПоследовательность
ШестнадцатеричнаяEscapeПоследовательность
ЮникоднаяEscapeПоследовательность
ВосьмеричнаяEscapeПоследовательность ::
ВосьмеричнаяЦифра [предпросмотр ∉ ДесятичнаяЦифра]
ОтНуляДоТрёх ВосьмеричнаяЦифра
[предпросмотр ∉ ДесятичнаяЦифра]
ОтЧетырёхДоСеми ВосьмеричнаяЦифра
ОтНуляДоТрёх ВосьмеричнаяЦифра ВосьмеричнаяЦифра
ОтНуляДоТрёх :: одна из
0 1 2 3
ОтЧетырёхДоСеми :: одна из
4 5 6 7

Семантика

  • СиЗ EscapeПоследовательности :: ВосьмеричнойEscapeПоследовательности равно СиЗ ВосьмеричнойEscapeПоследовательности.
  • СиЗ ВосьмеричнойEscapeПоследовательности :: ВосьмеричнойЦифры [предпросмотр ∉ ДесятичнойЦифре] равно символу, код которого равняется МЗ ВосьмеричнойЦифры.
  • СиЗ ВосьмеричнойEscapeПоследовательности :: ОтНуляДоТрёх ВосьмеричнойЦифры [предпросмотр ∉ ДесятичнойЦифре] равно символу, код которого равняется сумме (МЗ ОтНуляДоТрёх, умноженного на 8) и МЗ ВосьмеричнойЦифры.
  • СиЗ ВосьмеричнойEscapeПоследовательности :: ОтЧетырёхДоСеми ВосьмеричнойЦифры равно символу, код которого равняется сумме (МЗ ОтЧетырёхДоСеми, умноженного на 8) и МЗ ВосьмеричнойЦифры.
  • СиЗ ВосьмеричнойEscapeПоследовательности :: ОтНуляДоТрёх ВосьмеричнойЦифры ВосьмеричнойЦифры равно символу, код которого равняется сумме (МЗ ОтНуляДоТрёх, умноженного на 64 (т.е., 82 ) ), (МЗ первой ВосьмеричнойЦифры, умноженной на 8) и МЗ второй ВосьмеричнойЦифры.
  • МЗ ОтНуляДоТрёх :: 0 равно 0.
  • МЗ ОтНуляДоТрёх :: 1 равно 1.
  • МЗ ОтНуляДоТрёх :: 2 равно 2.
  • МЗ ОтНуляДоТрёх :: 3 равно 3.
  • МЗ ОтЧетырёхДоСеми :: 4 равно 4.
  • МЗ ОтЧетырёхДоСеми :: 5 равно 5.
  • МЗ ОтЧетырёхДоСеми :: 6 равно 6.
  • МЗ ОтЧетырёхДоСеми :: 7 равно 7.
B.2 Дополнительные свойства

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

B.2.1 escape (string)

Функция escape является свойством глобального объекта. Она вычисляет новую версию строкового значения, для которой некоторые символы были заменены на шестнадцатеричные escape-последовательности.

Для таких заменяемых символов, коды которых меньше или равны 0xFF, используется двухциферная escape-последовательность вида %xx. Для таких заменяемых символов, коды которых больше 0xFF, используется четырёхциферная escape-последовательность вида %uxxxx.

Когда функция escape вызывается с единственным аргументом string, предпринимаются следующие шаги:

1. Вызвать ToString(string).

2. Подсчитать количество символов в Результате(1).

3. Пусть R равно пустой строке.

4. Пусть k равно 0.

5. Если k равняется Результату(2), вернуть R.

6. Получить символ (представленный как 16-битное беззнаковое целое) на позиции k в строке Результат(1).

7. Если Результат(6) является одним из 69 непробельных символов "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./ " - переход на шаг 13.

8. Если Результат(6) меньше 256 - переход на шаг 11.

9. Пусть S - строка, состоящая из шести символов "%uwxyz", где wxyz - четыре шестнадцатиричные цифры, кодирующие значение Результата(6).

10. Переход на шаг 14.

11. Пусть S равно строке, содержащей три символа "%xy", где xy - две шестнадцатеричные цифры, кодирующие значение Результата(6).

12. Переход на шаг 14.

13. Пусть S - строка, содержащая единственный символ Результат(6).

14. Пусть R - новое строковое значение, получаемое конкатенацией предыдущего значения R и S.

15. Увеличить k на 1. 16. Переход на шаг 5.

ЗАМЕЧАНИЕ
Это кодирование частично основан на кодировании, описанном в RFC1738, но весь процесс кодирования в данном стандарте описан выше без ссылки на RFC1738
.

B.2.2 unescape (string)

Функция unescape является свойством глобального объекта. Она вычисляет новую версию строкового значения, в которой escape-последовательности такого вида, какого могли бы быть введены функцией escape, заменяются на символы, которые они представляют.

Когда функция unescape вызывается с единственным аргументом string, предпринимаются следующие шаги:

1. Вызвать ToString(string).

2. Подсчитать количество символов в Результате(1).

3. Пусть R равно пустой строке.

4. Пусть k равно 0.

5. Если k равняется Результату(2), вернуть R.

6. Пусть c - символ на позиции k в строке Результат(1).

7. Если c не % - переход на шаг 18.

8. Если k больше, чем Результат(2)-6 - переход на шаг 14.

9. Если символ на позиции k+1 в Результате(1) не равен u, - переход на шаг 14.

10. Если четыре символа на позициях k+2, k+3, k+4 и k+5 в Результате(1) не являются шестнадцатеричными цифрами - переход на шаг 14.

11. Пусть c - символ, значение которого является целым, представленным четырьмя шестнадцатеричными цифрами на позициях k+2, k+3, k+4 и k+5 в строке Результат(1).

12. Увеличить k на 1.

13. Переход на шаг 18.

14. Если k больше, чем Результат(2)-3 - переход на шаг 18.

15. Если два символа на позициях k+1 и k+2 в строке Результат(1) не являются оба шестнадцатеричными цифрами - переход на шаг 18.

16. Пусть c - символ, код которого представляется двумя нулями и двумя шестнадцатеричными цифрами на позициях k+1 и k+2 в строке Результат(1).

17. Увеличить k на 2.

18. Пусть R - новое строковое значение, получаемое конкатенацией предыдущего значения R и c.

19. Увеличить k на 1.

20. Переход на шаг 5.

B.2.3 String.prototype.substr (start, length)

Метод substr принимает два аргумента start и length, преобразовывает данный объект к строке и возвращает её подстроку, начинающуюся с символа на позиции start и включающую length символов (или продолжающуюся до конца строки, если length равно undefined). Если start отрицательно, вместо него используется значение (sourceLength+ start), где sourceLength равно длине строки. Результатом является строковое значение (не объект String). Предпринимаются следующие шаги:

1. Вызвать ToString, передав ему значение this в качестве аргумента.

2. Вызвать ToInteger(start).

3. Если length равно undefined, использовать +∞ ; иначе вызвать ToInteger(length).

4. Подсчитать количество символов в Результате(1).

5. Если Результат(2) положителен или равен нулю - использовать Результат(2). Иначе использовать max(Результат(4)+ Результат(2), 0).

6. Вычислить min(max(Результат(3), 0), Результат(4)- Результат(5)).

7. Если Результат(6) <= 0 - вернуть пустую строку "".

8. Вернуть строку, содержащую Результат(6) последовательных символов Результата(1), начинающихся с символа на позиции Результат(5).

Свойство length метода substr равно 2.

ЗАМЕЧАНИЕ
Функция substr специально сделана не привязанной к типу. Она не требует, чтобы её значение this было объектом типа String. Таким образом, она может быть передана другим типам объектов для использования в качестве метода.

B.2.4 Date.prototype.getYear()

ЗАМЕЧАНИЕ
В большинстве случаев предпочтительнее использовать метод getFullYear, поскольку он позволяет избежать "проблемы года 2000".

Когда метод getYear вызывается без аргументов, предпринимаются следующие шаги:

1. Пусть t - данное значение времени.

2. Если t равно NaN - вернуть NaN.

3. Вернуть ГодДляВремени(МестноеВремя(t))-1900.

B.2.5 Date.prototype.setYear(year)

ЗАМЕЧАНИЕ
В большинстве случаев предпочтительнее использовать метод setFullYear, поскольку он позволяет избежать "проблемы года 2000".

Когда метод setYear вызывается с единственным аргументом year, предпринимаются следующие шаги:

1. Пусть t - результат выражения МестноеВремя(данное значение времени). Но если данное значение времени равно NaN, взять в качестве t +0.

2. Вызвать ToNumber(year).

3. Если Результат(2) равен NaN, установить значение свойства [[Value]] значения this равным NaN и вернуть NaN.

4. Если Результат(2) не равен NaN и 0 <= ToInteger(Результат(2)) <= 99, то Результат(4) равен ToInteger(Результат(2)) + 1900. Иначе Результат(4) равен Результату(2).

5. Вычислить СоставитьДень(Результат(4), МесяцДляВремени(t), ДатаДляВремени(t)).

6. Вычислить UTC(СоставитьДату(Результат(5), ВремяДня(t))).

7. Установить свойство [[Value]] значения this равным ОграничитьВремя(Результат(6)).

8. Вернуть значение свойства [[Value]] значения this.

B.2.6 Date.prototype.toGMTString()

ЗАМЕЧАНИЕ
Предпочтительнее использовать свойство toUTCString. Свойство toGMTString введено исключительно для совместимости со старым кодом. В новом коде на ECMAScript рекомендуется использовать свойство toUTCString
.

Объект Function, являющийся начальным значением свойства Date.prototype.toGMTString является тем же объектом Function, что и Date.prototype.toUTCString.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 4 =
Введите результат. Например, для 1+3, введите 4.
 
Текущий раздел
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum