-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathB.html
executable file
·348 lines (340 loc) · 27.6 KB
/
B.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
<!DOCTYPE html>
<html class="split chapter"><head>
<meta charset="utf-8"><title>Приложение В (информационное) Совместимость # Ⓣ Ⓔ ① Ⓐ — ES5 с аннотациями</title><link rel="stylesheet" href="style.css"><link href="A.html" title="Приложение A (информационное) Краткое описание грамматик " rel="prev">
<link href="index.html" title="Содержание" rel="index">
<link href="C.html" title="Приложение C (информационное) Строгий вариант языка ECMAScript " rel="next">
</head><body><div class="head">
<h2 id="top">Спецификация ECMAScript 5.1 с аннотациями <span id="timestamp"></span></h2>
<!--left..-->
<div id="slogan">
<div id="share-toggler">Поделиться</div>
<div class="share">
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://es5.javascript.ru/" data-lang="ru" data-size="large" data-count="horizontal">Твитнуть</a>
<div id="fb-root"></div>
<div style="margin-bottom:5px" class="fb-like" data-href="http://es5.javascript.ru" data-send="false" data-action="recommend" data-layout="button_count" data-width="300" data-show-faces="false" data-font="arial"></div>
<div class="vk-share-wrapper">
<script src="http://vkontakte.ru/js/api/share.js?9" charset="windows-1251"></script>
<script src="misc.js"></script>
</div>
<div style="margin-top:6px">
<g:plusone annotation="inline" href="http://es5.javascript.ru/" width="120" size="standard" style="vertical-align:middle"></g:plusone>
</div>
</div>
</div>
<!--..left-->
<div id="annotations">
</div>
</div>
<nav><a href="A.html">← Приложение A (информационное) Краткое описание грамматик </a> – <a href="index.html" class="toc-nav">Содержание</a> – <a href="C.html">Приложение C (информационное) Строгий вариант языка ECMAScript →</a>
<ol class="toc"><li><a href="B.html#B" id="B-toc">Приложение В (информационное) Совместимость</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> <ol><li><a href="B.html#B.1" id="B.1-toc">B.1 Дополнительный синтаксис</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> <ol><li><a href="B.html#B.1.1" id="B.1.1-toc">B.1.1 Числовые литералы</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.1.2" id="B.1.2-toc">B.1.2 Строковые литералы</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li></ol></li><li><a href="B.html#B.2" id="B.2-toc">B.2 Дополнительные свойства</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> <ol><li><a href="B.html#B.2.1" id="B.2.1-toc">B.2.1 escape (string)</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.2.2" id="B.2.2-toc">B.2.2 unescape (string)</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.2.3" id="B.2.3-toc">B.2.3 String.prototype.substr (start, length)</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.2.4" id="B.2.4-toc">B.2.4 Date.prototype.getYear ( )</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.2.5" id="B.2.5-toc">B.2.5 Date.prototype.setYear (year)</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li><li><a href="B.html#B.2.6" id="B.2.6-toc">B.2.6 Date.prototype.toGMTString ( )</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b> </li></ol></li></ol></li></ol></nav>
<h2 id="B">Приложение В (информационное) Совместимость <a href="#B">#</a> <a href="#B-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h2>
<h3 id="B.1">B.1 Дополнительный синтаксис <a href="#B.1">#</a> <a href="#B.1-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h3>
<p>
Предыдущие издания спецификации ECMAScript содержали дополнительный синтаксис и семантику для определения восьмеричных литералов и восьмеричных управляющих последовательностей. В настоящем издании спецификации ECMAScript они были удалены. Данное приложение, не являющееся нормативом, представляет унифицированный синтаксис и семантику для восьмеричных литералов и восьмеричных управляющих последовательностей в целях совместимости с некоторыми более ранними программами на ECMAScript.</p>
<h4 id="B.1.1">B.1.1 Числовые литералы <a href="#B.1.1">#</a> <a href="#B.1.1-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p>
Синтаксис и семантика, изложенные в пункте <a href="x7.html#x7.8.3">7.8.3</a>, могут быть расширены, как указано ниже, за исключением того, что это расширение не допускается в <a href="x10.html#x10.1.1" class="term-ref">коде в строгом режиме</a>:</p>
<p class="tiny-btm">
<b>Синтаксис</b></p>
<p class="keep">
<i>NumericLiteral </i><b>::</b></p>
<p class="def1-btm">
<i>DecimalLiteral<br>HexIntegerLiteral<br>OctalIntegerLiteral</i></p>
<p class="keep">
<i>OctalIntegerLiteral </i><b>::</b></p>
<p class="def1-btm">
<code><b>0</b></code> <i>OctalDigit<br>OctalIntegerLiteral OctalDigit</i></p>
<p class="keep">
<i>OctalDigit </i><b>::</b> <b>один из</b></p>
<p class="def1-btm">
<code><b>0</b></code> <code><b>1</b></code> <code><b>2</b></code> <code><b>3</b></code> <i> </i><code><b>4</b></code> <i> </i><code><b>5</b></code> <code><b>6</b></code> <code><b>7</b></code></p>
<p>
Семантика</p>
<ul><li><p>
MV для <i>NumericLiteral</i> <b>::</b> <i>OctalIntegerLiteral</i> равно MV для <i>OctalIntegerLiteral</i>.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>0</b></code> равно 0.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>1</b></code> равно 1.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>2</b></code> равно 2.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>3</b></code> равно 3.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>4</b></code> равно 4.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>5</b></code> равно 5.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>6</b></code> равно 6.</p>
</li>
<li><p>
MV для <i>OctalDigit</i> <b>::</b> <code><b>7</b></code> равно 7.</p>
</li>
<li><p>
MV для <i>OctalIntegerLiteral </i><b>::</b> <code><b>0</b></code> <i>OctalDigit</i> равно MV для <i>OctalDigit</i>.</p>
</li>
<li><p>
MV для <i>OctalIntegerLiteral </i><b>::</b> <i>OctalIntegerLiteral</i> <i>OctalDigit</i> равно (MV для <i>OctalIntegerLiteral</i>, умноженное на 8) плюс MV для <i>OctalDigit</i>.</p>
</li></ul><h4 id="B.1.2">B.1.2 Строковые литералы <a href="#B.1.2">#</a> <a href="#B.1.2-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p>
Синтаксис и семантика, изложенные в пункте <a href="x7.html#x7.8.4">7.8.4</a>, могут быть расширены, как указано ниже, за исключением того, что это расширение не допускается в <a href="x10.html#x10.1.1" class="term-ref">коде в строгом режиме</a>:</p>
<p class="tiny-btm">
<b>Синтаксис</b></p>
<p class="keep">
<i>EscapeSequence </i><b>::</b></p>
<p class="def1-btm">
<i>CharacterEscapeSequence<br>OctalEscapeSequence<br>HexEscapeSequence<br>UnicodeEscapeSequence</i></p>
<p class="keep">
<i>OctalEscapeSequence </i><b>::</b></p>
<p class="def1-btm">
<i>OctalDigit </i>[<a href="x5.html#lookahead-not-in">lookahead <span class="symbol">∉</span></a> <i>DecimalDigit</i>]<i><br>ZeroToThree OctalDigit </i>[<a href="x5.html#lookahead-not-in">lookahead <span class="symbol">∉</span></a><i>DecimalDigit</i>]<i><br>FourToSeven OctalDigit<br>ZeroToThree OctalDigit OctalDigit</i></p>
<p class="keep">
<i>ZeroToThree </i><b>::</b> <b>один из</b></p>
<p class="def1-btm">
<code><b>0 1 2 3</b></code></p>
<p class="keep">
<i>FourToSeven </i><b>:: </b><b>один из</b></p>
<p class="def1-btm">
<b>4 5 6 7</b></p>
<p class="tiny-btm">
<b>Семантика</b></p>
<ul><li><p>
CV для <i>EscapeSequence </i><b>::</b> <i>OctalEscapeSequence</i> равно CV для <i> OctalEscapeSequence</i>.</p>
</li>
<li><p>
CV для <i>OctalEscapeSequence</i> <b>::</b> <i>OctalDigit</i> [<a href="x5.html#lookahead-not-in">lookahead <span class="symbol">∉</span></a> <i>DecimalDigit</i>] является символом, кодовое значение которого равно MV для <i>OctalDigit</i>.</p>
</li>
<li><p>
CV для <i>OctalEscapeSequence</i> <b>::</b> <i>ZeroToThree</i> <i>OctalDigit</i> [<a href="x5.html#lookahead-not-in">lookahead <span class="symbol">∉</span></a> <i>DecimalDigit</i>] является символом, кодовое значение которого равно (8 умноженное на MV для <i>ZeroToThree</i>) плюс MV для <i>OctalDigit</i>.</p>
</li>
<li><p>
CV для <i>OctalEscapeSequence</i> <b>::</b> <i>FourToSeven</i> <i>OctalDigit</i> является символом, кодовое значение которого равно (8 умноженное на MV для <i>FourToSeven</i>) плюс MV для <i>OctalDigit</i>.</p>
</li>
<li><p>
CV для <i>OctalEscapeSequence</i> <b>::</b> <i>ZeroToThree</i> <i>OctalDigit</i> <i>OctalDigit</i> является символом, кодовое значение которого равно (64 (то есть, 8<sup>2</sup>) умноженное на MV для <i>ZeroToThree</i>) плюс (8 умноженное на MV для первого <i>OctalDigit</i>) плюс MV для второго <i>OctalDigit</i>.</p>
</li>
<li><p>
MV для <i>ZeroToThree</i> <b>::</b> <code><b>0</b></code> равно 0.</p>
</li>
<li><p>
MV для <i>ZeroToThree </i><b>::</b> <code><b>1</b></code> равно 1.</p>
</li>
<li><p>
MV для <i>ZeroToThree </i><b>::</b> <code><b>2</b></code> равно 2.</p>
</li>
<li><p>
MV для <i>ZeroToThree </i><b>::</b> <code><b>3</b></code> равно 3.</p>
</li>
<li><p>
MV для <i>FourToSeven</i> <b>::</b> <code><b>4</b></code> равно 4.</p>
</li>
<li><p>
MV для <i>FourToSeven</i> <b>::</b> <code><b>5</b></code> равно 5.</p>
</li>
<li><p>
MV для <i>FourToSeven</i> <b>::</b> <code><b>6</b></code> равно 6.</p>
</li>
<li><p>
MV для <i>FourToSeven</i> <b>::</b> <code><b>7</b></code> равно 7.</p>
</li></ul><h3 id="B.2">B.2 Дополнительные свойства <a href="#B.2">#</a> <a href="#B.2-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h3>
<p>
Некоторые реализации ECMAScript включают дополнительные свойства для некоторых из стандартных родных объектов. Данное приложение, не являющееся нормативом, предлагает унифицированную семантику для таких свойств, при этом данные свойства или их семантика не становятся частью данного стандарта.</p>
<h4 id="B.2.1">B.2.1 escape (string) <a href="#B.2.1">#</a> <a href="#B.2.1-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p>
Функция <code><b>escape</b></code> является свойством <a href="x15.1.html#x15.1" class="term-ref">глобального объекта</a>. Она вычисляет новую версию строкового значения, в котором определённые значения заменяются шестнадцатеричной управляющей последовательностью.</p>
<p>
Для заменяемых символов, кодовое значение которых равно <code><b>0xFF</b></code> или менее, используется двузначная управляющая последовательность в формате <code><b>%</b></code> <i>xx</i>. Для заменяемых символов, кодовое значение которых больше <code><b>0xFF</b></code>, используется четырёхзначная управляющая последовательность в формате <code><b>%u</b></code> <i>xxxx</i>.</p>
<p>
При вызове функции <code>escape</code> с одним аргументом <I>string</I> выполняются следующие шаги:</p>
<ol><li><p>
Вызвать <a href="x9.html#x9.8">ToString</a>(<i>string</i>).</p>
</li>
<li><p>
Вычислить количество символов в Result(1).</p>
</li>
<li><p>
Пусть <i>R</i> будет пустой строкой.</p>
</li>
<li><p>
Пусть <i>k</i> будет 0.</p>
</li>
<li><p>
Если <i>k</i> равно Result(2), вернуть <i>R</i>.</p>
</li>
<li><p>
Получить символ (представленый в виде 16-битового беззнакового целого) в позиции <i>k</i> в Result(1).</p>
</li>
<li><p>
Если Result(6) равен одному из 69 непробельных символов <br><code><b>“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./”</b></code>,<code><b><br></b></code>перейти к шагу 13.</p>
</li>
<li><p>
Если Result(6) меньше чем 256, перейти к шагу 11.</p>
</li>
<li><p>
Пусть <i>S</i> будет строкой, содержащей шесть символов <code><b>“%u</b></code> <i>wxyz</i><code><b>”</b></code>, где <i>wxyz</i> представляют собой четыре шестнадцатеричных числа, которыми закодировано значение Result(6).</p>
</li>
<li><p>
Перейти к шагу 14.</p>
</li>
<li><p>
Пусть S будет строкой, содержащей три символа <code><b>“%</b></code> <i>xy</i><code><b>”</b></code>, где <i>xy</i> представляют собой два шестнадцатеричных числа, которыми закодировано значение Result(6).</p>
</li>
<li><p>
Перейти к шагу 14.</p>
</li>
<li><p>
Пусть <i>S</i> будет строкой, содержащей один символ Result(6).</p>
</li>
<li><p>
Пусть <i>R</i> будет новым строковым значением, полученным в результате конкатенации <i>S</i> с предыдущим значением <i>R</i>.</p>
</li>
<li><p>
Увеличить <I>k </I>на 1.</p>
</li>
<li><p>
Перейти к шагу 5.</p>
</li></ol><p><b>ПРИМЕЧАНИЕ</b> Данный конкретный метод кодирования частично основан на кодировании, описанном в RFC 1738. Однако весь метод кодирования, заданный данным стандартом, описывается выше безотносительно содержания RFC 1738. Данное кодирование не отражает изменений, внесенных в версию RFC 1738 более поздней версией RFC 3986.</p>
<h4 id="B.2.2">B.2.2 unescape (string) <a href="#B.2.2">#</a> <a href="#B.2.2-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p>
Функция <code><b>unescape</b></code> является свойством <a href="x15.1.html#x15.1" class="term-ref">глобального объекта</a>. Она вычисляет новую версию строкового значения, в котором каждая управляющая последовательность, которая может быть введена посредством функции <code><b>escape</b></code>, заменяется символом, который она представляет.</p>
<p>
При вызове функции <code>unescape</code> с одним аргументом <I>string</I> выполняются следующие шаги:</p>
<ol><li><p>
Вызвать <a href="x9.html#x9.8">ToString</a>(<i>string</i>).</p>
</li>
<li><p>
Вычислить количество символов в Result(1).</p>
</li>
<li><p>
Пусть <i>R</i> будет пустой строкой.</p>
</li>
<li><p>
Пусть <i>k</i> будет 0.</p>
</li>
<li><p>
Если <i>k</i> равно Result(2), вернуть <i>R</i>.</p>
</li>
<li><p>
Пусть <i>c</i> будет символом в позиции <i>k</i> в Result(1).</p>
</li>
<li><p>
Если <i>c</i> не равно <code><b>%</b></code>, перейти к шагу 18.</p>
</li>
<li><p>
Если <i>k</i> больше чем Result(2)<span class="symbol">−</span>6, перейти к шагу 14.</p>
</li>
<li><p>
Если символ в позиции <i>k</i>+1 в Result(1) не равен <code><b>u</b></code>, перейти к шагу 14.</p>
</li>
<li><p>
Если четыре символа в позициях <i>k</i>+2, <i>k</i>+3, <i>k</i>+4 и <i>k</i>+5 в Result(1) не являются шестнадцатеричными числами, перейти к шагу 14.</p>
</li>
<li><p>
Пусть <i>c</i> будет символом, кодовое значение которого является целым числом, представленным четырьмя шестнадцатеричными числами в позициях <i>k</i>+2,<i>k</i>+3, <i>k</i>+4 и <i>k</i>+5 в Result(1).</p>
</li>
<li><p>
Увеличить <I>k </I>на 5.</p>
</li>
<li><p>
Перейти к шагу 18.</p>
</li>
<li><p>
Если <i>k</i> больше чем Result(2)<span class="symbol">−</span>3, перейти к шагу 18.</p>
</li>
<li><p>
Если два символа в позициях <i>k</i>+1 и <i>k</i>+2 в Result(1) оба не являются шестнадцатеричными числами, перейти к шагу 18.</p>
</li>
<li><p>
Пусть <i>c</i> будет символом, кодовое значение которого является целым числом, представленным двумя нулями плюс двумя шестнадцатеричными числами в позициях <i>k</i>+1 и <i>k</i>+2 в Result(1).</p>
</li>
<li><p>
Увеличить <I>k </I>на 2.</p>
</li>
<li><p>
Пусть <i>R</i> будет новым строковым значением, полученным в результате конкатенации <i>c</i> с предыдущим значением <i>R</i>.</p>
</li>
<li><p>
Увеличить <I>k </I>на 1.</p>
</li>
<li><p>
Перейти к шагу 5.</p>
</li></ol><h4 id="B.2.3">B.2.3 String.prototype.substr (start, length) <a href="#B.2.3">#</a> <a href="#B.2.3-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p>
Метод <code><b>substr</b></code> принимает два аргумента <i>start</i> и <i>length</i> и возвращает подстроку, полученную в результате преобразования в строку этого объекта, начиная с позиции <i>start</i> и до символов <i>length</i> (или до конца строки, если <i>length</i> равно <b>undefined</b>). Если <i>start</i> имеет отрицательное значение, вместо него используется <i>sourceLength</i>+<i>start</i>, где <i>sourceLength</i> является длиной строки. Результатом является строковое значение, а не объект String. Выполняются следующие шаги:</p>
<ol><li><p>
Вызвать <a href="x9.html#x9.8">ToString</a>, передавая значение <b>this</b> в качестве аргумента.</p>
</li>
<li><p>
Вызвать <a href="x9.html#x9.4">ToInteger</a>(<i>start</i>).</p>
</li>
<li><p>
Если <i>length</i> равно <b>undefined</b>, использовать <b>+</b><span class="symbol"><b>∞</b></span>; иначе вызвать <a href="x9.html#x9.4">ToInteger</a>(<i>length</i>).</p>
</li>
<li><p>
Вычислить количество символов в Result(1).</p>
</li>
<li><p>
Если Result(2) равно положительному числу или нулю, использовать Result(2); иначе использовать max(Result(4)+Result(2),0).</p>
</li>
<li><p>
Вычислить min(max(Result(3),0), Result(4)–Result(5)).</p>
</li>
<li><p>
Если Result(6) <span class="symbol">≤</span> 0, вернуть пустую строку "".</p>
</li>
<li><p>
Вернуть строку, содержащую последовательные символы в количестве Result(6) из Result(1), начиная с символа в позиции Result(5).</p>
</li></ol><p>
Свойство <code><b>length</b></code> для метода <code><B>substr</B></code> равно <b>2</b>.</p>
<p><b>ПРИМЕЧАНИЕ</b> Функция <code><B><b>substr</b></B></code> специально является родовой функцией. Она не требует, чтобы её значение this было объектом типа String. Поэтому она может передаваться другим типам объектов для использования в качестве метода.</p>
<h4 id="B.2.4">B.2.4 Date.prototype.getYear ( ) <a href="#B.2.4">#</a> <a href="#B.2.4-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p><b>ПРИМЕЧАНИЕ</b> Практически для всех целей предпочтителен метод <code><b>getFullYear</b></code>, поскольку он позволяет избежать "проблемы 2000 года".</p>
<p>
При вызове метода <b>getYear</b> без аргументов выполняются следующие шаги:</p>
<ol><li><p>
Пусть <i>t</i> будет <a href="x15.9.html#this-time-value">числовым значением this</a>.</p>
</li>
<li><p>
Если <i>t</i> равно <b>NaN</b>, вернуть <b>NaN</b>.</p>
</li>
<li><p>
Вернуть <a href="x15.9.html#YearFromTime">YearFromTime</a>(<a href="x15.9.html#x15.9.1.9">LocalTime</a>(<i>t</i>)) <span class="symbol">−</span> 1900.</p>
</li></ol><h4 id="B.2.5">B.2.5 Date.prototype.setYear (year) <a href="#B.2.5">#</a> <a href="#B.2.5-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p><b>ПРИМЕЧАНИЕ</b> Практически для всех целей предпочтителен метод <code><b>setFullYear</b></code>, поскольку он позволяет избежать "проблемы 2000 года".</p>
<p>
При вызове метода <B>setYear </B>с одним аргументом <I>year</I> выполняются следующие шаги:</p>
<ol><li><p>
Пусть <i>t</i> будет результатом <a href="x15.9.html#x15.9.1.9">LocalTime</a>(<a href="x15.9.html#this-time-value">значение времени this </a>); но если <a href="x15.9.html#this-time-value">значение времени this</a> равно <b>NaN</b>, пусть <i>t</i> будет <b>+0</b>.</p>
</li>
<li><p>
Вызвать <a href="x9.html#x9.3">ToNumber</a>(<i>year</i>).</p>
</li>
<li><p>
Если Result(2) равно <b>NaN</b>, установить внутреннее свойство [[PrimitiveValue]] значения <b>this</b> в <b>NaN</b> и вернуть <b>NaN</b>.</p>
</li>
<li><p>
Если Result(2) не равно <b>NaN</b> и 0 <span class="symbol">≤</span> <a href="x9.html#x9.4">ToInteger</a>(Result(2)) <span class="symbol">≤</span> 99, то Result(4) равно <a href="x9.html#x9.4">ToInteger</a>(Result(2)) + 1900. Иначе Result(4) равно Result(2).</p>
</li>
<li><p>
Вычислить <a href="x15.9.html#x15.9.1.12">MakeDay</a>(Result(4), <a href="x15.9.html#x15.9.1.4">MonthFromTime</a>(<i>t</i>), <a href="x15.9.html#x15.9.1.5">DateFromTime</a>(<i>t</i>)).</p>
</li>
<li><p>
Вычислить <a href="x15.9.html#x15.9.1.9">UTC</a>(<a href="x15.9.html#x15.9.1.13">MakeDate</a>(Result(5), <a href="x15.9.html#x15.9.1.2">TimeWithinDay</a>(<i>t</i>))).</p>
</li>
<li><p>
Установить внутреннее свойство [[PrimitiveValue]] значения <b>this</b> в <a href="x15.9.html#x15.9.1.14">TimeClip</a>(Result(6)).</p>
</li>
<li><p>
Вернуть значение внутреннего свойства [[PrimitiveValue]] значения <b>this</b>.</p>
</li></ol><h4 id="B.2.6">B.2.6 Date.prototype.toGMTString ( ) <a href="#B.2.6">#</a> <a href="#B.2.6-toc" class="bak">Ⓣ</a> <b class="erra">Ⓔ</b> <b class="rev1">①</b> <b class="anno">Ⓐ</b></h4>
<p><b>ПРИМЕЧАНИЕ</b> Предпочтительным является свойство <code><b>toUTCString</b></code>. Свойство <code><b>toGMTString</b></code> предоставляется в основном в целях совместимости с более ранним кодом. В новом коде на ECMAScript рекомендуется использовать свойство <code><b>toUTCString</b></code>.</p>
<p>
Объект типа Function, представляющий собой начальное значение для <code><b>Date.prototype.toGMTString</b></code> является тем же объектом Function, который представляет собой начальное значение для <code><b><a href="x15.9.html#x15.9.5.42">Date.prototype.toUTCString</a></b></code>.</p>
</body><script src="anno.js"></script></html>