diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/javascript/reference/global_objects | |
parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip |
initial commit
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects')
485 files changed, 66191 insertions, 0 deletions
diff --git a/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html b/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html new file mode 100644 index 0000000000..9de1e97f40 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@iterator/index.html @@ -0,0 +1,138 @@ +--- +title: 'Array.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@iterator +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Начальное значение свойства <strong><code>@@iterator</code></strong> является тем же самым функциональным объектом, что и начальное значение, возвращаемое методом {{jsxref("Array.prototype.values()", "values()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>[Symbol.iterator]()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Iteration_using_for...of_loop" name="Example:_Iteration_using_for...of_loop">Пример: итерация посредством цикла <code>for...of</code></h3> + +<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; +// ваш браузер должен поддерживать цикл for..of +// и переменные с областью видимости let в циклах for +for (let letter of arr) { + console.log(letter); +} +</pre> + +<h3 id="Example:_Alternative_iteration" name="Example:_Alternative_iteration">Пример: альтернативный способ итерации</h3> + +<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; +var eArr = arr[Symbol.iterator](); +console.log(eArr.next().value); // w +console.log(eArr.next().value); // y +console.log(eArr.next().value); // k +console.log(eArr.next().value); // o +console.log(eArr.next().value); // p +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype-@@iterator', 'Array.prototype[@@iterator]()')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("17")}} (.iterator)<br> + {{CompatGeckoDesktop("27")}} (["@@iterator"])<br> + {{CompatGeckoDesktop("36")}} ([Symbol.iterator])</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("17")}} (.iterator)<br> + {{CompatGeckoMobile("27")}} (["@@iterator"])<br> + {{CompatGeckoMobile("36")}} ([Symbol.iterator])</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<ul> + <li>С Gecko 17 {{geckoRelease("17")}} по Gecko 26 {{geckoRelease("26")}} вместо {{jsxref("Global_Objects/Symbol", "символа", "", 1)}} <code>@@iterator</code> использовалось свойство <code>iterator</code> ({{bug(907077)}}), а с Gecko 27 по Gecko 35 — строка-заменитель <code>"@@iterator"</code> ({{bug("918828")}}).</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.keys()")}}</li> + <li>{{jsxref("Array.prototype.entries()")}}</li> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Array.prototype.values()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/@@species/index.html b/files/ru/web/javascript/reference/global_objects/array/@@species/index.html new file mode 100644 index 0000000000..696d2b6312 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@species/index.html @@ -0,0 +1,78 @@ +--- +title: 'get Array[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@species +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@species +--- +<div>{{JSRef}}</div> + +<p>Метод<strong> </strong><code><strong>Array[@@species]</strong></code>возвращает конструктор <code>Array</code> .</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Array[Symbol.species] +</pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Конструктор {{jsxref("Array")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>species</code> возвращает стандартный конструктор обьектов <code>Array</code> . Дочерние элементы могут переопределить метод для смены назначения конструктора.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Метод <code>species</code> возвращает стандартное значение функции конструктора, то есть<br> + <code>Array</code> конструктор для <code>Array</code> обьектов:</p> + +<pre class="brush: js">Array[Symbol.species]; // функция Array()</pre> + +<p>В полученном обьекте (на примере обычного массива <code>MyArray</code>), <code>MyArray</code> является конструктором <code>MyArray</code>. В случае, если вы захотите вернуть родительские обьекты <code>Array</code> в полученных классовых методах, вы можете переопределить метод:</p> + +<pre class="brush: js">class MyArray extends Array { + // <span id="result_box" lang="ru"><span>Переписывает тип MyArray в родительский конструктор Array</span></span> + static get [Symbol.species]() { return Array; } +}</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-array-@@species', 'get Array [ @@species ]')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное<br> + определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-array-@@species', 'get Array [ @@species ]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Array.@@species")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также:</h2> + +<ul> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Symbol.species")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html b/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html new file mode 100644 index 0000000000..7e4e7c9daa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/@@unscopables/index.html @@ -0,0 +1,76 @@ +--- +title: 'Array.prototype[@@unscopables]' +slug: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +tags: + - ECMAScript 2015 + - JavaScript + - Property + - Prototype + - Массив +translation_of: Web/JavaScript/Reference/Global_Objects/Array/@@unscopables +--- +<div>{{JSRef}}</div> + +<p>Свойства символа <code><strong>@@unscopable</strong></code> содержат свойства имён, которые не были включены в ECMAScript до версии ES2015. Эти свойства исключены из привязок оператора <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>arr</var>[Symbol.unscopables]</pre> + +<h2 id="Описание">Описание</h2> + +<p>Стандартные свойства массива, которые исключены из привязок <code>with</code>: copyWithin, entries, fill, find, findIndex, includes, keys, и values.</p> + +<p>См. {{jsxref("Symbol.unscopables")}} о том, как установить <code>unscopables</code> для Ваших собственных объектов.</p> + +<p>{{js_property_attributes(0,0,1)}}</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Приведённый код отлично работает в ES5 и ниже. Однако в ECMAScript 2015 и более поздних версиях был введён метод {{jsxref("Array.prototype.keys()")}}. Это означает, что внутри окружения <code>with</code>, "ключи" будут методом, а не пременной. Вот где теперь встроенные свойства символа {{jsxref("Array.prototype[@@unscopables]")}} вступают в игру и препятствуют тому, чтобы некоторые из методов Array были включены в оператор <code>with</code>.</p> + +<pre class="brush: js">var keys = []; + +with (Array.prototype) { + keys.push('что-то'); +} + +Object.keys(Array.prototype[Symbol.unscopables]); +// ["copyWithin", "entries", "fill", "find", "findIndex", +// "includes", "keys", "values"]</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype-@@unscopables', 'Array.prototype[@@unscopables]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создаётся из структурированных данных. Если Вы хотите дополнить эти данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.Array.@@unscopables")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Symbol.unscopables")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/concat/index.html b/files/ru/web/javascript/reference/global_objects/array/concat/index.html new file mode 100644 index 0000000000..b3c2fa6eea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/concat/index.html @@ -0,0 +1,135 @@ +--- +title: Array.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/Array/concat +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/concat +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>concat()</strong></code> возвращает новый массив, состоящий из массива, на котором он был вызван, соединённого с другими массивами и/или значениями, переданными в качестве аргументов.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-concat.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>var <var>new_array</var> = <var>old_array</var>.concat(<var>value1</var>[, <var>value2</var>[, ...[, <var>valueN</var>]]])</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>value<em>N</em></code></dt> + <dd>Массивы и/или значения, соединяемые в новый массив. Смотрите описание ниже.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый экземпляр {{jsxref("Array")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>concat</code> создаёт новый массив, состоящий из элементов в объекте, на котором он был вызван, за которыми по порядку следуют, для каждого аргумента, все его элементы (если аргумент является массивом), либо сам аргумент (если он массивом не является).</p> + +<p>Метод <code>concat</code> не изменяет данный массив или любой из массивов, переданных в аргументах, а вместо этого возвращает поверхностную копию, содержащую копии тех элементов, что были объединены с исходными массивами. Элементы оригинальных массивов копируются в новый массив по следующим правилам:</p> + +<ul> + <li>Ссылки на объекты (но не фактические объекты): метод <code>concat</code> копирует ссылки на объекты в новый массив. И оригинал, и новый массив ссылаются на один и тот же объект. То есть, если объект по ссылке будет изменён, изменения будут видны и в новом, и в исходном массивах.</li> + <li>Строки, числа и булевы значения (но не объекты {{jsxref("Global_Objects/String", "String")}}, {{jsxref("Global_Objects/Number", "Number")}} или {{jsxref("Global_Objects/Boolean", "Boolean")}}): метод <code>concat</code> копирует значения строк и чисел в новый массив.</li> +</ul> + +<div class="note"> +<p><strong>Примечание:</strong> Соединение массивов и/или значений в новый массив оставит соединяемые массивы/значения неизменными. Кроме того, любая операция над новым массивом (если только элемент не является ссылкой) не будет затрагивать исходные массивы и наоборот.</p> +</div> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Соединение_двух_массивов">Соединение двух массивов</h3> + +<p>Следующий код соединяет два массива:</p> + +<pre class="brush: js">var alpha = ['a', 'b', 'c'], + numeric = [1, 2, 3]; + +var alphaNumeric = alpha.concat(numeric); + +console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3] +</pre> + +<h3 id="Соединение_трёх_массивов">Соединение трёх массивов</h3> + +<p>Следующий код соединяет три массива:</p> + +<pre class="brush: js">var num1 = [1, 2, 3], + num2 = [4, 5, 6], + num3 = [7, 8, 9]; + +var nums = num1.concat(num2, num3); + +console.log(nums); // Результат: [1, 2, 3, 4, 5, 6, 7, 8, 9] +</pre> + +<h3 id="Соединение_значений_в_массив">Соединение значений в массив</h3> + +<p>Следующий код соединяет три значения в массив:</p> + +<pre class="brush: js">var alpha = ['a', 'b', 'c']; + +var alphaNumeric = alpha.concat(1, [2, 3]); + +console.log(alphaNumeric); // Результат: ['a', 'b', 'c', 1, 2, 3] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.4', 'Array.prototype.concat')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.concat', 'Array.prototype.concat')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.concat', 'Array.prototype.concat')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.concat")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.push", "push")}} / {{jsxref("Array.pop", "pop")}} — добавление / удаление элементов с конца массива</li> + <li>{{jsxref("Array.unshift", "unshift")}} / {{jsxref("Array.shift", "shift")}} — добавление / удаление элементов с начала массива</li> + <li>{{jsxref("Array.splice", "splice")}} — добавление / удаление элементов в указанной позиции массива</li> + <li>{{jsxref("String.prototype.concat()")}}</li> + <li>{{jsxref("Symbol.isConcatSpreadable")}} — управление уменьшением размерности массива</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html b/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html new file mode 100644 index 0000000000..a914888989 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/copywithin/index.html @@ -0,0 +1,216 @@ +--- +title: Array.prototype.copyWithin() +slug: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/copyWithin +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>copyWithin()</strong></code> копирует последовательность элементов массива внутри него в позицию, начинающуюся по индексу <code>target</code>. Копия берётся по индексам, задаваемым вторым и третьим аргументами <code>start</code> и <code>end</code>. Аргумент <code>end</code> является необязательным и по умолчанию равен длине массива.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.copyWithin(<var>target</var>, <var>start</var>[, <var>end</var> = this.length])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Начальный индекс позиции цели, куда копировать элементы.</dd> + <dt><code>start</code></dt> + <dd>Начальный индекс позиции источника, откуда начинать копировать элементы.</dd> + <dt><code>end</code></dt> + <dd>Необязательный параметр. Конечный индекс позиции источника, где заканчивать копировать элементы.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Аргументы <code>target</code>, <code>start</code> и <code>end</code> приводятся к {{jsxref("Global_Objects/Number", "Number")}} и обрезаются до целых значений.</p> + +<p>Если аргумент <code>start</code> является отрицательным, он трактуется как <code>length+start</code> где <code>length</code> — это длина массива. Если аргумент <code>end</code> является отрицательным, он трактуется как <code>length+end</code>.</p> + +<p>Функция <code>copyWithin</code> намеренно является <em>обобщённой</em>, она не требует, чтобы значение <code>this</code> внутри неё было объектом {{jsxref("Global_Objects/Array", "Array")}}, и кроме того, функция <code>copyWithin</code> является <em>изменяющим методом</em>, она изменит объект <code>this</code> и вернёт его, а не просто вернёт копию.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">[1, 2, 3, 4, 5].copyWithin(0, 3); +// [4, 5, 3, 4, 5] + +[1, 2, 3, 4, 5].copyWithin(0, 3, 4); +// [4, 2, 3, 4, 5] + +[1, 2, 3, 4, 5].copyWithin(0, -2, -1); +// [4, 2, 3, 4, 5] + +[].copyWithin.call({length: 5, 3: 1}, 0, 3); +// {0: 1, 3: 1, length: 5} + +// Типизированные массивы ES6 являются подклассами Array +var i32a = new Int32Array([1, 2, 3, 4, 5]); + +i32a.copyWithin(0, 2); +// Int32Array [3, 4, 5, 4, 5] + +// На платформах, которые ещё не совместимы с ES6: +[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4); +// Int32Array [4, 2, 3, 4, 5] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">if (!Array.prototype.copyWithin) { + Array.prototype.copyWithin = function(target, start/*, end*/) { + // Шаги 1-2. + if (this == null) { + throw new TypeError('this is null or not defined'); + } + + var O = Object(this); + + // Шаги 3-5. + var len = O.length >>> 0; + + // Шаги 6-8. + var relativeTarget = target >> 0; + + var to = relativeTarget < 0 ? + Math.max(len + relativeTarget, 0) : + Math.min(relativeTarget, len); + + // Шаги 9-11. + var relativeStart = start >> 0; + + var from = relativeStart < 0 ? + Math.max(len + relativeStart, 0) : + Math.min(relativeStart, len); + + // Шаги 12-14. + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + + var final = relativeEnd < 0 ? + Math.max(len + relativeEnd, 0) : + Math.min(relativeEnd, len); + + // Шаг 15. + var count = Math.min(final - from, len - to); + + // Шаги 16-17. + var direction = 1; + + if (from < to && to < (from + count)) { + direction = -1; + from += count - 1; + to += count - 1; + } + + // Шаг 18 + while (count > 0) { + if (from in O) { + O[to] = O[from]; + } else { + delete O[to]; + } + + from += direction; + to += direction; + count--; + } + + // Шаг 19. + return O; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.copyWithin', 'Array.prototype.copyWithin')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Edge</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("45")}}</td> + <td>{{CompatGeckoDesktop("32")}}</td> + <td>{{CompatNo}}</td> + <td>12</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("32")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/entries/index.html b/files/ru/web/javascript/reference/global_objects/array/entries/index.html new file mode 100644 index 0000000000..291b14e5c0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/entries/index.html @@ -0,0 +1,116 @@ +--- +title: Array.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Array/entries +tags: + - Array + - ECMAScript6 + - Experimental + - Iterator + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/entries +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>entries()</strong></code> возвращает новый объект итератора массива <code><strong>Array Iterator</strong></code>, содержащий пары ключ / значение для каждого индекса в массиве.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.entries()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; +var eArr = arr.entries(); + +console.log(eArr.next().value); // [0, 'a'] +console.log(eArr.next().value); // [1, 'b'] +console.log(eArr.next().value); // [2, 'c'] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.entries', 'Array.prototype.entries')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.entries', 'Array.prototype.entries')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("28")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("28")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.keys()")}}</li> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/every/index.html b/files/ru/web/javascript/reference/global_objects/array/every/index.html new file mode 100644 index 0000000000..db333915d9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/every/index.html @@ -0,0 +1,195 @@ +--- +title: Array.prototype.every() +slug: Web/JavaScript/Reference/Global_Objects/Array/every +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/every +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>every()</strong></code> проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.</p> + +<div class="note"> +<p><strong>Обратите внимание</strong>: метод возвращает <code>true</code> при любом условии для пустого массива.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox">arr.every(callback(currentValue[, index[, array]])[, thisArg])</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция проверки каждого элемента, принимает три аргумента: + <dl> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code>{{Optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента массива.</dd> + <dt><code>array</code>{{Optional_inline}}</dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code>{{Optional_inline}}</dt> + <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при выполнении функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code><strong>true</strong></code> если функция проверки возвращает {{Glossary("truthy")}} значение для каждого элемента массива. Иначе, <code><strong>false</strong></code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>every()</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого <code>callback</code> вернет <em>ложное</em> значение (значение, становящееся равным <code>false</code> при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод <code>every()</code> немедленно вернёт <code>false</code>. В противном случае, если <code>callback</code> вернёт <code>true</code> для всех элементов массива, метод <code>every()</code> вернёт <code>true</code>. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p> + +<p>Если в метод <code>every()</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно <a href="/ru/docs/Web/JavaScript/Reference/Operators/this">обычным правилам определения <code>this</code>, видимого из функции</a>.</p> + +<p>Метод <code>every()</code> не изменяет массив, для которого он был вызван.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>every()</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>every()</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменятся, значения, переданные в функцию <code>callback</code>, будут значениями на тот момент времени, когда метод <code>every()</code> посетит их; удалённые элементы посещены не будут.</p> + +<p>Метод <code>every()</code> действует подобно квантору всеобщности в математике. В частности, он вернёт <code>true</code> для пустого массива. Это так называемая <a href="http://en.wikipedia.org/wiki/Vacuous_truth#Vacuous_truths_in_mathematics">бессодержательная истина (vacuously true)</a> — все элементы <a href="http://ru.wikipedia.org/wiki/Пустое_множество">пустого множества</a> (<a href="http://en.wikipedia.org/wiki/Empty_set#Common_problems">англ.</a>) удовлетворяют любому заданному условию.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">Пример: проверка размера всех элементов массива</h3> + +<p>Следующий пример проверяет, являются ли все элементы массива числами, большими 10.</p> + +<pre class="brush: js">function isBigEnough(element, index, array) { + return element >= 10; +} +[12, 5, 8, 130, 44].every(isBigEnough); // false +[12, 54, 18, 130, 44].every(isBigEnough); // true +</pre> + +<h3 id="Example:_Using_arrow_functions" name="Example:_Using_arrow_functions">Пример: использование стрелочных функций</h3> + +<p><a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрелочные функции</a> предоставляют более краткий синтаксис для подобных проверок.</p> + +<pre class="brush: js">[12, 5, 8, 130, 44].every(elem => elem >= 10); // false +[12, 54, 18, 130, 44].every(elem => elem >= 10); // true +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>every()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>every()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает что {{jsxref("Object")}} и {{jsxref("TypeError")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.</p> + +<pre class="brush: js">if (!Array.prototype.every) { + Array.prototype.every = function(callbackfn, thisArg) { + 'use strict'; + var T, k; + + if (this == null) { + throw new TypeError('this is null or not defined'); + } + + // 1. Положим O равным результату вызова ToObject над значением + // this, переданным в качестве аргумента. + var O = Object(this); + + // 2. Положим lenValue равным результату вызова внутреннего метода Get + // объекта O с аргументом "length". + // 3. Положим len равным ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. Если IsCallable(callbackfn) равен false, выкинем исключение TypeError. + if (typeof callbackfn !== 'function') { + throw new TypeError(); + } + + // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. + if (arguments.length > 1) { + T = thisArg; + } + + // 6. Положим k равным 0. + k = 0; + + // 7. Пока k < len, будем повторять + while (k < len) { + + var kValue; + + // a. Положим Pk равным ToString(k). + // Это неявное преобразование для левостороннего операнда в операторе in + // b. Положим kPresent равным результату вызова внутреннего метода + // HasProperty объекта O с аргументом Pk. + // Этот шаг может быть объединён с шагом c + // c. Если kPresent равен true, то + if (k in O) { + + // i. Положим kValue равным результату вызова внутреннего метода Get + // объекта O с аргументом Pk. + kValue = O[k]; + + // ii. Положим testResult равным результату вызова внутреннего метода Call + // функции callbackfn со значением T в качестве this и списком аргументов, + // содержащим kValue, k и O. + var testResult = callbackfn.call(T, kValue, k, O); + + // iii. Если ToBoolean(testResult) равен false, вернём false. + if (!testResult) { + return false; + } + } + k++; + } + return true; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.16', 'Array.prototype.every')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.every', 'Array.prototype.every')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.every', 'Array.prototype.every')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Array.every")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Array.prototype.find()")}}</li> + <li>{{jsxref("TypedArray.prototype.every()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/fill/index.html b/files/ru/web/javascript/reference/global_objects/array/fill/index.html new file mode 100644 index 0000000000..1bef1fd1ea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/fill/index.html @@ -0,0 +1,159 @@ +--- +title: Array.prototype.fill() +slug: Web/JavaScript/Reference/Global_Objects/Array/fill +tags: + - Array + - ECMAScript2015 + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/fill +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>fill()</strong></code> заполняет все элементы массива от начального до конечного индексов одним значением.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-fill.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.fill(<var>value</var>[, <var>start<var> = 0[, <var>end</var> = this.length]])</var></var></code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, заполняющее массив.</dd> + <dt><code>start</code></dt> + <dd>Необязательный параметр. Начальный индекс.</dd> + <dt><code>end</code></dt> + <dd>Необязательный параметр. Конечный индекс.</dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + + <p>Изменённый массив.</p> + </dt> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Элементы заполняются в полузакрытом интервале [<code>start</code>, <code>end</code>).</p> + +<p>Метод <strong><code>fill</code></strong> принимает до трёх аргументов — <code>value</code>, <code>start</code> и <code>end</code>. Аргументы <code>start</code> и <code>end</code> являются необязательными со значениями по умолчанию, равными <code>0</code> и <code>length</code> объекта <code>this</code> соответственно.</p> + +<p>Если аргумент <code>start</code> является отрицательным, он трактуется как <code>length+start</code>, где <code>length</code> — это длина массива. Если аргумент <code>end</code> является отрицательным, он трактуется как <code>length+end</code>.</p> + +<p>Метод <code><strong>fill</strong></code> намеренно является <em>обобщённым</em>, он не требует, чтобы значение <code>this</code> внутри него было объектом <code>Array</code>.</p> + +<p>Метод <code><strong>fill</strong></code> является <em>изменяющим методом</em>, он изменит объект <code>this</code> и вернёт его, а не просто вернёт копию.</p> + +<p>Если аргумент <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">value</span></font> является объектом, тo метод <code><strong>fill</strong></code> заполнит массив ссылками на этот объект.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre><code>[1, 2, 3].fill(4); // [4, 4, 4] +[1, 2, 3].fill(4, 1); // [1, 4, 4] +[1, 2, 3].fill(4, 1, 2); // [1, 4, 3] +[1, 2, 3].fill(4, 1, 1); // [1, 2, 3] +[1, 2, 3].fill(4, 3, 3); // [1, 2, 3] +[1, 2, 3].fill(4, 3, 3); // [1, 2, 3] +[1, 2, 3].fill(4, -3, -2); // [4, 2, 3] +[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3] +[1, 2, 3].fill(4, 3, 5); // [1, 2, 3] +Array(3).fill(4); // [4, 4, 4] +[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3} + +// Объекты заполняются по ссылке. +var arr = Array(3).fill({}) // [{}, {}, {}]; +arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]</code></pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre><code>if (!Array.prototype.fill) { + Object.defineProperty(Array.prototype, 'fill', { + value: function(value) { + + // Шаги 1-2. + if (this == null) { + throw new TypeError('this is null or not defined'); + } + + var O = Object(this); + + // Шаги 3-5. + var len = O.length >>> 0; + + // Шаги 6-7. + var start = arguments[1]; + var relativeStart = start >> 0; + + // Шаг 8. + var k = relativeStart < 0 ? + Math.max(len + relativeStart, 0) : + Math.min(relativeStart, len); + + // Шаги 9-10. + var end = arguments[2]; + var relativeEnd = end === undefined ? + len : end >> 0; + + // Шаг 11. + var final = relativeEnd < 0 ? + Math.max(len + relativeEnd, 0) : + Math.min(relativeEnd, len); + + // Шаг 12. + while (k < final) { + O[k] = value; + k++; + } + + // Шаг 13. + return O; + } + }); +}</code></pre> + +<p>Если вам нужно поддерживать действительно устаревшие движки JavaScript, которые не поддерживают <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a>, то лучше вообще не использовать полифилы для методов <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">Array.prototype</span></font>, так как вы не можете сделать их не перечисляемыми.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.fill', 'Array.prototype.fill')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.fill', 'Array.prototype.fill')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.fill")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("TypedArray.prototype.fill()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/filter/index.html b/files/ru/web/javascript/reference/global_objects/array/filter/index.html new file mode 100644 index 0000000000..16333b09c6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/filter/index.html @@ -0,0 +1,302 @@ +--- +title: Array.prototype.filter() +slug: Web/JavaScript/Reference/Global_Objects/Array/filter +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - filter + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/filter +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>filter()</strong></code> создаёт новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-filter.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте https://github.com/mdn/interactive-examples и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="brush: js">let <var>newArray</var> = <var>arr</var>.filter(<var>callback</var>(<var>element</var>[, <var>index</var>, [<var>array</var>]])[, <var>thisArg</var>]) +</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, которая будет вызвана для каждого элемента массива. Если функция возвращает <code>true</code>, то элемент остаётся в массиве, если <code>false</code>, то удаляется.</dd> + <dd>В функцию будет передано три аргумента:</dd> + <dd> + <dl> + <dt><code>element</code></dt> + <dd>Текущий обрабатываемый элемент в массиве.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента в массиве.</dd> + <dt><code>array</code>{{optional_inline}}</dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code> {{optional_inline}}</dt> + <dd>Значение, используемое в качестве <code>this</code> при вызове функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Вернётся новый массив с элементами, которые проходят тест, то есть <code>callback</code> вернёт <code>true</code>. Если ни один элемент не пройдёт тест, то будет возвращён пустой массив.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>filter()</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве, и конструирует новый массив со всеми значениями, для которых функция <code>callback</code> вернула <code>true</code> или {{Glossary('Truthy', 'значение, становящееся true при приведении в boolean')}}. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались. Элементы массива, не прошедшие проверку функцией <code>callback</code>, просто пропускаются и не включаются в новый массив.</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами:</p> + +<ol> + <li>значение элемента;</li> + <li>индекс элемента;</li> + <li>массив, по которому осуществляется проход.</li> +</ol> + +<p>Если в метод <code>filter()</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае, в качестве значения <code>this</code> будет использоваться значение <code>{{jsxref("Global_Objects/undefined", "undefined")}}</code>. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно {{jsxref('Operators/this', 'обычным правилам определения <code>this</code>, видимого из функции')}}.</p> + +<p>Метод <code>filter()</code> не изменяет массив, для которого он был вызван.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>filter()</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>filter()</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменятся, значения, переданные в функцию <code>callback</code>, будут значениями на тот момент времени, когда метод <code>filter()</code> посетит их; удалённые элементы посещены не будут.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Filtering_out_all_small_values" name="Filtering_out_all_small_values">Отфильтровывание всех маленьких значений</h3> + +<p>Следующий пример использует <code>filter()</code> для создания отфильтрованного массива, все элементы которого больше или равны 10, а все меньшие 10 удалены.</p> + +<pre class="brush: js">function isBigEnough(value) { + return value >= 10; +} + +let filtered = [12, 5, 8, 130, 44].filter(isBigEnough); +// массив filtered равен [12, 130, 44] +</pre> + +<h3 id="Find_all_prime_numbers_in_an_array" name="Find_all_prime_numbers_in_an_array">Найти все простые числа в массиве</h3> + +<p>Следующий пример возвращает все простые числа в массиве:</p> + +<pre><code>let array = [4, 6, 8, 9, 12, 53, -17, 2, 5, 7, 31, 97, -1, 17]; + +function isPrime(num) { + if (num <= 1) + return false; + else if (num === 2) + return true; + else { + for (let i = 2; i < num; i++) + if (num % i === 0) + return false; + return true; + } +} + +console.log(array.filter(isPrime)); // [53, 2, 5, 7, 31, 97, 17]</code></pre> + +<h3 id="Filtering_invalid_entries_from_JSON" name="Filtering_invalid_entries_from_JSON">Фильтрация неверных записей в JSON</h3> + +<p>В следующем примере метод <code>filter()</code> используется для создания отфильтрованного объекта JSON, все элементы которого содержат ненулевое числовое поле <code>id</code>.</p> + +<pre class="brush: js">var arr = [ + { id: 15 }, + { id: -1 }, + { id: 0 }, + { id: 3 }, + { id: 12.2 }, + { }, + { id: null }, + { id: NaN }, + { id: 'undefined' } +]; + +var invalidEntries = 0; + +function isNumber(obj) { + return obj!== undefined && typeof(obj) === 'number' && !isNaN(obj); +} + +function filterByID(item) { + if (isNumber(item.id) && item.id !== 0) { + return true; + } + invalidEntries++; + return false; +} + +var arrByID = arr.filter(filterByID); + +console.log('Отфильтрованный массив\n', arrByID); +// Filtered Array +// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }] + +console.log('Количество ошибочных записей = ', invalidEntries); +// Number of Invalid Entries = 5 + +</pre> + +<h3 id="Поиск_в_массиве">Поиск в массиве</h3> + +<p>В следующем примере <code>filter()</code> используется для фильтрации содержимого массива на основе входных данных.</p> + +<pre class="brush: js">var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; + +/** + * Элементы массива фильтруется на основе критериев поиска (query) +*/ +function filterItems(query) { + return fruits.filter(function(el) { + return el.toLowerCase().indexOf(query.toLowerCase()) > -1; + }) +} + +console.log(filterItems('ap')); // ['apple', 'grapes'] +console.log(filterItems('an')); // ['banana', 'mango', 'orange']</pre> + +<h3 id="ES2015_implementation" name="ES2015_implementation">ES2015 реализация</h3> + +<pre class="brush: js">const fruits = ['apple', 'banana', 'grapes', 'mango', 'orange']; + +/** + * Элементы массива фильтруется на основе критериев поиска (query) + */ +const filterItems = (query) => { + return fruits.filter((el) => + el.toLowerCase().indexOf(query.toLowerCase()) > -1 + ); +} + +console.log(filterItems('ap')); // ['apple', 'grapes'] +console.log(filterItems('an')); // ['banana', 'mango', 'orange'] + +</pre> + +<h3 id="Affecting_Initial_Array_modifying_appending_and_deleting" name="Affecting_Initial_Array_modifying_appending_and_deleting">Влияние на начальный массив (изменение, добавление и удаление)</h3> + +<p>В следующих примерах проверяется поведение метода <code>filter</code> при изменении массива.</p> + +<pre class="brush: js">// Изменение всех элементов +let words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present'] + +const modifiedWords = words.filter( (word, index, arr) => { + arr[index+1] +=' extra' + return word.length < 6 +}) + +console.log(modifiedWords) +// Обратите внимание, что есть три слова длиной менее 6, но так как они были изменены, +// возвращается одно слово ['spray'] + +// Добавление новых элементов +words = ['spray', 'limit', 'exuberant', 'destruction','elite', 'present'] +const appendedWords = words.filter( (word, index, arr) => { + arr.push('new') + return word.length < 6 +}) + +console.log(appendedWords) +// Только три слова удовлетворяют условию, хотя `words` теперь имеет куда больше слов, +// длинной меньше 6 символов: ['spray', 'limit', 'elite'] + +// Удаление элементов +words = ['spray', 'limit', 'exuberant', 'destruction', 'elite', 'present'] +const deleteWords = words.filter( (word, index, arr) => { + arr.pop() + return word.length < 6 +}) + +console.log(deleteWords) +// Заметьте, что 'elite' не получено, так как удалено из `words` до того, +// как filter смог получить его: ['spray', 'limit']</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>filter()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>filter()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что <code>fn.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}} и что {{jsxref("Array.prototype.push()")}} содержит своё оригинальное значение.</p> + +<pre class="brush: js">if (!Array.prototype.filter) { + Array.prototype.filter = function(fun/*, thisArg*/) { + 'use strict'; + + if (this === void 0 || this === null) { + throw new TypeError(); + } + + var t = Object(this); + var len = t.length >>> 0; + if (typeof fun !== 'function') { + throw new TypeError(); + } + + var res = []; + var thisArg = arguments.length >= 2 ? arguments[1] : void 0; + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; + + // ПРИМЕЧАНИЕ: Технически, здесь должен быть Object.defineProperty на + // следующий индекс, поскольку push может зависеть от + // свойств на Object.prototype и Array.prototype. + // Но этот метод новый и коллизии должны быть редкими, + // так что используем более совместимую альтернативу. + if (fun.call(thisArg, val, i, t)) { + res.push(val); + } + } + } + + return res; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.20', 'Array.prototype.filter')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.filter', 'Array.prototype.filter')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.filter', 'Array.prototype.filter')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.filter")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Array.prototype.reduce()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/find/index.html b/files/ru/web/javascript/reference/global_objects/array/find/index.html new file mode 100644 index 0000000000..f4b8844a62 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/find/index.html @@ -0,0 +1,167 @@ +--- +title: Array.prototype.find() +slug: Web/JavaScript/Reference/Global_Objects/Array/find +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/find +--- +<p>{{JSRef}}</p> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>find()</strong></code> возвращает <strong>значение</strong> первого найденного в массиве элемента, которое удовлетворяет условию переданному в callback функции. В противном случае возвращается {{jsxref("Global_Objects/undefined", "undefined")}}.</p> + +<p>Также смотрите метод {{jsxref("Array.findIndex", "findIndex()")}}, который возвращает <strong>индекс</strong> найденного в массиве элемента вместо его значения.</p> + +<p>Если вам нужно найти позицию элемента или наличие элемента в массиве, используйте {{jsxref("Array.prototype.indexOf()")}} или {{jsxref("Array.prototype.includes()")}} соответственно.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.find(<var>callback</var>[, <var>thisArg</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, вызывающаяся для каждого значения в массиве, принимает три аргумента: + <dl> + <dt><code>element</code></dt> + <dd>Текущий обрабатываемый элемент в массиве.</dd> + <dt><code>index</code></dt> + <dd>Индекс текущего обрабатываемого элемента в массиве.</dd> + <dt><code>array</code></dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code></dt> + <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при выполнении функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Значение элемента из массива, если элемент прошёл проверку, иначе {{jsxref("undefined")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>find</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт <code>true</code>. Если такой элемент найден, метод <code>find</code> немедленно вернёт значение этого элемента. В противном случае, метод <code>find</code> вернёт {{jsxref("Global_Objects/undefined", "undefined")}}. До Firefox 34 функция <code>callback</code> не вызывалась для «дырок» в массивах (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1058394">bug 1058394</a>).</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p> + +<p>Если в метод <code>find</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}.</p> + +<p>Метод <code>find</code> не изменяет массив, для которого он был вызван.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>find</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>find</code>, не будут посещены функцией <code>callback</code>. Если существующие, непосещённые элементы массива изменяются функцией <code>callback</code>, их значения, переданные в функцию, будут значениями на тот момент времени когда метод <code>find</code> посетит их; удалённые элементы все еще будут посещены. </p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">Пример: поиск простого числа в массиве</h3> + +<p>Следующий пример находит в массиве положительных чисел элемент, являющийся простым числом (либо возвращает {{jsxref("Global_Objects/undefined", "undefined")}}, если в массиве нет простых чисел).</p> + +<pre class="brush: js">function isPrime(element, index, array) { + var start = 2; + while (start <= Math.sqrt(element)) { + if (element % start++ < 1) { + return false; + } + } + return element > 1; +} + +console.log([4, 6, 8, 12].find(isPrime)); // undefined, не найдено +console.log([4, 5, 8, 12].find(isPrime)); // 5 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий сниппет в качестве полифилла:</p> + +<pre><code>// https://tc39.github.io/ecma262/#sec-array.prototype.find +if (!Array.prototype.find) { + Object.defineProperty(Array.prototype, 'find', { + value: function(predicate) { + // 1. Let O be ? ToObject(this value). + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + + var o = Object(this); + + // 2. Let len be ? ToLength(? Get(O, "length")). + var len = o.length >>> 0; + + // 3. If IsCallable(predicate) is false, throw a TypeError exception. + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + + // 4. If thisArg was supplied, let T be thisArg; else let T be undefined. + var thisArg = arguments[1]; + + // 5. Let k be 0. + var k = 0; + + // 6. Repeat, while k < len + while (k < len) { + // a. Let Pk be ! ToString(k). + // b. Let kValue be ? Get(O, Pk). + // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)). + // d. If testResult is true, return kValue. + var kValue = o[k]; + if (predicate.call(thisArg, kValue, k, o)) { + return kValue; + } + // e. Increase k by 1. + k++; + } + + // 7. Return undefined. + return undefined; + }, + configurable: true, + writable: true + }); +}</code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.find', 'Array.prototype.find')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.find', 'Array.prototype.find')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Array.find")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.findIndex()")}} {{experimental_inline}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/findindex/index.html b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..7cbc30e738 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,138 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>findIndex()</strong></code> возвращает <strong>индекс</strong> в массиве, если элемент удовлетворяет условию проверяющей функции. В противном случае возвращается -1.</p> + +<p>Также смотрите метод {{jsxref("Array.find", "find()")}}, который возвращает <strong>значение</strong> найденного в массиве элемента вместо его индекса.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.findIndex(<var>callback</var>[, <var>thisArg</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, вызывающаяся для каждого значения в масиве, принимает три аргумента: + <dl> + <dt><code>element</code></dt> + <dd>Текущий обрабатываемый элемент в массиве.</dd> + <dt><code>index</code></dt> + <dd>Индекс текущего обрабатываемого элемента в массиве.</dd> + <dt><code>array</code></dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code></dt> + <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при выполнении функции <code>callback</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>findIndex</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт <code>true</code>. Если такой элемент найден, метод <code>findIndex</code> немедленно вернёт индекс этого элемента. В противном случае, метод <code>findIndex</code> вернёт -1. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p> + +<p>Если в метод <code>findIndex</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}.</p> + +<p>Метод <code>findIndex</code> не изменяет массив, для которого он был вызван.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>findIndex</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>findIndex</code>, не будут посещены функцией <code>callback</code>. Если существующие, непосещённые элементы массива изменяются функцией <code>callback</code>, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод <code>findIndex</code> посетит их; удалённые элементы посещены не будут.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Find_the_index_of_a_prime_number_in_an_array" name="Example:_Find_the_index_of_a_prime_number_in_an_array">Пример: поиск индекса простого числа в массиве</h3> + +<p>Следующий пример находит в массиве индекс элемента, являющийся простым числом (либо возвращает -1, если в массиве нет простых чисел).</p> + +<pre class="brush: js">function isPrime(element, index, array) { + var start = 2; + while (start <= Math.sqrt(element)) { + if (element % start++ < 1) { + return false; + } + } + return element > 1; +} + +console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, не найдено +console.log([4, 6, 7, 12].findIndex(isPrime)); // 2 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий кусочек кода в качестве полифилла:</p> + +<pre class="brush: js">if (!Array.prototype.findIndex) { + Array.prototype.findIndex = function(predicate) { + if (this == null) { + throw new TypeError('Array.prototype.findIndex called on null or undefined'); + } + if (typeof predicate !== 'function') { + throw new TypeError('predicate must be a function'); + } + var list = Object(this); + var length = list.length >>> 0; + var thisArg = arguments[1]; + var value; + + for (var i = 0; i < length; i++) { + value = list[i]; + if (predicate.call(thisArg, value, i, list)) { + return i; + } + } + return -1; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Array.findIndex")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.find()")}} {{experimental_inline}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/flat/index.html b/files/ru/web/javascript/reference/global_objects/array/flat/index.html new file mode 100644 index 0000000000..7ce48303ea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/flat/index.html @@ -0,0 +1,160 @@ +--- +title: Array.prototype.flat() +slug: Web/JavaScript/Reference/Global_Objects/Array/flat +tags: + - Массив + - Ссылка + - Экспериментальная + - метод + - прототип + - яваскрипт +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flat +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>flat()</strong></code> возвращает новый массив, в котором все элементы вложенных подмассивов были рекурсивно "подняты" на указанный уровень depth.</p> + +<p class="hidden">\{{EmbedInteractiveExample("pages/js/array-flatten.html")}}</p> + +<p class="hidden">Исходный код этого интерактивного примера находится на гитхабе. Если вы желаете внести свой вклад в проект интерактивных примеров, пожалуйста, склонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и пришлите нам пул-реквест.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><var>var newArray = arr</var>.flat(<var>depth</var>);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>depth</code> {{optional_inline}}</dt> + <dd>На сколько уровней вложенности уменьшается мерность исходного массива. По-умолчанию 1.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый массив с объединенными в него подмассивами.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Упрощение_вложенных_массивов">Упрощение вложенных массивов</h3> + +<pre class="brush: js notranslate">var arr1 = [1, 2, [3, 4]]; +arr1.flat(); +// [1, 2, 3, 4] + +var arr2 = [1, 2, [3, 4, [5, 6]]]; +arr2.flat(); +// [1, 2, 3, 4, [5, 6]] + +var arr3 = [1, 2, [3, 4, [5, 6]]]; +arr3.flat(2); +// [1, 2, 3, 4, 5, 6] + +var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]]; +arr4.flat(Infinity); +// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]</pre> + +<h3 id="Упрощение_и_дырки_в_массивах">Упрощение и "дырки" в массивах</h3> + +<p>Метод flat удаляет пустые слоты из массива:</p> + +<pre class="brush: js notranslate">var arr4 = [1, 2, , 4, 5]; +arr4.flat(); +// [1, 2, 4, 5] +</pre> + +<h2 id="Альтернативы">Альтернативы</h2> + +<h3 id="reduce_и_concat"><code>reduce</code> и <code>concat</code></h3> + +<pre class="brush: js notranslate">var arr1 = [1, 2, [3, 4]]; +arr1.flat(); + +// В одномерный массив +arr1.reduce((acc, val) => acc.concat(val), []);// [1, 2, 3, 4] + +//или +const flatSingle = arr => [].concat(...arr); +</pre> + +<pre class="brush: js notranslate">// Для развёртвания многомерных массивов используем рекурсию, reduce и concat +const arr = [1, 2, [3, 4, [5, 6]]]; + +function flatDeep(arr, d = 1) { + return d > 0 ? arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatDeep(val, d - 1) : val), []) + : arr.slice(); +}; + +flatDeep(arr, Infinity); +// [1, 2, 3, 4, 5, 6]</pre> + +<pre class="brush: js notranslate">//не рекурсивное упрощение с использованием стэка +var arr1 = [1,2,3,[1,2,3,4, [2,3,4]]]; +function flatten(input) { + const stack = [...input]; + const res = []; + while (stack.length) { + // забираем последнее значение + const next = stack.pop(); + if (Array.isArray(next)) { + // добавляем к массиву элементы не модифицируя исходное значение + stack.push(...next); + } else { + res.push(next); + } + } + //разворачиваем массив, чтобы восстановить порядок элементов + return res.reverse(); +} +flatten(arr1);// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4] +</pre> + +<pre class="brush: js notranslate">//рекурсивно упрощаем массив +function flatten(array) { + var flattend = []; + (function flat(array) { + array.forEach(function(el) { + if (Array.isArray(el)) flat(el); + else flattend.push(el); + }); + })(array); + return flattend; +} +</pre> + +<div class="hidden"> +<p>Пожалуйста, не добавляйте полифиллы в эту статью: <a href="https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500">https://discourse.mozilla.org/t/mdn-rfc-001-mdn-wiki-pages-shouldnt-be-a-distributor-of-polyfills/24500</a></p> +</div> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td><a href="https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flat"><code>Array.prototype.flat</code> proposal</a></td> + <td>Кандидат (3)</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, пожалуйста просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</div> + +<p>{{Compat("javascript.builtins.Array.flat")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.flatMap()")}}</li> + <li>{{jsxref("Array.prototype.map()")}}</li> + <li>{{jsxref("Array.prototype.reduce()")}}</li> + <li>{{jsxref("Array.prototype.concat()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html b/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html new file mode 100644 index 0000000000..4465a92711 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/flatmap/index.html @@ -0,0 +1,126 @@ +--- +title: Array.prototype.flatMap() +slug: Web/JavaScript/Reference/Global_Objects/Array/flatMap +translation_of: Web/JavaScript/Reference/Global_Objects/Array/flatMap +--- +<div>{{JSRef}}</div> + +<p><code><font face="Verdana, arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Метод </span></font><strong>flatMap()</strong></code> сначала применяет функцию к каждому элементу, а затем преобразует полученый результат в плоскую структуру и помещает в новый массив. Это идентично <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a> функции, с последующим применением функции <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/flat">flat</a> с параметром depth ( глубина ) равным 1, но <code>flatMap</code> часто бывает полезным, так как работает немного более эффективно.</p> + +<p class="hidden">\{{EmbedInteractiveExample("pages/js/array-flatmap.html")}}</p> + +<p class="hidden">Исходный код данного примера расположен в GitHub репозитории. Если вы хотите улучшить этот пример, вам нужно склонировать <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> внести в него измения и отправить их нам через PR ( pull request ).</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>var new_array = arr</var>.flatMap(function <var>callback(currentValue[, index[, array]]) { + // возращает элемент для new_array +}</var>[, <var>thisArg</var>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция которая производит элементы нового массива, принимает три аргумента: + <dl> + <dt></dt> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd>Индекс обрабатываемого элемента в массиве.</dd> + <dt><code>array</code>{{optional_inline}}</dt> + <dd>Массив по которому осуществляется обход.</dd> + </dl> + </dd> + <dt><code>thisArg</code>{{optional_inline}}</dt> + <dd>Значение используемое в качестве <code>this</code> при вызове функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый массив, каждый элемент которого является результатом выполнения функции callback и "поднят" на уровень 1.</p> + +<h2 id="Описание">Описание</h2> + +<p>Смотрите {{jsxref("Array.prototype.map()")}} для детального описания callback функции. Метод <code>flatMap</code> идентичен методу<span style="letter-spacing: -0.00333rem;"> </span><code style="letter-spacing: -0.00333rem;"><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a></code><span style="letter-spacing: -0.00333rem;"> с последующим вызовом</span><span style="letter-spacing: -0.00333rem;"> </span><code style="letter-spacing: -0.00333rem;"><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat">flat</a></code><span style="letter-spacing: -0.00333rem;"> с параметром depth 1.</span></p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="map_и_flatMap"><code>map</code> и <code>flatMap</code></h3> + +<pre class="brush: js">let arr1 = <span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>[</span></span><span class="constant decimal js numeric"><span>1</span></span><span class="comma delimiter js meta object"><span>,</span></span><span> </span><span class="brace js meta square"><span>2, 3, 4]; + +arr1.map(</span></span></span></span></span>x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>);</span></span></span></span></span> +// [[2], [4], [6], [8]] + +arr1.flatMap(x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>); +// [2, 4, 6, 8]</span></span></span></span></span> + +// выравнивается только один уровень +arr1.flatMap(x => [[x * 2]]); +// [[2], [4], [6], [8]] +</pre> + +<p>Хотя результат полученый в примере выше можно было получить используя просто map, ниже мы рассмотрим пример где <code>flatMap</code> является более эффективным.</p> + +<p>Давайте сгенерируем список слов из списка предложений.</p> + +<pre class="brush: js">let arr1 = ["it's Sunny in", "", "California"]; + +arr1.map(x => x.split(" ")); +// [["it's","Sunny","in"],[""],["California"]] + +arr1.flatMap(x => x.split(" ")<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>); +// ["it's","Sunny","in", "", "California"]</span></span></span></span></span></pre> + +<p>Обратите внимание, длина списка вывода может отличаться от длины списка ввода.</p> + +<div class="line"><span class="js source"><span class="comment double-slash js line"><span class="comment definition js punctuation"><span>//</span></span><span>=> [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></span></span></div> + +<h2 id="Альтернативное_решение">Альтернативное решение</h2> + +<h3 id="reduce_and_concat"><code>reduce</code> and <code>concat</code></h3> + +<pre class="brush: js">var arr1 = <span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>[</span></span><span class="constant decimal js numeric"><span>1</span></span><span class="comma delimiter js meta object"><span>,</span></span><span> </span><span class="brace js meta square"><span>2, 3, 4]; +</span></span></span></span></span> +arr1.flatMap(x => [x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>);</span></span></span></span></span> +// is equivalent to +arr1.reduce((acc, x) => acc.concat([x * 2]<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>), []);</span></span></span></span></span> +<span class="js source"><span class="function-call js meta"><span class="js meta"><span class="brace js meta square"><span>// [2, 4, 6, 8]</span></span></span></span></span> +</pre> + +<div class="line"><span class="js source"><span class="comment double-slash js line"><span class="comment definition js punctuation"><span>//</span></span><span>=> [1, 2, 3, 4, 5, 6, 7, 8, 9]</span></span></span></div> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.flatmap', 'Array.prototype.flatMap')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div> +<div class="hidden">Таблица поддержки браузерами сгенерированна из представленных данных. Если вы хотите улучшить эти данные, пожалуйста преверьте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и пришлите на PR ( pull request ) с исправлениями.</div> + +<p>{{Compat("javascript.builtins.Array.flatMap")}}</p> +</div> + +<h2 id="См_так_же">См так же:</h2> + +<ul> + <li>{{jsxref("Array.prototype.flat()")}}</li> + <li>{{jsxref("Array.prototype.map()")}}</li> + <li>{{jsxref("Array.prototype.reduce()")}}</li> + <li>{{jsxref("Array.prototype.concat()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/foreach/index.html b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html new file mode 100644 index 0000000000..3787dc7e84 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/foreach/index.html @@ -0,0 +1,388 @@ +--- +title: Array.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Array/forEach +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - forEach + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/forEach +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<p>Метод <code><strong>forEach()</strong></code> выполняет указанную функцию один раз для каждого элемента в массиве.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-foreach.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в GitHub. Если вы хотите внести вклад в проект интерактивных примеров, пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples"> https://github.com/mdn/interactive-examples</a> и отправьте нам pull request.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre><var>arr</var>.forEach(function <var>callback(currentValue, index, array) { + //your iterator +}</var>[, <var>thisArg</var>]);</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, которая будет вызвана для каждого элемента массива. Она принимает от одного до трех аргументов:</dd> + <dd> + <dl> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент в массиве.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента в массиве.</dd> + <dt><code>array</code>{{optional_inline}}</dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code></dt> + <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при вызове функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>forEach()</code> выполняет функцию <code>callback</code> один раз для каждого элемента, находящегося в массиве в порядке возрастания. Она не будет вызвана для удалённых или пропущенных элементов массива. Однако, она будет вызвана для элементов, которые присутствуют в массиве и имеют значение {{jsxref("Global_Objects/undefined", "undefined")}}.</p> + +<p>Функция <code>callback</code> будет вызвана с <strong>тремя аргументами</strong>:</p> + +<ul> + <li>значение элемента (<strong>value</strong>)</li> + <li>индекс элемента (<strong>index</strong>)</li> + <li>массив, по которому осуществляется проход (<strong>array</strong>)</li> +</ul> + +<p>Если в метод <code>forEach()</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае, в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно {{jsxref('Operators/this', 'обычным правилам определения <code>this</code>, видимого из функции')}}.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>forEach()</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>forEach()</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменятся, значения, переданные в функцию <code>callback</code>, будут значениями на тот момент времени, когда метод <code>forEach()</code> посетит их; удалённые элементы посещены не будут. Если уже посещённые элементы удаляются во время итерации (например, с помощью {{jsxref("Array.prototype.shift()", "shift()")}}), последующие элементы будут пропущены. ({{jsxref('Global_Objects/Array/forEach', 'Смотри пример ниже', 'Модификация_массива_во_время_итерации')}})</p> + +<div class="note"> +<p><strong>Примечание:</strong> Не существует способа остановить или прервать цикл <code>forEach()</code> кроме как выбрасыванием исключения. Если вам необходимо такое поведение, метод <code>forEach()</code> неправильный выбор.</p> + +<p>Досрочное прекращение может быть достигнуто с:</p> + +<ul> + <li>Простой цикл {{jsxref('Statements/for', 'for')}}</li> + <li>Циклы {{jsxref('Statements/for...of', 'for...of')}} / {{jsxref('Statements/for...in', 'for...in')}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Array.prototype.find()")}}</li> + <li>{{jsxref("Array.prototype.findIndex()")}}</li> +</ul> + +<p>Если нужно протестировать элементы массива на условие и нужно вернуть булево значение, вы можете воспользоваться методами {{jsxref("Array.prototype.every()", "every()")}}, {{jsxref("Array.prototype.some()", "some()")}}, {{jsxref("Array.prototype.find()", "find()")}} или {{jsxref("Array.prototype.findIndex()", "findIndex()")}}.</p> + +<p>Метод <code>forEach()</code> выполняет функцию <code>callback</code> один раз для каждого элемента массива; в отличие от методов {{jsxref("Array.prototype.every()", "every()")}} и {{jsxref("Array.prototype.some()", "some()")}}, он всегда возвращает значение {{jsxref("Global_Objects/undefined", "undefined")}}.</p> +</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="sparseArray" name="sparseArray">Нет операции для неинициализированных значений (разреженные массивы)</h3> + +<pre class="brush: js">const arraySparse = [1,3,,7] +let numCallbackRuns = 0 + +arraySparse.forEach((element) => { + console.log(element) + numCallbackRuns++ +}) + +console.log("numCallbackRuns: ", numCallbackRuns) + +// 1 +// 3 +// 7 +// numCallbackRuns: 3 +// комментарий: как вы видите пропущенное значение между 3 и 7 не вызывало функцию callback.</pre> + +<h3 id="Конвертируем_цикл_for_в_forEach">Конвертируем цикл for в forEach</h3> + +<pre class="brush:js">const items = ['item1', 'item2', 'item3'] +const copy = [] + +// до +for (let i = 0; i < items.length; i++) { + copy.push(items[i]) +} + +// после +items.forEach(function(item){ + copy.push(item) +}) +</pre> + +<h3 id="Printing_the_contents_of_an_array" name="Printing_the_contents_of_an_array">Печать содержимого массива</h3> + +<div class="blockIndicator note"> +<p><strong>Примечание:</strong> Для отображения содержимого массива в консоли вы можете использовать <a href="/ru/docs/Web/API/Console/table" title="Отображает табличные данные в виде таблицы"><code>console.table()</code></a>, который выводит отформатированную версию массива.</p> + +<p>Следующий пример иллюстрирует альтернативный подход, использующий <code>forEach()</code>.</p> +</div> + +<p>Следующий код выводит каждый элемент массива на новой строке журнала:</p> + +<pre class="brush: js">function logArrayElements(element, index, array) { + console.log('a[' + index + '] = ' + element); +} + +// Обратите внимание на пропуск по индексу 2, там нет элемента, поэтому он не посещается +[2, 5, , 9].forEach(logArrayElements); +// логи: +// a[0] = 2 +// a[1] = 5 +// a[3] = 9 +</pre> + +<h3 id="Использование_thisArg">Использование <code><var>thisArg</var></code></h3> + +<p>Следующий (надуманный) пример обновляет свойства объекта, когда перебирает записи массива:</p> + +<pre class="brush:js">function Counter() { + this.sum = 0 + this.count = 0 +} +Counter.prototype.add = function(array) { + array.forEach((entry) => { + this.sum += entry + ++this.count + }, this) + // ^---- Note +} + +const obj = new Counter() +obj.add([2, 5, 9]) +obj.count +// 3 +obj.sum +// 16 +</pre> + +<p>Поскольку в <code>forEach()</code>передан параметр <code><var>thisArg</var></code> (<code>this</code>), он затем передаётся в <code><var>callback</var></code> при каждом вызове. И callback использует его в качестве собственного значения <code>this</code>.</p> + +<div class="note"> +<p><strong>Примечание:</strong> Если при передаче callback функции используется {{jsxref('Functions/Arrow_functions', 'выражение стрелочной функции')}}, параметр <code><var>thisArg</var></code> может быть опущен, так как все стрелочные функции лексически привязываются к значению{{jsxref("Operators/this", "this")}}.</p> +</div> + +<h3 id="Breaking_a_loop" name="Breaking_a_loop">Прерывание цикла</h3> + +<p>Следующий код использует {{jsxref("Array.prototype.every()")}} для логирования содержимого массива и останавливается при превышении значением заданного порогового значения <code>THRESHOLD</code>.</p> + +<pre class="brush: js">var THRESHOLD = 12; +var v = [5, 2, 16, 4, 3, 18, 20]; +var res; + +res = v.every(function(element, index, array) { + console.log('element:', element); + if (element >= THRESHOLD) { + return false; + } + + return true; +}); +console.log('res:', res); +// логи: +// element: 5 +// element: 2 +// element: 16 +// res: false + +res = v.some(function(element, index, array) { + console.log('element:', element); + if (element >= THRESHOLD) { + return true; + } + + return false; +}); +console.log('res:', res); +// логи: +// element: 5 +// element: 2 +// element: 16 +// res: true +</pre> + +<h3 id="An_object_copy_function" name="An_object_copy_function">Функция копирования объекта</h3> + +<p>Следующий код создаёт копию переданного объекта. Существует несколько способов создания копии объекта, и это один из них. Он позволяет понять, каким образом работает <code>Array.prototype.forEach()</code>, используя функции мета-свойств <code>Object.*</code> из ECMAScript 5.</p> + +<pre class="brush: js">function copy(o) { + var copy = Object.create(Object.getPrototypeOf(o)); + var propNames = Object.getOwnPropertyNames(o); + + propNames.forEach(function(name) { + var desc = Object.getOwnPropertyDescriptor(o, name); + Object.defineProperty(copy, name, desc); + }); + + return copy; +} + +var o1 = { a: 1, b: 2 }; +var o2 = copy(o1); // теперь o2 выглядит также, как и o1 +</pre> + +<h3 id="Модификация_массива_во_время_итерации">Модификация массива во время итерации</h3> + +<p>В следующем примере в лог выводится <code>"one"</code>, <code>"two"</code>, <code>"four"</code>.</p> + +<p>При достижении записи, содержащей значение <code>'two'</code>, первая запись всего массива удаляется, в результате чего все оставшиеся записи перемещаются на одну позицию вверх. Поскольку элемент <code>'four'</code> теперь находится на более ранней позиции в массиве, <code>'three'</code> будет пропущен.</p> + +<p><code>forEach()</code> не делает копию массива перед итерацией.</p> + +<pre class="brush:js">let words = ['one', 'two', 'three', 'four'] +words.forEach((word) => { + console.log(word) + if (word === 'two') { + words.shift() + } +}) +// one +// two +// four +</pre> + +<h3 id="Выравнивание_уплощение_массива">Выравнивание (уплощение) массива</h3> + +<p>Следующий пример приведен только для целей обучения. Если вы хотите выравнять массив с помощью встроенных методов, вы можете использовать {{jsxref("Array.prototype.flat()")}}</p> + +<pre class="brush: js">function flatten(arr) { + const result = [] + + arr.forEach((i) => { + if (Array.isArray(i)) { + result.push(...flatten(i)) + } else { + result.push(i) + } + }) + + return result +} + +// Usage +const nested = [1, 2, 3, [4, 5, [6, 7], 8, 9]] + +flatten(nested) // [1, 2, 3, 4, 5, 6, 7, 8, 9] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>forEach()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>forEach()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Object")}} и {{jsxref("TypeError")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.18 +// Ссылка (en): http://es5.github.io/#x15.4.4.18 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.18 +if (!Array.prototype.forEach) { + + Array.prototype.forEach = function (callback, thisArg) { + + var T, k; + + if (this == null) { + throw new TypeError(' this is null or not defined'); + } + + // 1. Положим O равным результату вызова ToObject passing the |this| value as the argument. + var O = Object(this); + + // 2. Положим lenValue равным результату вызова внутреннего метода Get объекта O с аргументом "length". + // 3. Положим len равным ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. Если IsCallable(callback) равен false, выкинем исключение TypeError. + // Смотрите: http://es5.github.com/#x9.11 + if (typeof callback !== 'function') { + throw new TypeError(callback + ' is not a function'); + } + + // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. + if (arguments.length > 1) { + T = thisArg; + } + + // 6. Положим k равным 0 + k = 0; + + // 7. Пока k < len, будем повторять + while (k < len) { + + var kValue; + + // a. Положим Pk равным ToString(k). + // Это неявное преобразование для левостороннего операнда в операторе in + // b. Положим kPresent равным результату вызова внутреннего метода HasProperty объекта O с аргументом Pk. + // Этот шаг может быть объединён с шагом c + // c. Если kPresent равен true, то + if (k in O) { + + // i. Положим kValue равным результату вызова внутреннего метода Get объекта O с аргументом Pk. + kValue = O[k]; + + // ii. Вызовем внутренний метод Call функции callback с объектом T в качестве значения this и + // списком аргументов, содержащим kValue, k и O. + callback.call(T, kValue, k, O); + } + // d. Увеличим k на 1. + k++; + } + // 8. Вернём undefined. + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.18', 'Array.prototype.forEach')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.foreach', 'Array.prototype.forEach')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.forEach")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.find()")}}</li> + <li>{{jsxref("Array.prototype.findIndex()")}}</li> + <li>{{jsxref("Array.prototype.map()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> + <li>{{jsxref("Map.prototype.forEach()")}}</li> + <li>{{jsxref("Set.prototype.forEach()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/from/index.html b/files/ru/web/javascript/reference/global_objects/array/from/index.html new file mode 100644 index 0000000000..f373749ec7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/from/index.html @@ -0,0 +1,216 @@ +--- +title: Array.from() +slug: Web/JavaScript/Reference/Global_Objects/Array/from +tags: + - Array + - ECMAScript 2015 + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/from +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Array.from()</strong></code> создаёт новый экземпляр <code>Array</code> из массивоподобного или итерируемого объекта.</p> + +<p>{{EmbedInteractiveExample("pages/js/array-from.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Array.from(<var>arrayLike</var>[, <var>mapFn</var>[, <var>thisArg</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>arrayLike</code></dt> + <dd>Массивоподобный или итерируемый объект, преобразуемый в массив.</dd> + <dt><code>mapFn</code> {{Optional_inline}}</dt> + <dd>Отображающая функция, вызываемая для каждого элемента массива.</dd> + <dt><code>thisArg</code> {{Optional_inline}}</dt> + <dd>Значение, используемое в качестве <code>this</code> при выполнении функции <code>mapFn</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый экземпляр {{jsxref("Array")}}</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>Array.from()</code> позволяет вам создавать массивы из:</p> + +<ul> + <li>массивоподобных объектов (объектов со свойством <code>length</code> и элементами по индексным ключам) или</li> + <li><a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols">итерируемых объектов</a> (объектов, из которых вы можете достать их элементы, например {{jsxref("Map")}} или {{jsxref("Set")}}).</li> +</ul> + +<p><code>Array.from()</code> имеет необязательный параметр <code>mapFn</code>, который позволяет вам выполнять функцию {{jsxref("Array.prototype.map", "map")}} для каждого элемента создаваемого массива (или его подкласса). Проще говоря, вызов <code>Array.from(obj, mapFn, thisArg)</code> эквивалентен цепочке <code>Array.from(obj).map(mapFn, thisArg)</code>, за исключением того, что он не создаёт промежуточного массива. Это особенно важно для некоторых подклассов массива, вроде <a href="/ru/docs/Web/JavaScript/Typed_arrays">типизированных массивов</a>, поскольку промежуточный массив неизбежно приведёт к усечению значений, чтобы они подпали под подходящий тип.</p> + +<p>Свойство <code>length</code> метода <code>from()</code> равно 1.</p> + +<p>В ES2015 классовый синтаксис позволяет создавать подклассы как встроенных классов, так и классов, определённых пользователем; в результате статические методы класса, вроде <code>Array.from</code> «наследуются» подклассами {{jsxref("Global_Objects/Array", "Array")}} и создают новые экземпляры подкласса, а не класса {{jsxref("Global_Objects/Array", "Array")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Массив_из_строки_String">Массив из строки <code>String</code></h3> + +<pre class="brush: js">Array.from('foo'); +// ['f', 'o', 'o'] +</pre> + +<h3 id="Массив_из_Set">Массив из <code>Set</code></h3> + +<pre class="brush: js">var s = new Set(['foo', window]); +Array.from(s); +// ['foo', window] +</pre> + +<h3 id="Массив_из_Map">Массив из <code>Map</code></h3> + +<pre class="brush: js">var m = new Map([[1, 2], [2, 4], [4, 8]]); +Array.from(m); +// [[1, 2], [2, 4], [4, 8]] +</pre> + +<h3 id="Массив_из_массивоподобного_объекта_(arguments)">Массив из массивоподобного объекта (arguments)</h3> + +<pre class="brush: js">function f() { + return Array.from(arguments); +} + +f(1, 2, 3); +// [1, 2, 3] +</pre> + +<h3 id="Использование_стрелочной_функции_и_Array.from()">Использование стрелочной функции и <code>Array.from()</code></h3> + +<pre class="brush: js">// Использование стрелочной функции в качестве функции отображения для + +// манипулирования элементами +Array.from([1, 2, 3], x => x + x); +// [2, 4, 6] + +// Генерирования последовательности чисел +Array.from({ length: 5 }, (v, k) => k); +// [0, 1, 2, 3, 4]</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>Array.from</code> был добавлен к стандарту ECMA-262 в 6-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>Array.from</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 6-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}} и {{jsxref("Global_Objects/TypeError", "TypeError")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call")}}. Кроме того, поскольку истинные итерируемые объекты не могут быть заменены полифиллом, эта реализация не поддерживает общие итерируемые объекты, как они определены в 6-м издании ECMA-262.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 6-е издание, 22.1.2.1 +// Ссылка: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-array.from +if (!Array.from) { + Array.from = (function() { + var toStr = Object.prototype.toString; + var isCallable = function(fn) { + return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; + }; + var toInteger = function (value) { + var number = Number(value); + if (isNaN(number)) { return 0; } + if (number === 0 || !isFinite(number)) { return number; } + return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number)); + }; + var maxSafeInteger = Math.pow(2, 53) - 1; + var toLength = function (value) { + var len = toInteger(value); + return Math.min(Math.max(len, 0), maxSafeInteger); + }; + + // Свойство length метода from равно 1. + return function from(arrayLike/*, mapFn, thisArg */) { + // 1. Положим C равным значению this. + var C = this; + + // 2. Положим items равным ToObject(arrayLike). + var items = Object(arrayLike); + + // 3. ReturnIfAbrupt(items). + if (arrayLike == null) { + throw new TypeError('Array.from requires an array-like object - not null or undefined'); + } + + // 4. Если mapfn равен undefined, положим mapping равным false. + var mapFn = arguments.length > 1 ? arguments[1] : void undefined; + var T; + if (typeof mapFn !== 'undefined') { + // 5. иначе + // 5. a. Если вызов IsCallable(mapfn) равен false, выкидываем исключение TypeError. + if (!isCallable(mapFn)) { + throw new TypeError('Array.from: when provided, the second argument must be a function'); + } + + // 5. b. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. + if (arguments.length > 2) { + T = arguments[2]; + } + } + + // 10. Положим lenValue равным Get(items, "length"). + // 11. Положим len равным ToLength(lenValue). + var len = toLength(items.length); + + // 13. Если IsConstructor(C) равен true, то + // 13. a. Положим A равным результату вызова внутреннего метода [[Construct]] + // объекта C со списком аргументов, содержащим единственный элемент len. + // 14. a. Иначе, положим A равным ArrayCreate(len). + var A = isCallable(C) ? Object(new C(len)) : new Array(len); + + // 16. Положим k равным 0. + var k = 0; + // 17. Пока k < len, будем повторять... (шаги с a по h) + var kValue; + while (k < len) { + kValue = items[k]; + if (mapFn) { + A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k); + } else { + A[k] = kValue; + } + k += 1; + } + // 18. Положим putStatus равным Put(A, "length", len, true). + A.length = len; + // 20. Вернём A. + return A; + }; + }()); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.from', 'Array.from')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-array.from', 'Array.from')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Array.from")}}</div> + +<div id="compat-mobile"></div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Array.prototype.map()")}}</li> + <li>{{jsxref("TypedArray.from()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/includes/index.html b/files/ru/web/javascript/reference/global_objects/array/includes/index.html new file mode 100644 index 0000000000..61bbdf1620 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/includes/index.html @@ -0,0 +1,171 @@ +--- +title: Array.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/Array/includes +tags: + - JavaScript + - Prototype + - Reference + - polyfill + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/includes +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>includes()</strong></code> определяет, содержит ли массив определённый элемент, возвращая в зависимости от этого <code>true</code> или <code>false</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-includes.html")}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>arr</var>.includes(<var>searchElement[</var>, <var>fromIndex = 0]</var>) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>searchElement</code></dt> + <dd>Искомый элемент.</dd> + <dt><code>fromIndex</code> {{optional_inline}}</dt> + <dd>Позиция в массиве, с которой начинать поиск элемента <code>searchElement</code>. При отрицательных значениях поиск производится начиная с индекса <code>array.length + fromIndex</code> по возрастанию. Значение по умолчанию равно 0.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Boolean")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">[1, 2, 3].includes(2); // true +[1, 2, 3].includes(4); // false +[1, 2, 3].includes(3, 3); // false +[1, 2, 3].includes(3, -1); // true +[1, 2, NaN].includes(NaN); // true +</pre> + +<h3 id="fromIndex_больше_или_равен_длине_массива"><code>fromIndex</code> больше или равен длине массива</h3> + +<p>Если <code>fromIndex</code> больше или равен длине массива, то возвращается <code>false</code>. При этом поиск не производится.</p> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; + +arr.includes('c', 3); // false +arr.includes('c', 100); // false</pre> + +<h3 id="Вычисленный_индекс_меньше_нуля_0">Вычисленный индекс меньше нуля 0</h3> + +<p>Если <code>fromIndex</code> отрицательный, то вычисляется индекс, начиная с которого будет производиться поиск элемента <code>searchElement</code>. Если вычисленный индекс меньше нуля, то поиск будет производиться во всём массиве.</p> + +<pre class="brush: js">// длина массива равна 3 +// fromIndex равен -100 +// вычисленный индекс равен 3 + (-100) = -97 + +var arr = ['a', 'b', 'c']; + +arr.includes('a', -100); // true +arr.includes('b', -100); // true +arr.includes('c', -100); // true</pre> + +<h3 id="Использование_includes()_в_качестве_общих_метода">Использование <code>includes()</code> в качестве общих метода</h3> + +<p><code>includes()</code> специально сделан общим. Он не требует, чтобы <code>this</code> являлся массивом, так что он может быть применён к другим типам объектов (например, к массивоподобным объектам). Пример ниже показывает использование метода <code>includes()</code> на объекте <a href="/ru/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a>.</p> + +<pre class="brush: js">(function() { + console.log([].includes.call(arguments, 'a')); // true + console.log([].includes.call(arguments, 'd')); // false +})('a','b','c');</pre> + +<h2 id="Полифилл">Полифилл</h2> + +<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-array.prototype.includes +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { + value: function(searchElement, fromIndex) { + + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + + // 1. Let O be ? ToObject(this value). + var o = Object(this); + + // 2. Let len be ? ToLength(? Get(O, "length")). + var len = o.length >>> 0; + + // 3. If len is 0, return false. + if (len === 0) { + return false; + } + + // 4. Let n be ? ToInteger(fromIndex). + // (If fromIndex is undefined, this step produces the value 0.) + var n = fromIndex | 0; + + // 5. If n ≥ 0, then + // a. Let k be n. + // 6. Else n < 0, + // a. Let k be len + n. + // b. If k < 0, let k be 0. + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + + function sameValueZero(x, y) { + return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y)); + } + + // 7. Repeat, while k < len + while (k < len) { + // a. Let elementK be the result of ? Get(O, ! ToString(k)). + // b. If SameValueZero(searchElement, elementK) is true, return true. + if (sameValueZero(o[k], searchElement)) { + return true; + } + // c. Increase k by 1. + k++; + } + + // 8. Return false + return false; + } + }); +} +</pre> + +<p>Если требуется поддержка устаревших движков JavaScript, которые не поддерживают <code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, наилучшим решением будет вообще не делать полифилл для методов <code>Array.prototype</code>, так как не получится сделать их неперечисляемыми.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES7', '#sec-array.prototype.includes', 'Array.prototype.includes')}}</td> + <td>{{Spec2('ES7')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.includes', 'Array.prototype.includes')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div> +<p>{{Compat("javascript.builtins.Array.includes")}}</p> +</div> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("TypedArray.prototype.includes()")}}</li> + <li>{{jsxref("String.prototype.includes()")}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> + <li>{{jsxref("Array.prototype.find()")}}</li> + <li>{{jsxref("Array.prototype.findIndex()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/index.html b/files/ru/web/javascript/reference/global_objects/array/index.html new file mode 100644 index 0000000000..263de030df --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/index.html @@ -0,0 +1,452 @@ +--- +title: Array +slug: Web/JavaScript/Reference/Global_Objects/Array +tags: + - Array + - JavaScript + - Reference + - Глобальные объекты +translation_of: Web/JavaScript/Reference/Global_Objects/Array +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<div> </div> + +<p>Массив (<strong><code>Array</code></strong>) в JavaScript является глобальным объектом, который используется для создания массивов; которые представляют собой высокоуровневые спископодобные объекты.</p> + +<p><strong>Создание массива</strong></p> + +<pre class="brush: js">var fruits = ['Яблоко', 'Банан']; + +console.log(fruits.length); +// 2 +</pre> + +<p><strong>Доступ к элементу массива по индексу</strong></p> + +<pre class="brush: js">var first = fruits[0]; +// Яблоко + +var last = fruits[fruits.length - 1]; +// Банан +</pre> + +<p><strong>Итерирование по массиву</strong></p> + +<pre class="brush: js">fruits.forEach(function(item, index, array) { + console.log(item, index); +}); +// Яблоко 0 +// Банан 1 +</pre> + +<p><strong>Добавление элемента в конец массива</strong></p> + +<pre class="brush: js">var newLength = fruits.push('Апельсин'); +// ["Яблоко", "Банан", "Апельсин"] +</pre> + +<p><strong>Удаление последнего элемента массива</strong></p> + +<pre class="brush: js">var last = fruits.pop(); // удалим Апельсин (из конца) +// ["Яблоко", "Банан"]; +</pre> + +<p><strong>Удаление первого элемента массива</strong></p> + +<pre class="brush: js">var first = fruits.shift(); // удалим Яблоко (из начала) +// ["Банан"]; +</pre> + +<p><strong>Добавление элемента в начало массива</strong></p> + +<pre class="brush: js">var newLength = fruits.unshift('Клубника') // добавляет в начало +// ["Клубника", "Банан"]; +</pre> + +<p><strong>Поиск номера элемента в массиве</strong></p> + +<pre class="brush: js">fruits.push('Манго'); +// ["Клубника", "Банан", "Манго"] + +var pos = fruits.indexOf('Банан'); +// 1 +</pre> + +<p><strong>Удаление элемента с определённым индексом</strong></p> + +<pre class="brush: js">var removedItem = fruits.splice(pos, 1); // так можно удалить элемент + +// ["Клубника", "Манго"]</pre> + +<p><strong>Удаление нескольких элементов, начиная с определённого индекса</strong></p> + +<pre class="brush: js">var vegetables = ['Капуста', 'Репа', 'Редиска', 'Морковка']; +console.log(vegetables); +// ["Капуста", "Репа", "Редиска", "Морковка"] + +var pos = 1, n = 2; + +var removedItems = vegetables.splice(pos, n); +// так можно удалить элементы, n определяет количество элементов для удаления, +// начиная с позиции(pos) и далее в направлении конца массива. + +console.log(vegetables); +// ["Капуста", "Морковка"] (исходный массив изменён) + +console.log(removedItems); +// ["Репа", "Редиска"]</pre> + +<p><strong>Создание копии массива</strong></p> + +<pre class="brush: js">var shallowCopy = fruits.slice(); // так можно создать копию массива +// ["Клубника", "Манго"] +</pre> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>[<var>element0</var>, <var>element1</var>, ..., <var>elementN</var>] +new Array(<var>element0</var>, <var>element1</var>[, ...[, <var>elementN</var>]]) +new Array(<var>arrayLength</var>)</code></pre> + +<dl> + <dt><code>element<em>N</em></code></dt> + <dd>Массив в JavaScript инициализируется с помощью переданных элементов, за исключением случая, когда в конструктор <code>Array</code> передаётся один аргумент и этот аргумент является числом (см. ниже). Стоит обратить внимание, что этот особый случай применяется только к JavaScript-массивам, создаваемым с помощью конструктора <code>Array</code>, а не к литеральным массивам, создаваемым с использованием скобочного синтаксиса.</dd> + <dt><code>arrayLength</code></dt> + <dd>Если конструктору <code>Array</code> передаётся единственный аргумент, являющийся целым числом в диапазоне от 0 до 2<sup>32</sup>-1 (включительно), будет возвращён новый пустой JavaScript-массив, длина которого установится в это число (<strong>примечание</strong>: это означает массив, содержащий <code>arrayLength</code> пустых ячеек, а не ячеек со значениями <code>undefined</code>). Если аргументом будет любое другое число, возникнет исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Массивы являются спископодобными объектами, чьи прототипы содержат методы для операций обхода и изменения массива. Ни размер JavaScript-массива, ни типы его элементов не являются фиксированными. Поскольку размер массива может увеличиваться и уменьшаться в любое время, то нет гарантии, что массив окажется плотным. То есть, при работе с массивом может возникнуть ситуация, что элемент массива, к которому вы обратитесь, будет пустым и вернёт <code>undefined</code>. В целом, это удобная характеристика; но если эта особенность массива не желательна в вашем специфическом случае, вы можете рассмотреть возможность использования типизированных массивов.</p> + +<p>Некоторые полагают, что <a class="external" href="http://www.andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/">вы не должны использовать массив в качестве ассоциативного массива</a>. В любом случае, вместо него вы можете использовать простые {{jsxref("Global_Objects/Object", "объекты")}}, хотя у них есть и свои подводные камни. Смотрите пост <a class="external" href="http://www.less-broken.com/blog/2010/12/lightweight-javascript-dictionaries.html">Легковесные JavaScript-словари с произвольными ключами</a><em>(англ.)</em> в качестве примера.</p> + +<h3 id="Accessing_array_elements" name="Accessing_array_elements">Доступ к элементам массива</h3> + +<p>Массивы в JavaScript индексируются с нуля: первый элемент массива имеет индекс, равный <code>0</code>, а индекс последнего элемента равен значению свойства массива {{jsxref("Array.length", "length")}} минус 1.</p> + +<pre class="brush: js">var arr = ['первый элемент', 'второй элемент', 'последний элемент']; +console.log(arr[0]); // напечатает 'первый элемент' +console.log(arr[1]); // напечатает 'второй элемент' +console.log(arr[arr.length - 1]); // напечатает 'последний элемент' +</pre> + +<p>Элементы массива являются свойствами, точно такими же, как, например, свойство <code>toString</code>, однако попытка получить элемент массива по имени его свойства приведёт к синтаксической ошибке, поскольку имя свойства не является допустимым именем JavaScript:</p> + +<pre class="brush: js">console.log(arr.0); // синтаксическая ошибка +</pre> + +<p>Это не особенность массивов или их свойств. В JavaScript к свойствам, начинающимся с цифры, невозможно обратиться посредством точечной нотации; к ним можно обратиться только с помощью скобочной нотации. Например, если у вас есть объект со свойством, названным <code>'3d'</code>, вы сможете обратиться к нему только посредством скобочной нотации. Примеры:</p> + +<pre class="brush: js">var years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]; +console.log(years.0); // синтаксическая ошибка +console.log(years[0]); // работает как положено +</pre> + +<pre class="brush: js">renderer.3d.setTexture(model, 'character.png'); // синтаксическая ошибка +renderer['3d'].setTexture(model, 'character.png'); // работает как положено +</pre> + +<p>Обратите внимание, что во втором примере <code>3d</code> заключено в кавычки: <code>'3d'</code>. Индексы можно заключать в кавычки (например <code>years['2']</code> вместо <code>years[2]</code>), но в этом нет необходимости. Значение 2 в выражении <code>years[2]</code> будет неявно приведено к строке движком JavaScript через метод преобразования <code>toString</code>. Именно по этой причине ключи <code>'2'</code> и <code>'02'</code> будут ссылаться на два разных элемента в объекте <code>years</code> и следующий пример выведет <code>true</code>:</p> + +<pre class="brush: js">console.log(years['2'] != years['02']); +</pre> + +<p>Аналогично, к свойствам объекта, являющимся зарезервированными словами(!) можно получить доступ только посредством скобочной нотации:</p> + +<pre class="brush: js">var promise = { + 'var' : 'text', + 'array': [1, 2, 3, 4] +}; + +console.log(promise['array']); +</pre> + +<h3 id="Relationship_between_length_and_numerical_properties" name="Relationship_between_length_and_numerical_properties">Взаимосвязь свойства <code>length</code> с числовыми свойствами</h3> + +<p>Свойство массивов {{jsxref("Array.length", "length")}} взаимосвязано с числовыми свойствами. Некоторые встроенные методы массива (например, {{jsxref("Array.join", "join")}}, {{jsxref("Array.slice", "slice")}}, {{jsxref("Array.indexOf", "indexOf")}} и т.д.) учитывают значение свойства <code>length</code> при своём вызове. Другие методы (например, {{jsxref("Array.push", "push")}}, {{jsxref("Array.splice", "splice")}} и т.д.) в результате своей работы также обновляют свойство <code>length</code> массива.</p> + +<pre class="brush: js">var fruits = []; +fruits.push('банан', 'яблоко', 'персик'); + +console.log(fruits.length); // 3 +</pre> + +<p>При установке свойства в массиве, если свойство имеет действительный индекс и этот индекс выходит за пределы текущих границ массива, движок соответствующим образом обновит свойство {{jsxref("Array.length", "length")}}:</p> + +<pre class="brush: js">fruits[5] = 'манго'; +console.log(fruits[5]); // 'манго' +console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] +console.log(fruits.length); // 6 +</pre> + +<p>Увеличиваем свойство <code>length</code></p> + +<pre class="brush: js">fruits.length = 10; +console.log(Object.keys(fruits)); // ['0', '1', '2', '5'] +console.log(fruits.length); // 10 +</pre> + +<p>Однако, уменьшение свойства {{jsxref("Array.length", "length")}} приведёт к удалению элементов.</p> + +<pre class="brush: js">fruits.length = 2; +console.log(Object.keys(fruits)); // ['0', '1'] +console.log(fruits.length); // 2 +</pre> + +<p>Более подробно эта тема освещена на странице, посвящённой свойству {{jsxref("Array.length")}}.</p> + +<h3 id="Creating_an_array_using_the_result_of_a_match" name="Creating_an_array_using_the_result_of_a_match">Создание массива с использованием результата сопоставления</h3> + +<p>Результатом сопоставления регулярного выражения строке является JavaScript-массив. Этот массив имеет свойства и элементы, предоставляющие информацию о сопоставлении. Подобные массивы возвращаются методами {{jsxref("RegExp.exec")}}, {{jsxref("String.match")}} и {{jsxref("String.replace")}}. Чтобы было проще понять, откуда и какие появились свойства и элементы, посмотрите следующий пример и обратитесь к таблице ниже:</p> + +<pre class="brush: js">// Сопоставляется с одним символом d, за которым следует один +// или более символов b, за которыми следует один символ d +// Запоминаются сопоставившиеся символы b и следующий за ними символ d +// Регистр игнорируется + +var myRe = /d(b+)(d)/i; +var myArray = myRe.exec('cdbBdbsbz'); +</pre> + +<p>Свойства и элементы, возвращаемые из данного сопоставления, описаны ниже:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Свойство/Элемент</td> + <td class="header">Описание</td> + <td class="header">Пример</td> + </tr> + <tr> + <td><code>input</code></td> + <td>Свойство только для чтения, отражающее оригинальную строку, с которой сопоставлялось регулярное выражение.</td> + <td>cdbBdbsbz</td> + </tr> + <tr> + <td><code>index</code></td> + <td>Свойство только для чтения, являющееся индексом (отсчёт начинается с нуля) в строке, с которого началось сопоставление.</td> + <td>1</td> + </tr> + <tr> + <td><code>[0]</code></td> + <td>Элемент только для чтения, определяющий последние сопоставившиеся символы.</td> + <td>dbBd</td> + </tr> + <tr> + <td><code>[1], ...[n]</code></td> + <td>Элементы только для чтения, определяющие сопоставившиеся подстроки, заключённые в круглые скобки, если те включены в регулярное выражение. Количество возможных подстрок не ограничено.</td> + <td>[1]: bB<br> + [2]: d</td> + </tr> + </tbody> +</table> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Array.length")}}</dt> + <dd>Значение свойства <code>length</code> конструктора массива равно 1.</dd> + <dt>{{jsxref("Array.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам массива.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Array.from()")}} {{experimental_inline}}</dt> + <dd>Создаёт новый экземпляр <code>Array</code> из массивоподобного или итерируемого объекта.</dd> + <dt>{{jsxref("Array.isArray()")}}</dt> + <dd>Возвращает <code>true</code>, если значение является массивом, иначе возвращает <code>false</code>.</dd> + <dt>{{jsxref("Array.observe()")}} {{experimental_inline}}</dt> + <dd>Асинхронно наблюдает за изменениями в массиве, подобно методу {{jsxref("Object.observe()")}} для объектов. Метод предоставляет поток изменений в порядке их возникновения.</dd> + <dt>{{jsxref("Array.of()")}} {{experimental_inline}}</dt> + <dd>Создаёт новый экземпляр <code>Array</code> из любого количества аргументов, независимо от их количества или типа.</dd> +</dl> + +<h2 id="Array_instances" name="Array_instances">Экземпляры массива</h2> + +<p>Все экземпляры массива наследуются от {{jsxref("Array.prototype")}}. Изменения в объекте прототипа конструктора массива затронет все экземпляры <code>Array</code>.</p> + +<h3 id="Methods_of_array_instances" name="Methods_of_array_instances">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_array_instances" name="Methods_of_array_instances">Методы</h3> + +<h4 id="Mutator_methods" name="Mutator_methods">Методы изменения</h4> + +<div>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Mutator_methods')}}</div> + +<h4 id="Accessor_methods" name="Accessor_methods">Методы доступа</h4> + +<div>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Accessor_methods')}}</div> + +<h4 id="Iteration_methods" name="Iteration_methods">Методы обхода</h4> + +<div>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype', 'Iteration_methods')}}</div> + +<h2 id="Array_generic_methods" name="Array_generic_methods">Общие методы массива</h2> + +<p>Иногда хочется применить методы массива к строкам или другим массивоподобным объектам (например, к {{jsxref("Functions_and_function_scope/arguments", "аргументам", "", 1)}} функции). Делая это, вы трактуете строку как массив символов (другими словами, рассматриваете не-массив в качестве массива). Например, в порядке проверки каждого символа в переменной <var>str</var> на то, что он является буквой (латинского алфавита), вы пишете следущий код:</p> + +<pre class="brush: js">function isLetter(character) { + return character >= 'a' && character <= 'z'; +} + +if (Array.prototype.every.call(str, isLetter)) { + console.log("Строка '" + str + "' содержит только (латинские) буквы!"); +} +</pre> + +<p>Эта запись довольно расточительна и в JavaScript 1.6 введён общий сокращённый вид:</p> + +<pre class="brush: js">if (Array.every(str, isLetter)) { + console.log("Строка '" + str + "' содержит только (латинские) буквы!"); +} +</pre> + +<p>{{jsxref("Global_Objects/String", "Общие методы", "#String_generic_methods", 1)}} также доступны для объекта {{jsxref("Global_Objects/String", "String")}}.</p> + +<p>В настоящее время они не являются частью стандартов ECMAScript (хотя в ES2015 для достижения поставленной цели можно использовать <a href="https://github.com/monolithed/ECMAScript-6"><code>Array.from()</code></a>). Следующая прослойка позволяет использовать их во всех браузерах:</p> + +<pre class="brush: js">// Предполагаем, что дополнения массива уже присутствуют (для них так же можно использовать polyfill'ы) +(function() { + 'use strict'; + + var i, + // Мы могли построить массив методов следующим образом, однако метод + // getOwnPropertyNames() нельзя реализовать на JavaScript: + // Object.getOwnPropertyNames(Array).filter(function(methodName) { + // return typeof Array[methodName] === 'function' + // }); + methods = [ + 'join', 'reverse', 'sort', 'push', 'pop', 'shift', 'unshift', + 'splice', 'concat', 'slice', 'indexOf', 'lastIndexOf', + 'forEach', 'map', 'reduce', 'reduceRight', 'filter', + 'some', 'every' + ], + methodCount = methods.length, + assignArrayGeneric = function(methodName) { + if (!Array[methodName]) { + var method = Array.prototype[methodName]; + if (typeof method === 'function') { + Array[methodName] = function() { + return method.call.apply(method, arguments); + }; + } + } + }; + + for (i = 0; i < methodCount; i++) { + assignArrayGeneric(methods[i]); + } +}()); +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Creating_an_array" name="Example:_Creating_an_array">Пример: создание массива</h3> + +<p>Следующий пример создаёт массив <code>msgArray</code> с длиной 0, присваивает значения элементам <code>msgArray[0]</code> и <code>msgArray[99]</code>, что изменяет длину массива на 100.</p> + +<pre class="brush: js">var msgArray = []; +msgArray[0] = 'Привет'; +msgArray[99] = 'мир'; + +if (msgArray.length === 100) { + console.log('Длина равна 100.'); +} +</pre> + +<h3 id="Example.3A_Creating_a_two-dimensional_array" name="Example.3A_Creating_a_two-dimensional_array">Пример: создание двумерного массива</h3> + +<p>Следующий код создаёт шахматную доску в виде двумерного массива строк. Затем он перемещает пешку путём копирования символа 'p' в позиции (6,4) на позицию (4,4). Старая позиция (6,4) затирается пустым местом.</p> + +<pre class="brush: js">var board = [ + ['R','N','B','Q','K','B','N','R'], + ['P','P','P','P','P','P','P','P'], + [' ',' ',' ',' ',' ',' ',' ',' '], + [' ',' ',' ',' ',' ',' ',' ',' '], + [' ',' ',' ',' ',' ',' ',' ',' '], + [' ',' ',' ',' ',' ',' ',' ',' '], + ['p','p','p','p','p','p','p','p'], + ['r','n','b','q','k','b','n','r'] ]; + +console.log(board.join('\n') + '\n\n'); + +// Двигаем королевскую пешку вперёд на две клетки +board[4][4] = board[6][4]; +board[6][4] = ' '; +console.log(board.join('\n')); +</pre> + +<p>Ниже показан вывод:</p> + +<pre class="eval">R,N,B,Q,K,B,N,R +P,P,P,P,P,P,P,P + , , , , , , , + , , , , , , , + , , , , , , , + , , , , , , , +p,p,p,p,p,p,p,p +r,n,b,q,k,b,n,r + +R,N,B,Q,K,B,N,R +P,P,P,P,P,P,P,P + , , , , , , , + , , , , , , , + , , , ,p, , , + , , , , , , , +p,p,p,p, ,p,p,p +r,n,b,q,k,b,n,r +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4', 'Array')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Добавлены новые методы: {{jsxref("Array.isArray")}}, {{jsxref("Array.prototype.indexOf", "indexOf")}}, {{jsxref("Array.prototype.lastIndexOf", "lastIndexOf")}}, {{jsxref("Array.prototype.every", "every")}}, {{jsxref("Array.prototype.some", "some")}}, {{jsxref("Array.prototype.forEach", "forEach")}}, {{jsxref("Array.prototype.map", "map")}}, {{jsxref("Array.prototype.filter", "filter")}}, {{jsxref("Array.prototype.reduce", "reduce")}}, {{jsxref("Array.prototype.reduceRight", "reduceRight")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-array-objects', 'Array')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Добавлены новые методы: {{jsxref("Array.from")}}, {{jsxref("Array.of")}}, {{jsxref("Array.prototype.find", "find")}}, {{jsxref("Array.prototype.findIndex", "findIndex")}}, {{jsxref("Array.prototype.fill", "fill")}}, {{jsxref("Array.prototype.copyWithin", "copyWithin")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES7', '#sec-array-objects', 'Array')}}</td> + <td>{{Spec2('ES7')}}</td> + <td>Добавлен новый метод: {{jsxref("Array.prototype.includes()")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Поддержка браузерами</h2> + +<p>{{Compat("javascript.builtins.Array")}}</p> + +<div> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects#.D0.98.D0.BD.D0.B4.D0.B5.D0.BA.D1.81.D1.8B_.D1.81.D0.B2.D0.BE.D0.B9.D1.81.D1.82.D0.B2_.D0.BE.D0.B1.D1.8A.D0.B5.D0.BA.D1.82.D0.B0">Руководство JavaScript: «Индексирование объекта свойствами»</a></li> + <li><a href="/ru/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Array_Object">Руководство JavaScript: «Предопределённые объекты ядра: объект <code>Array</code>»</a></li> + <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">Выражения заполнения массива</a></li> + <li><a href="https://github.com/plusdude/array-generics">Полифилл для общих методов массива из JavaScript 1.8.5 и дополнений массива из ECMAScript 5</a></li> + <li><a href="/ru/docs/Web/JavaScript/Typed_arrays">Типизированные массивы</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/indexof/index.html b/files/ru/web/javascript/reference/global_objects/array/indexof/index.html new file mode 100644 index 0000000000..ef6820df41 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/indexof/index.html @@ -0,0 +1,175 @@ +--- +title: Array.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/indexOf +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/indexOf +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>indexOf()</strong></code> возвращает первый индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.indexOf(<var>searchElement</var>[, <var>fromIndex</var> = 0])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchElement</code></dt> + <dd>Искомый элемент в массиве.</dd> + <dt><code>fromIndex</code></dt> + <dd>Индекс, с которого начинать поиск. Если индекс больше или равен длине массива, возвращается -1, что означает, что массив даже не просматривается. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от начала к концу. Если рассчитанный индекс оказывается меньше 0, поиск ведётся по всему массиву. Значение по умолчанию равно 0, что означает, что просматривается весь массив.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>indexOf()</code> сравнивает искомый элемент <code>searchElement</code> с элементами в массиве, используя <a href="/ru/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">строгое сравнение</a> (тот же метод используется оператором <code>===</code>, тройное равно).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_indexOf" name="Example:_Using_indexOf">Пример: использование <code>indexOf()</code></h3> + +<p>В следующем примере <code>indexOf()</code> используется для поиска значений в массиве.</p> + +<pre class="brush: js">var array = [2, 5, 9]; +array.indexOf(2); // 0 +array.indexOf(7); // -1 +array.indexOf(9, 2); // 2 +array.indexOf(2, -1); // -1 +array.indexOf(2, -3); // 0 +</pre> + +<h3 id="Example:_Finding_all_the_occurrences_of_an_element" name="Example:_Finding_all_the_occurrences_of_an_element">Пример: нахождение всех вхождений элемента</h3> + +<p>В следующем примере <code>indexOf()</code> используется для поиска всех индексов элемента в указанном массиве, которые с помощью {{jsxref("Array.prototype.push()", "push()")}} добавляются в другой массив.</p> + +<pre class="brush: js">var indices = []; +var array = ['a', 'b', 'a', 'c', 'a', 'd']; +var element = 'a'; +var idx = array.indexOf(element); +while (idx != -1) { + indices.push(idx); + idx = array.indexOf(element, idx + 1); +} + +console.log(indices); +// [0, 2, 4] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>indexOf()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>indexOf()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/TypeError", "TypeError")}} и {{jsxref("Math.abs()")}} имеют свои первоначальные значения.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.14 +// Ссылка (en): http://es5.github.io/#x15.4.4.14 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.14 +if (!Array.prototype.indexOf) { + Array.prototype.indexOf = function(searchElement, fromIndex) { + var k; + + // 1. Положим O равным результату вызова ToObject с передачей ему + // значения this в качестве аргумента. + if (this == null) { + throw new TypeError('"this" is null or not defined'); + } + + var O = Object(this); + + // 2. Положим lenValue равным результату вызова внутреннего метода Get + // объекта O с аргументом "length". + // 3. Положим len равным ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. Если len равен 0, вернём -1. + if (len === 0) { + return -1; + } + + // 5. Если был передан аргумент fromIndex, положим n равным + // ToInteger(fromIndex); иначе положим n равным 0. + var n = +fromIndex || 0; + + if (Math.abs(n) === Infinity) { + n = 0; + } + + // 6. Если n >= len, вернём -1. + if (n >= len) { + return -1; + } + + // 7. Если n >= 0, положим k равным n. + // 8. Иначе, n<0, положим k равным len - abs(n). + // Если k меньше нуля 0, положим k равным 0. + k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + + // 9. Пока k < len, будем повторять + while (k < len) { + // a. Положим Pk равным ToString(k). + // Это неявное преобразование для левостороннего операнда в операторе in + // b. Положим kPresent равным результату вызова внутреннего метода + // HasProperty объекта O с аргументом Pk. + // Этот шаг может быть объединён с шагом c + // c. Если kPresent равен true, выполним + // i. Положим elementK равным результату вызова внутреннего метода Get + // объекта O с аргументом ToString(k). + // ii. Положим same равным результату применения + // Алгоритма строгого сравнения на равенство между + // searchElement и elementK. + // iii. Если same равен true, вернём k. + if (k in O && O[k] === searchElement) { + return k; + } + k++; + } + return -1; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.14', 'Array.prototype.indexOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.indexof', 'Array.prototype.indexOf')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Array.indexOf")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("TypedArray.prototype.indexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/isarray/index.html b/files/ru/web/javascript/reference/global_objects/array/isarray/index.html new file mode 100644 index 0000000000..a9599389e8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/isarray/index.html @@ -0,0 +1,120 @@ +--- +title: Array.isArray() +slug: Web/JavaScript/Reference/Global_Objects/Array/isArray +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/isArray +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Array.isArray()</strong></code> возвращает <code>true</code>, если объект является массивом и <code>false</code>, если он массивом не является.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Array.isArray(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект для проверки.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code>true</code> если объект является {{jsxref("Array")}}; иначе, <code>false</code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>За подробностям обращайтесь к статье <a href="http://web.mit.edu/jwalden/www/isArray.html">«Абсолютно точное определение того, является ли JavaScript-объект массивом или нет»</a>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">// Все следующие вызовы вернут true +Array.isArray([]); +Array.isArray([1]); +Array.isArray(new Array()); +// Малоизвестный факт: Array.prototype сам является массивом: +Array.isArray(Array.prototype); + +// Все следующие вызовы вернут false +Array.isArray(); +Array.isArray({}); +Array.isArray(null); +Array.isArray(undefined); +Array.isArray(17); +Array.isArray("Array"); +Array.isArray(true); +Array.isArray(false); +Array.isArray({ __proto__: Array.prototype }); +</pre> + +<h3 id="instanceof_vs_isArray"><code>instanceof</code> vs <code>isArray</code></h3> + +<p>Когда проверяем экземпляр <code>Array</code>, <code>Array.isArray</code> предпочтительней, чем <code>instanceof</code>, потому что он работает и с <code>iframes</code>.</p> + +<pre class="brush: js">var iframe = document.createElement('iframe'); +document.body.appendChild(iframe); +xArray = window.frames[window.frames.length-1].Array; +var arr = new xArray(1,2,3); // [1,2,3] + +// Correctly checking for Array +Array.isArray(arr); // true +// Considered harmful, because doesn't work through iframes +arr instanceof Array; // false +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Выполнение следующего кода перед любым другим кодом создаст метод <code>Array.isArray()</code>, если он ещё не реализован в браузере.</p> + +<pre class="brush: js">if (!Array.isArray) { + Array.isArray = function(arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.3.2', 'Array.isArray')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.isarray', 'Array.isArray')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Array.isArray")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/join/index.html b/files/ru/web/javascript/reference/global_objects/array/join/index.html new file mode 100644 index 0000000000..28ae457276 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/join/index.html @@ -0,0 +1,110 @@ +--- +title: Array.prototype.join() +slug: Web/JavaScript/Reference/Global_Objects/Array/join +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/join +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>join()</strong></code> объединяет все элементы массива (или <a href="/en-US/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">массивоподобного объекта</a>) в строку.</p> + +<p>{{EmbedInteractiveExample("pages/js/array-join.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.join(<var>[separator]</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>separator </code> <span class="diff_add">{{optional_inline}}</span></dt> + <dd>Определяет строку, разделяющую элементы массива. В случае необходимости тип разделителя приводится к типу Строка. Если он не задан, элементы массива разделяются запятой '<strong>,</strong>'. Если разделитель - пустая строка, элементы массива ничем не разделяются в возвращаемой строке.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Строка, содержащая все элементы массива. Если <em><code>arr.length</code></em> == <code>0</code>, то будет возвращена пустая строка.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Преобразует все элементы массива в строки и объединяет их в одну большую строку. Элемент массива с типом <code>undefined</code> или <code>null </code>преобразуется в пустую строку.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Joining_an_array_three_different_ways" name="Example:_Joining_an_array_three_different_ways">Соединение массива четырьмя различными способами</h3> + +<p>В следующем примере создаётся массив <code>a</code> с тремя элементами, затем они четыре раза объединяются в строку: с использованием разделителя по умолчанию, запятой с пробелом, плюса, окружённого пробелами, и пустой строки.</p> + +<pre class="brush: js">var a = ['Ветер', 'Дождь', 'Огонь']; +var myVar1 = a.join(); // присвоит 'Ветер,Дождь,Огонь' переменной myVar1 +var myVar2 = a.join(', '); // присвоит 'Ветер, Дождь, Огонь' переменной myVar2 +var myVar3 = a.join(' + '); // присвоит 'Ветер + Дождь + Огонь' переменной myVar3 +var myVar4 = a.join(''); // присвоит 'ВетерДождьОгонь' переменной myVar4 +</pre> + +<h3 id="Соединение_элементов_массивоподобного_объекта">Соединение элементов массивоподобного объекта</h3> + +<p>В следующем примере соединяется массивоподобный объект (в данном случае список <a href="/ru/docs/Web/JavaScript/Reference/Functions/arguments">аргументов</a> функции) с использованием вызова {{jsxref("Function.prototype.call")}} <code>для Array.prototype.join</code>.</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">f</span><span class="punctuation token">(</span>a<span class="punctuation token">,</span> b<span class="punctuation token">,</span> c<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">var</span> s <span class="operator token">=</span> Array<span class="punctuation token">.</span>prototype<span class="punctuation token">.</span>join<span class="punctuation token">.</span><span class="function token">call</span><span class="punctuation token">(</span>arguments<span class="punctuation token">)</span><span class="punctuation token">;</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>s<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// '1,a,true'</span> +<span class="punctuation token">}</span> +<span class="function token">f</span><span class="punctuation token">(</span><span class="number token">1</span><span class="punctuation token">,</span> <span class="string token">'a'</span><span class="punctuation token">,</span> <span class="keyword token">true</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.5', 'Array.prototype.join')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.join', 'Array.prototype.join')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.join', 'Array.prototype.join')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Array.join")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("Array.prototype.toString()")}}</li> + <li>{{jsxref("TypedArray.prototype.join()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/keys/index.html b/files/ru/web/javascript/reference/global_objects/array/keys/index.html new file mode 100644 index 0000000000..94cc84dd43 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/keys/index.html @@ -0,0 +1,90 @@ +--- +title: Array.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Array/keys +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/keys +--- +<div>{{JSRef}}</div> + + + +<p>Метод <code><strong>keys()</strong></code> возвращает новый <strong>итератор массива</strong> <code><strong>Array Iterator</strong></code>, содержащий ключи каждого индекса в массиве.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-keys.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.keys()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_basic_usages" name="Example:_basic_usages">Пример: базовое использование</h3> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; +var iterator = arr.keys(); + +console.log(iterator.next()); // { value: 0, done: false } +console.log(iterator.next()); // { value: 1, done: false } +console.log(iterator.next()); // { value: 2, done: false } +console.log(iterator.next()); // { value: undefined, done: true } +</pre> + +<h3 id="Example:_keys_iterator_doesnt_ignore_holes" name="Example:_keys_iterator_doesnt_ignore_holes">Пример: итератор, возвращаемый методом <code>keys()</code>, не пропускает дырки в массиве</h3> + +<pre class="brush: js">var arr = ['a', , 'c']; +var sparseKeys = Object.keys(arr); +var denseKeys = [...arr.keys()]; +console.log(sparseKeys); // [0, 2] +console.log(denseKeys); // [0, 1, 2] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-array.prototype.keys', 'Array.prototype.keys')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.keys', 'Array.prototype.keys')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.keys")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.values()")}}</li> + <li>{{jsxref("Array.prototype.entries()")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Iteration_protocols">Iteration protocols</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html new file mode 100644 index 0000000000..d5125cd9e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/lastindexof/index.html @@ -0,0 +1,167 @@ +--- +title: Array.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +tags: + - Array + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/lastIndexOf +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>lastIndexOf()</strong></code> возвращает последний индекс, по которому данный элемент может быть найден в массиве или -1, если такого индекса нет. Массив просматривается от конца к началу, начиная с индекса <code>fromIndex</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-lastindexof.html")}}</div> +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.lastIndexOf(<var>searchElement</var>[, <var>fromIndex</var> = arr.length])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchElement</code></dt> + <dd>Искомый элемент в массиве.</dd> + <dt><code>fromIndex</code></dt> + <dd>Необязательный параметр. Индекс, с которого начинать поиск в обратном направлении. Если индекс больше или равен длине массива, просматривается весь массив. Если индекс является отрицательным числом, он трактуется как смещение с конца массива. Обратите внимание: если индекс отрицателен, массив всё равно просматривается от конца к началу. Если рассчитанный индекс оказывается меньше 0, массив даже не просматривается. Значение по умолчанию равно длине массива, что означает, что просматривается весь массив.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>lastIndexOf()</code> сравнивает искомый элемент <code>searchElement</code> с элементами в массиве, используя <a href="/ru/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators">строгое сравнение</a> (тот же метод используется оператором <code>===</code>, тройное равно).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_lastIndexOf" name="Example:_Using_lastIndexOf">Пример: использование <code>lastIndexOf()</code></h3> + +<p>В следующем примере метод <code>lastIndexOf()</code> используется для поиска значений в массиве.</p> + +<pre class="brush: js">var array = [2, 5, 9, 2]; +array.lastIndexOf(2); // 3 +array.lastIndexOf(7); // -1 +array.lastIndexOf(2, 3); // 3 +array.lastIndexOf(2, 2); // 0 +array.lastIndexOf(2, -2); // 0 +array.lastIndexOf(2, -1); // 3 +</pre> + +<h3 id="Example:_Finding_all_the_occurrences_of_an_element" name="Example:_Finding_all_the_occurrences_of_an_element">Пример: нахождение всех вхождений элемента</h3> + +<p>В следующем примере метод <code>lastIndexOf()</code> используется для поиска всех индексов элемента в указанном массиве, которые с помощью метода {{jsxref("Array.prototype.push()", "push()")}} добавляются в другой массив.</p> + +<pre class="brush: js">var indices = []; +var array = ['a', 'b', 'a', 'c', 'a', 'd']; +var element = 'a'; +var idx = array.lastIndexOf(element); +while (idx != -1) { + indices.push(idx); + idx = (idx > 0 ? array.lastIndexOf(element, idx - 1) : -1); +} + +console.log(indices); +// [4, 2, 0] +</pre> + +<p>Обратите внимание, что мы обрабатываем случай <code>idx == 0</code> отдельно, поскольку элемент всегда будет найден, независимо от параметра <code>fromIndex</code>, если он является первым элементом в массиве. Этим он отличается от метода {{jsxref("Array.prototype.indexOf()", "indexOf()")}}.</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>lastIndexOf()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>lastIndexOf()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}}, {{jsxref("Global_Objects/Number", "Number")}}, {{jsxref("Math.floor()")}}, {{jsxref("Math.abs()")}} и {{jsxref("Math.min()")}} имеют свои первоначальные значения.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.15 +// Ссылка (en): http://es5.github.io/#x15.4.4.15 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.15 +if (!Array.prototype.lastIndexOf) { + Array.prototype.lastIndexOf = function(searchElement/*, fromIndex*/) { + 'use strict'; + + if (this === void 0 || this === null) { + throw new TypeError(); + } + + var n, k, + t = Object(this), + len = t.length >>> 0; + if (len === 0) { + return -1; + } + + n = len - 1; + if (arguments.length > 1) { + n = Number(arguments[1]); + if (n != n) { + n = 0; + } + else if (n != 0 && n != (1 / 0) && n != -(1 / 0)) { + n = (n > 0 || -1) * Math.floor(Math.abs(n)); + } + } + + for (k = n >= 0 ? Math.min(n, len - 1) : len - Math.abs(n); k >= 0; k--) { + if (k in t && t[k] === searchElement) { + return k; + } + } + return -1; + }; +} +</pre> + +<p>И снова обратите внимание, что данная реализация нацелена на абсолютную совместимость с методом <code>lastIndexOf()</code>, реализованным в Firefox и движке JavaScript SpiderMonkey, включая несколько случаев, которые являются спорными крайними случаями. Если вы используете этот код в реальных приложениях, вы можете вычислять параметр <code>from</code> менее сложным образом, игнорируя эти случаи.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.15', 'Array.prototype.lastIndexOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.lastindexof', 'Array.prototype.lastIndexOf')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.lastIndexOf")}}</p> +</div> + +<h2 id="Замечания_по_совместимости">Замечания по совместимости</h2> + +<ul> + <li>Начиная с Firefox 47 {{geckoRelease (47)}}, метод больше не будет возвращать <code>-0</code>. Например, <code>[0].lastIndexOf(0, -0)</code> теперь всегда будет возвращать <code>+0</code> ({{bug (1242043)}}).</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> + <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/length/index.html b/files/ru/web/javascript/reference/global_objects/array/length/index.html new file mode 100644 index 0000000000..402e1005a4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/length/index.html @@ -0,0 +1,146 @@ +--- +title: Array.length +slug: Web/JavaScript/Reference/Global_Objects/Array/length +tags: + - Array + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Array/length +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Cвойство <strong><code>length</code></strong> объекта, который является экземпляром типа <code>Array</code> , устанавливает или возвращает число элементов этого массива. Значение данного свойства 32-битное безнаковое целое число, которое всегда численно больше чем самый наибольший индекс в массиве.</p> + +<pre class="brush: js">var items = ['shoes', 'shirts', 'socks', 'sweaters']; +items.length; + +// возвращает 4</pre> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.length</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Свойство <code>length</code> является целым числом с положительным знаком и значением, меньшим чем 2 в степени 32 (2<sup>32</sup>).</p> + +<pre class="brush: js">var namelistA = new Array(4294967296); //2 в 32 степени<sup> = </sup>4294967296 +var namelistC = new Array(-100) //отрицательная величина + +console.log(namelistA.length); //RangeError: Invalid array length +console.log(namelistC.length); //RangeError: Invalid array length + + + +var namelistB = []; +namelistB.length = Math.pow(2,32)-1; //устанавливает длину массива меньше 2 в 32 степени +console.log(namelistB.length); + +//4294967295 +</pre> + +<p>В любой момент вы можете установить свойство <code>length</code> для обрезки массива. Когда вы расширяете массив, изменяя его свойство <code>length</code>, реальное количество элементов в массиве увеличивается; например, если вы установите свойство <code>length</code> в 3, когда оно равно 2, массив будет из 3 элементов, где значение третьего элемента будет равно <code>undefined</code> .</p> + +<pre class="brush: js">var arr = [1, 2, 3]; +printEntries(arr); + +arr.length = 5; // устанавливает длину массива 5. +printEntries(arr); + +function printEntries(arr) { + var goNext = true; + var entries = arr.entries(); + while (goNext) { + var result = entries.next(); + if (result.done !== true) { + console.log(result.value[1]); + goNext = true; + } else + goNext = false; + } + console.log('=== printed ==='); +} + +// 1 +// 2 +// 3 +// === printed === +// 1 +// 2 +// 3 +// undefined +// undefined +// === printed ===</pre> + +<p>Таким образом, свойство <code>length</code> ничего не говорит о количестве определённых значений в массиве. Также смотрите раздел <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Array#Relationship_between_length_and_numerical_properties">Взаимосвязь свойства <code>length</code> с числовыми свойствами</a>.</p> + +<p>{{js_property_attributes(1, 0, 0)}}</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Iterating_over_an_array" name="Example:_Iterating_over_an_array">Пример: итерирование по массиву</h3> + +<p>В следующем примере массив <code>numbers</code> итерируется до значения свойства <code>length</code>, показывающего, сколько элементов содержит массив. Значение каждого элемента удваивается.</p> + +<pre class="brush: js">var numbers = [1, 2, 3, 4, 5]; + +for (var i = 0; i < numbers.length; i++) { + numbers[i] *= 2; +} +// Массив numbers теперь равен [2, 4, 6, 8, 10]; +</pre> + +<h3 id="Example:_Shortening_an_array" name="Example:_Shortening_an_array">Пример: сокращение массива</h3> + +<p>Следующий пример сокращает массив <code>statesUS</code> до длины в 50 элементов, если текущая длина массива больше 50.</p> + +<pre class="brush: js">if (statesUS.length > 50) { + statesUS.length = 50; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.5.2', 'Array.length')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-array-instances-length', 'Array.length')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}</td> + <td>{{Spec2('ESDraft')}} </td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<p>{{Compat("javascript.builtins.Array.length")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/map/index.html b/files/ru/web/javascript/reference/global_objects/array/map/index.html new file mode 100644 index 0000000000..95e63de892 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/map/index.html @@ -0,0 +1,284 @@ +--- +title: Array.prototype.map() +slug: Web/JavaScript/Reference/Global_Objects/Array/map +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/map +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>map()</strong></code> создаёт новый массив с результатом вызова указанной функции для каждого элемента массива.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate">let <var>new_array</var> = <var>arr</var>.map(function <var>callback</var>( <var>currentValue</var>[, <var>index</var>[, <var>array</var>]]) { + // Возвращает элемент для new_array +}[, <var>thisArg</var>])</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code><var>callback</var></code></dt> + <dd> + <p>Функция, вызываемая для каждого элемента массива <code><var>arr</var></code>. Каждый раз, когда <code><var>callback</var></code> выполняется, возвращаемое значение добавляется в <code><var>new_array</var></code>.</p> + + <p>Функция <code><var>callback</var></code>, создающая элемент в новом массиве, принимает три аргумента:</p> + + <dl> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента в массиве.</dd> + <dt><code>array</code>{{optional_inline}}</dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code>{{optional_inline}}</dt> + <dd>Необязательный параметр. Значение, используемое в качестве <code>this</code> при вызове функции <code><var>callback</var></code></dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый массив, где каждый элемент является результатом <code>callback</code> функции.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>map</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, в порядке их появления и конструирует новый массив из результатов её вызова. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения, включая {{jsxref("Global_Objects/undefined", "undefined")}}. Она не вызывается для пропущенных элементов массива (то есть для индексов, которые никогда не были заданы, которые были удалены или которым никогда не было присвоено значение.</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p> + +<p>Если в метод <code>map</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно <a href="/ru/docs/Web/JavaScript/Reference/Operators/this">обычным правилам определения <code>this</code>, видимого из функции</a>.</p> + +<p>Метод <code>map</code> не изменяет массив, для которого он был вызван (хотя функция <code>callback</code> может это делать).</p> + +<p>Диапазон элементов, обрабатываемых методом <code>map</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>map</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменяются функцией <code>callback</code>, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод <code>map</code> посетит их; удалённые элементы посещены не будут.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Mapping_an_array_of_numbers_to_an_array_of_square_roots" name="Example:_Mapping_an_array_of_numbers_to_an_array_of_square_roots">Пример: отображение массива чисел на массив квадратных корней</h3> + +<p>Следующий код берёт массив чисел и создаёт новый массив, содержащий квадратные корни чисел из первого массива.</p> + +<pre class="brush: js notranslate">var numbers = [1, 4, 9]; +var roots = numbers.map(Math.sqrt); +// теперь roots равен [1, 2, 3], а numbers всё ещё равен [1, 4, 9] +</pre> + +<h3 id="Example_Mapping_an_array_of_numbers_using_a_function_containing_an_argument" name="Example:_Mapping_an_array_of_numbers_using_a_function_containing_an_argument">Пример: отображение массива чисел с использованием функции, содержащей аргумент</h3> + +<p>Следующий код показывает, как работает отображение, когда функция требует один аргумент. Аргумент будет автоматически присваиваться каждому элементу массива, когда <code>map</code> проходит по оригинальному массиву.</p> + +<pre class="brush: js notranslate">var numbers = [1, 4, 9]; +var doubles = numbers.map(function(num) { + return num * 2; +}); +// теперь doubles равен [2, 8, 18], а numbers всё ещё равен [1, 4, 9] +</pre> + +<h3 id="Example_using_map_generically" name="Example:_using_map_generically">Пример: обобщённое использование <code>map</code></h3> + +<p>Этот пример показывает, как использовать <code>map</code> на объекте строки {{jsxref("Global_Objects/String", "String")}} для получения массива байт в кодировке ASCII, представляющего значения символов:</p> + +<pre class="brush: js notranslate">var map = Array.prototype.map; +var a = map.call('Hello World', function(x) { return x.charCodeAt(0); }); +// теперь a равен [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100] +</pre> + +<h3 id="Example_using_map_generically_querySelectorAll" name="Example:_using_map_generically_querySelectorAll">Пример: обобщённое использование <code>map</code> вместе с <code>querySelectorAll</code></h3> + +<p>Этот пример показывает, как пройтись по коллекции объектов, собранных с помощью <code>querySelectorAll</code>. В данном случае мы получаем все выбранные опции на экране и печатаем их в консоль:</p> + +<pre class="brush: js notranslate">var elems = document.querySelectorAll('select option:checked'); +var values = [].map.call(elems, function(obj) { + return obj.value; +}); +</pre> + +<p>Более простым способом будет использование метода {{jsxref("Array.from()")}}.</p> + +<h3 id="Example_Using_map_to_reverse_a_string" name="Example:_Using_map_to_reverse_a_string">Пример: использование <code>map</code> для переворачивания строки</h3> + +<pre class="brush: js notranslate">var str = '12345'; +[].map.call(str, function(x) { + return x; +}).reverse().join(''); + +// Вывод: '54321' +// Бонус: используйте '===' для проверки того, является ли строка палиндромом +</pre> + +<p>Более простым способом будет использование метода {{jsxref("String.split()")}} (см. пример <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/split#Example:_Reversing_a_String_using_split">обращение строки при помощи метода split()</a>).</p> + +<h3 id="Example_Tricky_use_case" name="Example:_Tricky_use_case">Пример: хитрый вариант использования</h3> + +<p><a href="http://www.wirfs-brock.com/allen/posts/166">(навеяно этой записью в блоге)</a></p> + +<p>Распространённой практикой является использование функции обратного вызова с одним аргументом (элемент, над которым производится операция). Некоторые функции также широко используется с одним аргументом, хотя они принимают дополнительные необязательные аргументы. Эти привычки могут привести к неожиданному поведению программы.</p> + +<pre class="brush: js notranslate">// Рассмотрим пример: +['1', '2', '3'].map(parseInt); +// Хотя ожидаемый результат вызова равен [1, 2, 3], +// в действительности получаем [1, NaN, NaN] + +// Функция parseInt часто используется с одним аргументом, но она принимает два. +// Первый аргумент является выражением, а второй - основанием системы счисления. +// В функцию callback Array.prototype.map передаёт 3 аргумента: +// элемент, его индекс и сам массив. +// Третий аргумент игнорируется parseInt, но не второй, следовательно, +// возможна путаница. Смотрите запись в блоге для дополнительной информации. + +function returnInt(element) { + return parseInt(element, 10); +} + +['1', '2', '3'].map(returnInt); +// Результатом является массив чисел (как и ожидалось) + +// Простейший способ добиться вышеозначенного поведения и избежать чувства "чё за!?": +['1', '2', '3'].map(Number); // [1, 2, 3] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>map</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>map</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; он предполагает, что {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/TypeError", "TypeError")}} и {{jsxref("Global_Objects/Array", "Array")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call")}}.</p> + +<pre class="brush: js notranslate">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.19 +// Ссылка (en): http://es5.github.com/#x15.4.4.19 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.19 +if (!Array.prototype.map) { + + Array.prototype.map = function(callback, thisArg) { + + var T, A, k; + + if (this == null) { + throw new TypeError(' this is null or not defined'); + } + + // 1. Положим O равным результату вызова ToObject с передачей ему + // значения |this| в качестве аргумента. + var O = Object(this); + + // 2. Положим lenValue равным результату вызова внутреннего метода Get + // объекта O с аргументом "length". + // 3. Положим len равным ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. Если вызов IsCallable(callback) равен false, выкидываем исключение TypeError. + // Смотрите (en): http://es5.github.com/#x9.11 + // Смотрите (ru): http://es5.javascript.ru/x9.html#x9.11 + if (typeof callback !== 'function') { + throw new TypeError(callback + ' is not a function'); + } + + // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. + if (arguments.length > 1) { + T = thisArg; + } + + // 6. Положим A равным новому масиву, как если бы он был создан выражением new Array(len), + // где Array является стандартным встроенным конструктором с этим именем, + // а len является значением len. + A = new Array(len); + + // 7. Положим k равным 0 + k = 0; + + // 8. Пока k < len, будем повторять + while (k < len) { + + var kValue, mappedValue; + + // a. Положим Pk равным ToString(k). + // Это неявное преобразование для левостороннего операнда в операторе in + // b. Положим kPresent равным результату вызова внутреннего метода HasProperty + // объекта O с аргументом Pk. + // Этот шаг может быть объединён с шагом c + // c. Если kPresent равен true, то + if (k in O) { + + // i. Положим kValue равным результату вызова внутреннего метода Get + // объекта O с аргументом Pk. + kValue = O[k]; + + // ii. Положим mappedValue равным результату вызова внутреннего метода Call + // функции callback со значением T в качестве значения this и списком + // аргументов, содержащим kValue, k и O. + mappedValue = callback.call(T, kValue, k, O); + + // iii. Вызовем внутренний метод DefineOwnProperty объекта A с аргументами + // Pk, Описатель Свойства + // { Value: mappedValue, + // Writable: true, + // Enumerable: true, + // Configurable: true } + // и false. + + // В браузерах, поддерживающих Object.defineProperty, используем следующий код: + // Object.defineProperty(A, k, { + // value: mappedValue, + // writable: true, + // enumerable: true, + // configurable: true + // }); + + // Для лучшей поддержки браузерами, используем следующий код: + A[k] = mappedValue; + } + // d. Увеличим k на 1. + k++; + } + + // 9. Вернём A. + return A; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.19', 'Array.prototype.map')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.map', 'Array.prototype.map')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправите нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.map")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>объект {{jsxref("Map")}}</li> + <li>{{jsxref("Array.from()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/observe/index.html b/files/ru/web/javascript/reference/global_objects/array/observe/index.html new file mode 100644 index 0000000000..f8d7d9cd07 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/observe/index.html @@ -0,0 +1,138 @@ +--- +title: Array.observe() +slug: Web/JavaScript/Reference/Global_Objects/Array/observe +tags: + - Array + - ECMAScript7 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) +translation_of: Archive/Web/JavaScript/Array.observe +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Array.observe()</code></strong> используется для асинхронного обзора изменений в массивах, подобно тому, как метод {{jsxref("Object.observe()")}} используется для тех же целей для объектов. Он предоставляет поток изменений в порядке их возникновения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Array.observe(<var>arr</var>, <var>callback</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>arr</code></dt> + <dd>Обозреваемый массив.</dd> + <dt><code>callback</code></dt> + <dd>Функция, вызываемая на каждое сделанное изменение со следующими аргументами: + <dl> + <dt><code>changes</code></dt> + <dd>Массив объектов, каждый из которых представляет одно изменение. Эти объекты обладают следующими свойствами: + <ul> + <li><strong><code>name</code></strong>: название изменённого свойства.</li> + <li><strong><code>object</code></strong>: изменённый массив, после применения этого изменения.</li> + <li><strong><code>type</code></strong>: строка, указывающая тип произошедшего изменения. Может быть одной из <code>"add"</code>, <code>"update"</code>, <code>"delete"</code> или <code>"splice"</code>.</li> + <li><strong><code>oldValue</code></strong>: только для типов <code>"update"</code> и <code>"delete"</code>. Значение до изменения.</li> + <li><strong><code>index</code></strong>: только для типа <code>"splice"</code>. Индекс, по которому произошло изменение.</li> + <li><strong><code>removed</code></strong>: только для типа <code>"splice"</code>. Массив с удалёнными элементами.</li> + <li><strong><code>addedCount</code></strong>: только для типа <code>"splice"</code>. Количество добавленных элементов.</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Функция <code>callback</code> вызывается каждый раз, когда с массивом <code>arr</code> происходят какие-либо изменения. Параметром в неё передаётся массив со всеми произошедшими изменениями в порядке их возникновения.</p> + +<div class="note"> +<p>Изменения через методы объекта {{jsxref("Array")}}, например, посредством метода {{jsxref("Array.prototype.pop()")}}, будут зарегистрированы как изменения типа <code>"splice"</code>. Присваивание по индексу, в результате которого размер массива не изменится, может быть зарегистрировано, как изменение типа <code>"update"</code>.</p> +</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Logging_all_three_different_types" name="Example:_Logging_all_three_different_types">Пример: журналирование всех трёх типов событий</h3> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; + +Array.observe(arr, function(changes) { + console.log(changes); +}); + +arr[1] = 'B'; +// [{type: 'update', object: <arr>, name: '1', oldValue: 'b'}] + +arr[3] = 'd'; +// [{type: 'splice', object: <arr>, index: 3, removed: [], addedCount: 1}] + +arr.splice(1, 2, 'beta', 'gamma', 'delta'); +// [{type: 'splice', object: <arr>, index: 1, removed: ['B', 'c', 'd'], addedCount: 3}] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p><a href="https://github.com/arv/ecmascript-object-observe">Черновое предложение к обсуждению для ECMAScript 7</a>.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("36")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.unobserve()")}} {{experimental_inline}}</li> + <li>{{jsxref("Object.observe()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/of/index.html b/files/ru/web/javascript/reference/global_objects/array/of/index.html new file mode 100644 index 0000000000..3f798e0516 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/of/index.html @@ -0,0 +1,99 @@ +--- +title: Array.of() +slug: Web/JavaScript/Reference/Global_Objects/Array/of +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/of +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Array.of()</strong></code> создаёт новый экземпляр массива <code>Array</code> из произвольного числа аргументов, вне зависимости от числа или типа аргумента.</p> + +<p>Разница между <code><strong>Array.of()</strong></code> и конструктором <code><strong>Array</strong></code> заключается в обработке целочисленных аргументов: <code><strong>Array.of(7)</strong></code> создаёт массив с одним элементом <code>7</code>, а <code><strong>Array(7)</strong></code> создаёт пустой массив со значением свойства <code>length</code> равным 7 (<strong>Замечание:</strong> подразумевается 7 пустых слотов, а не слоты со значением <code>undefined</code>).</p> + +<pre class="brush: js">Array.of(7); // [7] +Array.of(1, 2, 3); // [1, 2, 3] + +Array(7); // массив с 7 пустыми слотами +Array(1, 2, 3); // [1, 2, 3]</pre> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Array.of(<var>element0</var>[, <var>element1</var>[, ...[, <var>elementN</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>element<em>N</em></code></dt> + <dd>Элементы, из которых создаётся массив.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый массив {{jsxref("Array")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Эта функция является частью стандарта ECMAScript 6. Для дополнительной информации смотрите <a href="https://gist.github.com/rwaldron/1074126">предложение по Array.of и Array.from</a> и <a href="https://gist.github.com/rwaldron/3186576">полифилл для Array.of</a>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Array.of(1); // [1] +Array.of(1, 2, 3); // [1, 2, 3] +Array.of(undefined); // [undefined] +</pre> + +<h2 id="Compatibility" name="Compatibility">Полифилл</h2> + +<p>Выполнение следующего кода перед любым другим кодом создаст метод <code>Array.of()</code>, если он ещё не реализован в браузере.</p> + +<pre class="brush: js">if (!Array.of) { + Array.of = function() { + return Array.prototype.slice.call(arguments); + // Or + let vals = [] + for(let prop in arguments){ + vals.push(arguments[prop]) + } + return vals.slice() +}</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.of', 'Array.of')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.of', 'Array.of')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Array.of")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Array.from()")}}</li> + <li>{{jsxref("TypedArray.of()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/pop/index.html b/files/ru/web/javascript/reference/global_objects/array/pop/index.html new file mode 100644 index 0000000000..0f6ba275f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/pop/index.html @@ -0,0 +1,99 @@ +--- +title: Array.prototype.pop() +slug: Web/JavaScript/Reference/Global_Objects/Array/pop +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/pop +--- +<div>{{JSRef}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>pop()</strong></code> удаляет <strong>последний</strong> элемент из массива и возвращает его значение.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.pop()</code></pre> + +<h3 id="Description" name="Description">Возвращаемое значение</h3> + +<p>Последний элемент массива или {{jsxref("undefined")}}, если массив пуст.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>pop</code> удаляет последний элемент из массива и возвращает удалённое значение.</p> + +<p>Метод <code>pop</code> не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к массивоподобным объектам. Объекты, не содержащие свойство <code>length</code>, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.</p> + +<p>Если вы вызовете <code>pop()</code> на пустом массиве, он вернёт значение {{jsxref("undefined")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Removing_the_last_element_of_an_array" name="Example:_Removing_the_last_element_of_an_array">Удаление последнего элемента массива</h3> + +<p>Следующий код создаёт массив <code>myFish</code>, содержащий четыре элемента, а затем удаляет последний элемент.</p> + +<pre class="brush: js">var myFish = ['ангел', 'клоун', 'мандарин', 'хирург']; + +console.log(myFish); // ['ангел', 'клоун', 'мандарин', 'хирург'] + +var popped = myFish.pop(); + +console.log(myFish); // ['ангел', 'клоун', 'мандарин'] + +console.log(popped); // 'хирург' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.6', 'Array.prototype.pop')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.pop', 'Array.prototype.pop')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.pop', 'Array.prototype.pop')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Array.pop")}}</p> +</div> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.push()")}}</li> + <li>{{jsxref("Array.prototype.shift()")}}</li> + <li>{{jsxref("Array.prototype.unshift()")}}</li> + <li>{{jsxref("Array.prototype.splice()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/prototype/index.html b/files/ru/web/javascript/reference/global_objects/array/prototype/index.html new file mode 100644 index 0000000000..4d04fc0736 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/prototype/index.html @@ -0,0 +1,171 @@ +--- +title: Array.prototype +slug: Web/JavaScript/Reference/Global_Objects/Array/prototype +tags: + - Array + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/prototype +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>Array.prototype</code></strong> представляет прототип для конструктора {{jsxref("Global_Objects/Array", "Array", "массива")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Экземпляры <span class="internal"><code>Array</code></span> наследуются от <code>Array.prototype</code>. Как и с остальными конструкторами, вы можете изменять прототип конструктора объекта для применения изменений ко всем экземплярам класса <code>Array</code>.</p> + +<p>Небольшой факт: <code>Array.prototype</code> сам является экземпляром <code>Array</code>:</p> + +<pre class="brush: js">Array.isArray(Array.prototype); // true</pre> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>Array.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип объекта.</dd> + <dt>{{jsxref("Array.prototype.length")}}</dt> + <dd>Отражает количество элементов в массиве.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<h3 id="Mutator_methods" name="Mutator_methods">Методы изменения</h3> + +<p>Эти методы изменяют массив:</p> + +<dl> + <dt>{{jsxref("Array.prototype.copyWithin()")}} {{experimental_inline}}</dt> + <dd>Копирует последовательность элементов массива внутри массива.</dd> + <dt>{{jsxref("Array.prototype.fill()")}} {{experimental_inline}}</dt> + <dd>Заполняет все элементы массива от начального индекса до конечного индекса указанным значением.</dd> + <dt>{{jsxref("Array.prototype.pop()")}}</dt> + <dd>Удаляет последний элемент из массива и возвращает его.</dd> + <dt>{{jsxref("Array.prototype.push()")}}</dt> + <dd>Добавляет один или более элементов в конец массива и возвращает новую длину массива.</dd> + <dt>{{jsxref("Array.prototype.reverse()")}}</dt> + <dd>Переворачивает порядок элементов в массиве — первый элемент становится последним, а последний — первым.</dd> + <dt>{{jsxref("Array.prototype.shift()")}}</dt> + <dd>Удаляет первый элемент из массива и возвращает его.</dd> + <dt>{{jsxref("Array.prototype.sort()")}}</dt> + <dd>Сортирует элементы массива на месте и возвращает отсортированный массив.</dd> + <dt>{{jsxref("Array.prototype.splice()")}}</dt> + <dd>Добавляет и/или удаляет элементы из массива.</dd> + <dt>{{jsxref("Array.prototype.unshift()")}}</dt> + <dd>Добавляет один или более элементов в начало массива и возвращает новую длину массива.</dd> +</dl> + +<h3 id="Accessor_methods" name="Accessor_methods">Методы доступа</h3> + +<p>Эти методы не изменяют массив, а просто возвращают его в ином представлении.</p> + +<dl> + <dt>{{jsxref("Array.prototype.concat()")}}</dt> + <dd>Возвращает новый массив, состоящий из данного массива, соединённого с другим массивом и/или значением (списком массивов/значений).</dd> + <dt>{{jsxref("Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Определяет, содержится ли в массиве указанный элемент, возвращая, соответственно, <code>true</code> или <code>false</code>.</dd> + <dt>{{jsxref("Array.prototype.join()")}}</dt> + <dd>Объединяет все элементы массива в строку.</dd> + <dt>{{jsxref("Array.prototype.slice()")}}</dt> + <dd>Извлекает диапазон значений и возвращает его в виде нового массива.</dd> + <dt>{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает литеральное представление указанного массива; вы можете использовать это значение для создания нового массива. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Array.prototype.toString()")}}</dt> + <dd>Возвращает строковое представление массива и его элементов. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("Array.prototype.toLocaleString()")}}</dt> + <dd>Возвращает локализованное строковое представление массива и его элементов. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("Array.prototype.indexOf()")}}</dt> + <dd>Возвращает первый (наименьший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.</dd> + <dt>{{jsxref("Array.prototype.lastIndexOf()")}}</dt> + <dd>Возвращает последний (наибольший) индекс элемента внутри массива, равный указанному значению; или -1, если значение не найдено.</dd> +</dl> + +<h3 id="Iteration_methods" name="Iteration_methods">Методы обхода</h3> + +<p>Некоторые методы принимают в качестве аргументов функции, вызываемые при обработке массива. Когда вызываются эти методы, достаётся длина массива, и любой элемент, добавленный свыше этой длины изнутри функции обратного вызова не посещается. Другие изменения в массиве (установка значения или удаление элемента) могут повлиять на результаты операции, если изменённый элемент метод посещает после изменения. Хотя специфическое поведение этих методов в таких случаях хорошо определено, вы не должны на него полагаться, чтобы не запутывать других людей, читающих ваш код. Если вам нужно изменить массив, лучше вместо этого скопируйте его в новый массив.</p> + +<dl> + <dt>{{jsxref("Array.prototype.forEach()")}}</dt> + <dd>Вызывает функцию для каждого элемента в массиве.</dd> + <dt>{{jsxref("Array.prototype.entries()")}} {{experimental_inline}}</dt> + <dd>Возвращает новый объект итератора массива <code>Array Iterator</code>, содержащий пары ключ / значение для каждого индекса в массиве.</dd> + <dt>{{jsxref("Array.prototype.every()")}}</dt> + <dd>Возвращает <code>true</code>, если каждый элемент в массиве удовлетворяет условию проверяющей функции.</dd> + <dt>{{jsxref("Array.prototype.some()")}}</dt> + <dd>Возвращает <code>true</code>, если хотя бы один элемент в массиве удовлетворяет условию проверяющей функции.</dd> + <dt>{{jsxref("Array.prototype.filter()")}}</dt> + <dd>Создаёт новый массив со всеми элементами этого массива, для которых функция фильтрации возвращает <code>true</code>.</dd> + <dt>{{jsxref("Array.prototype.find()")}} {{experimental_inline}}</dt> + <dd>Возвращает искомое значение в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или {{jsxref("Global_Objects/undefined", "undefined")}}, если такое значение не найдено.</dd> + <dt>{{jsxref("Array.prototype.findIndex()")}} {{experimental_inline}}</dt> + <dd>Возвращает искомый индекс в массиве, если элемент в массиве удовлетворяет условию проверяющей функции или -1, если такое значение не найдено.</dd> + <dt>{{jsxref("Array.prototype.keys()")}} {{experimental_inline}}</dt> + <dd>Возвращает новый итератор массива, содержащий ключи каждого индекса в массиве.</dd> + <dt>{{jsxref("Array.prototype.map()")}}</dt> + <dd>Создаёт новый массив с результатами вызова указанной функции на каждом элементе данного массива.</dd> + <dt>{{jsxref("Array.prototype.reduce()")}}</dt> + <dd>Применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.</dd> + <dt>{{jsxref("Array.prototype.reduceRight()")}}</dt> + <dd>Применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.</dd> + <dt>{{jsxref("Array.prototype.values()")}} {{experimental_inline}}</dt> + <dd>Возвращает новый объект итератора массива <code>Array Iterator</code>, содержащий значения для каждого индекса в массиве.</dd> + <dt>{{jsxref("Array.prototype.@@iterator()", "Array.prototype[@@iterator]()")}} {{experimental_inline}}</dt> + <dd>Возвращает новый объект итератора массива <code>Array Iterator</code>, содержащий значения для каждого индекса в массиве.</dd> +</dl> + +<h3 id="Generic_methods" name="Generic_methods">Общие методы</h3> + +<p>Многие методы JavaScript-массива спроектированы таким образом, чтобы иметь возможность применяться ко всем объектам, «выглядящим похоже» на массивы. То есть, они могут использоваться на любом объекте, имеющим свойство <code>length</code> и к элементам которого можно получить доступ через числовые имена свойств (как при индексации: <code>array[5]</code>). <span class="comment">TODO: предоставить примеры с Array.prototype.forEach.call и добавлением методов к объекту, как сделано для {{jsxref("Global_Objects/JavaArray", "JavaArray")}} или {{jsxref("Global_Objects/String", "String")}}.</span> Некоторые методы, например {{jsxref("Array.join", "join")}}, только читают свойство <code>length</code> и числовые свойства объекта, на котором они вызываются. Другие, вроде {{jsxref("Array.reverse", "reverse")}} требуют, чтобы числовые свойства и свойство <code>length</code> объекта были изменяемыми; эти методы не могут вызываться на объектах вроде {{jsxref("Global_Objects/String", "String")}}, которые не позволяют установку своего свойства <code>length</code> или синтезирование числовых свойств.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.3.1', 'Array.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype', 'Array.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Array.prototype")}}</p> + +<p> </p> + +<div> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/push/index.html b/files/ru/web/javascript/reference/global_objects/array/push/index.html new file mode 100644 index 0000000000..d746b2cd88 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/push/index.html @@ -0,0 +1,111 @@ +--- +title: Array.prototype.push() +slug: Web/JavaScript/Reference/Global_Objects/Array/push +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/push +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>push()</strong></code> добавляет один или более элементов в конец массива и возвращает новую длину массива.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.push(<var>element1</var>, ..., <var>elementN</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>element<em>N</em></code></dt> + <dd>Элементы, добавляемые в конец массива.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Новое значение свойства {{jsxref("Array.length", "length")}} объекта, для которого был вызван данный метод.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>push</code> присоединяет значения к массиву.</p> + +<p>Метод <code>push</code> не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Метод опирается на свойство <code>length</code> для определения места вставки значений. Если свойство <code>length</code> не может быть преобразовано в число, будет использовать индекс 0. Сюда входит случай несуществования свойства <code>length</code>, в этом случае оно также будет создано.</p> + +<p>Единственными родными массивоподобными объектами являются {{jsxref("Global_Objects/String", "строки", "", 1)}}, хотя к ним он не может быть применён, поскольку строки являются неизменяемыми.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Adding_elements_to_an_array" name="Example:_Adding_elements_to_an_array">Пример: добавление элементов в массив</h3> + +<p>Следующий код создаёт массив <code>sports</code>, содержащий два элемента, а затем добавляет к нему ещё два элемента. Переменная <code>total</code> будет содержать новую длину массива.</p> + +<pre class="brush: js">var sports = ['футбол', 'бейсбол']; +var total = sports.push('американский футбол', 'плавание'); + +console.log(sports); // ['футбол', 'бейсбол', 'американский футбол', 'плавание'] +console.log(total); // 4 +</pre> + +<h3 id="Example_Merging_two_arrays" name="Example:_Merging_two_arrays">Пример: слияние двух массивов</h3> + +<p>В этом примере используется функция {{jsxref("Function.apply", "apply()")}} для помещения всех элементов из второго массива в первый.</p> + +<pre class="brush: js">var vegetables = ['пастернак', 'картошка']; +var moreVegs = ['сельдерей', 'свёкла']; + +// Сливает второй массив с первым +// Эквивалентно вызову vegetables.push('сельдерей', 'свёкла'); +Array.prototype.push.apply(vegetables, moreVegs); + +console.log(vegetables); // ['пастернак', 'картошка', 'сельдерей', 'свёкла'] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.7', 'Array.prototype.push')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.push', 'Array.prototype.push')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div> + + +<p>{{Compat("javascript.builtins.Array.push")}}</p> +</div> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.pop()")}}</li> + <li>{{jsxref("Array.prototype.shift()")}}</li> + <li>{{jsxref("Array.prototype.unshift()")}}</li> + <li>{{jsxref("Array.prototype.concat()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/reduce/index.html b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html new file mode 100644 index 0000000000..b65fb98ed4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reduce/index.html @@ -0,0 +1,314 @@ +--- +title: Array.prototype.reduce() +slug: Web/JavaScript/Reference/Global_Objects/Array/Reduce +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.8 + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/Reduce +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>reduce()</strong></code> применяет функцию <strong>reducer</strong> к каждому элементу массива (слева-направо), возвращая одно результирующее значение.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-reduce.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>array</var>.reduce(<var>callback</var>[, <var>initialValue</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, выполняющаяся для каждого элемента массива, принимает четыре аргумента: + <dl> + <dt><code>accumulator</code></dt> + <dd>Аккумулятор, аккумулирующий значение, которое возвращает функция <strong>callback </strong>после посещения очередного элемента, либо значение <code>initialValue</code>, если оно предоставлено (смотрите пояснения ниже).</dd> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента массива.</dd> + <dt><code>array</code>{{optional_inline}}</dt> + <dd>Массив, для которого была вызвана функция <code>reduce</code>.</dd> + </dl> + </dd> + <dt><code>initialValue</code>{{optional_inline}}</dt> + <dd>Необязательный параметр. Объект, используемый в качестве первого аргумента при первом вызове функции <code>callback</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>reduce()</code> выполняет функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве, за исключением пустот, принимая четыре аргумента: начальное значение (или значение от предыдущего вызова <code>callback</code>), значение текущего элемента, текущий индекс и массив, по которому происходит итерация.</p> + +<p>При первом вызове функции, параметры <code>accumulator</code> и <code>currentValue</code> могут принимать одно из двух значений. Если при вызове <code>reduce()</code> передан аргумент <code>initialValue</code>, то значение <code>accumulator</code> будет равным значению <code>initialValue</code>, а значение <code>currentValue</code> будет равным первому значению в массиве. Если аргумент <code>initialValue</code> не задан, то значение <code>accumulator</code> будет равным первому значению в массиве, а значение <code>currentValue</code> будет равным второму значению в массиве.</p> + +<p>Если массив пустой и аргумент <code>initialValue</code> не указан, будет брошено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Если массив состоит только из одного элемента (независимо от его положения в массиве) и аргумент <code>initialValue</code> не указан, или если аргумент <code>initialValue</code> указан, но массив пустой, то будет возвращено одно это значение, без вызова функции <code>callback</code>.</p> + +<p>Предположим, что <code>reduce()</code> используется следующим образом:</p> + +<pre class="brush: js">[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, index, array) { + return previousValue + currentValue; +}); +</pre> + +<p>Функция обратного вызова будет вызвана четыре раза, аргументы и возвращаемое значение при каждом вызове будут следующими:</p> + +<table style="width: 100%;"> + <thead> + <tr> + <th scope="col"></th> + <th scope="col"><code>previousValue</code></th> + <th scope="col"><code>currentValue</code></th> + <th scope="col"><code>index</code></th> + <th scope="col"><code>array</code></th> + <th scope="col">возвращаемое значение</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">первый вызов</th> + <td><code>0</code></td> + <td><code>1</code></td> + <td><code>1</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>1</code></td> + </tr> + <tr> + <th scope="row">второй вызов</th> + <td><code>1</code></td> + <td><code>2</code></td> + <td><code>2</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>3</code></td> + </tr> + <tr> + <th scope="row">третий вызов</th> + <td><code>3</code></td> + <td><code>3</code></td> + <td><code>3</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>6</code></td> + </tr> + <tr> + <th scope="row">четвёртый вызов</th> + <td><code>6</code></td> + <td><code>4</code></td> + <td><code>4</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>10</code></td> + </tr> + </tbody> +</table> + +<p>Значение, возвращённое методом <code>reduce()</code> будет равным последнему результату выполнения функции обратного вызова (<code>10</code>).</p> + +<p>Если же вы зададите начальное значение <code>initialValue</code>, результат будет выглядеть так:</p> + +<pre class="brush: js">[0, 1, 2, 3, 4].reduce(function(accumulator, currentValue, index, array) { + return accumulator + currentValue; +}, 10); +</pre> + +<table style="width: 100%;"> + <thead> + <tr> + <th scope="col"></th> + <th scope="col"><code>accumulator</code></th> + <th scope="col"><code>currentValue</code></th> + <th scope="col"><code>index</code></th> + <th scope="col"><code>array</code></th> + <th scope="col">возвращаемое значение</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">первый вызов</th> + <td><code>10</code></td> + <td><code>0</code></td> + <td><code>0</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>10</code></td> + </tr> + <tr> + <th scope="row">второй вызов</th> + <td><code>10</code></td> + <td><code>1</code></td> + <td><code>1</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>11</code></td> + </tr> + <tr> + <th scope="row">третий вызов</th> + <td><code>11</code></td> + <td><code>2</code></td> + <td><code>2</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>13</code></td> + </tr> + <tr> + <th scope="row">четвёртый вызов</th> + <td><code>13</code></td> + <td><code>3</code></td> + <td><code>3</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>16</code></td> + </tr> + <tr> + <th scope="row">пятый вызов</th> + <td><code>16</code></td> + <td><code>4</code></td> + <td><code>4</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>20</code></td> + </tr> + </tbody> +</table> + +<p>Значение, возвращённое методом <code>reduce()</code> на этот раз, конечно же, будет равным <code>20</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Sum_up_all_values_within_an_array" name="Example:_Sum_up_all_values_within_an_array">Суммирование всех значений в массиве</h3> + +<pre class="brush: js">var total = [0, 1, 2, 3].reduce(function(a, b) { + return a + b; +}); +// total == 6 +</pre> + +<h3 id="Суммирование_значений_в_массиве_объектов">Суммирование значений в массиве объектов</h3> + +<p>Чтобы суммировать значения, содержащиеся в массиве объектов, вы <strong>должны</strong> указать <code>initialValue</code>, чтобы каждый элемент смог пройти через <code>callback</code>.</p> + +<pre class="brush: js">var initialValue = 0; +var sum = [{x: 1}, {x:2}, {x:3}].reduce(function (accumulator, currentValue) { + return accumulator + currentValue.x; +}, initialValue) +// sum == 6 +</pre> + +<p>Тоже самое, но со стрелочной функцией: </p> + +<pre class="brush: js">var initialValue = 0; +var sum = [{x: 1}, {x:2}, {x:3}].reduce( + (accumulator, currentValue) => accumulator + currentValue.x, + initialValue +); +// sum == 6 +</pre> + +<h3 id="Example_Flatten_an_array_of_arrays" name="Example:_Flatten_an_array_of_arrays">Разворачивание массива массивов</h3> + +<pre class="brush: js">var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) { + return a.concat(b); +}); +// flattened равен [0, 1, 2, 3, 4, 5] +</pre> + +<h3 id="Example_Flatten_an_array_of_arrays" name="Example:_Flatten_an_array_of_arrays">Пример: склеивание массивов, содержащихся в объектах массива, с использованием оператора расширения и initialValue</h3> + +<pre class="brush: js">// friends - список из объектов(друзей) +// где поле "books" - список любимых книг друга +var friends = [ +{ name: "Anna", books: ["Bible", "Harry Potter"], age: 21 }, +{ name: "Bob", books: ["War and peace", "Romeo and Juliet"], age: 26 }, +{ name: "Alice", books: ["The Lord of the Rings", "The Shining"], age: 18 } +] + +// allbooks - список, который будет содержать все книги друзей + +// дополнительный список указанный в initialValue +var allbooks = friends.reduce(function(prev, curr) { + return [...prev, ...curr.books]; +}, ["Alphabet"]); + +// allbooks = ["Alphabet", "Bible", "Harry Potter", "War and peace", +// "Romeo and Juliet", "The Lord of the Rings", "The Shining"] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>Array.prototype.reduce()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>reduce()</code> в реализациях, которые не поддерживают этот метод.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.21 +// Ссылка (en): http://es5.github.io/#x15.4.4.21 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.21 +if (!Array.prototype.reduce) { + Array.prototype.reduce = function(callback/*, initialValue*/) { + 'use strict'; + if (this == null) { + throw new TypeError('Array.prototype.reduce called on null or undefined'); + } + if (typeof callback !== 'function') { + throw new TypeError(callback + ' is not a function'); + } + var t = Object(this), len = t.length >>> 0, k = 0, value; + if (arguments.length >= 2) { + value = arguments[1]; + } else { + while (k < len && ! (k in t)) { + k++; + } + if (k >= len) { + throw new TypeError('Reduce of empty array with no initial value'); + } + value = t[k++]; + } + for (; k < len; k++) { + if (k in t) { + value = callback(value, t[k], k, t); + } + } + return value; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.21', 'Array.prototype.reduce()')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.reduce', 'Array.prototype.reduce()')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.reduce")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.reduceRight()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html b/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html new file mode 100644 index 0000000000..08bb7e978d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reduceright/index.html @@ -0,0 +1,290 @@ +--- +title: Array.prototype.reduceRight() +slug: Web/JavaScript/Reference/Global_Objects/Array/reduceRight +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.8 + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/ReduceRight +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>reduceRight()</strong></code> применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>arr</var>.reduceRight(<var>callback</var>[, <var>initialValue</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>callback</code></dt> + <dd>Функция, выполняющаяся для каждого элемента массива, принимает четыре аргумента: + <dl> + <dt><code>previousValue</code></dt> + <dd>Значение, возвращённое предыдущим выполнением функции <code>callback</code>, либо значение <code>initialValue</code>, если оно предоставлено (смотрите пояснения ниже).</dd> + <dt><code>currentValue</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code></dt> + <dd>Индекс текущего обрабатываемого элемента массива.</dd> + <dt><code>array</code></dt> + <dd>Массив, для которого была вызвана функция <code>reduceRight</code>.</dd> + </dl> + </dd> + <dt><code>initialValue</code></dt> + <dd>Необязательный параметр. Объект, используемый в качестве первого аргумента при первом вызове функции <code>callback</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>reduceRight()</code> выполняет функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве, за исключением пустот, принимая четыре аргумента: начальное значение (или значение от предыдущего вызова <code>callback</code>), значение текущего элемента, текущий индекс и массив, по которому происходит итерация.</p> +<p>Вызов функции обратного вызова <code>callback</code> будет выглядеть так:</p> +<pre class="brush: js">array.reduceRight(function(previousValue, currentValue, index, array) { + // ... +}); +</pre> +<p>При первом вызове функции, параметры <code>previousValue</code> и <code>currentValue</code> могут принимать одно из двух значений. Если при вызове <code>reduceRight()</code> передан аргумент <code>initialValue</code>, то значение <code>previousValue</code> будет равным значению <code>initialValue</code>, а значение <code>currentValue</code> будет равным последнему значению в массиве. Если аргумент <code>initialValue</code> не задан, то значение <code>previousValue</code> будет равным последнему значению в массиве, а значение <code>currentValue</code> будет равным второму с конца значению в массиве.</p> +<p>Если массив пустой и аргумент <code>initialValue</code> не указан, будет брошено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Если массив состоит только из одного элемента (независимо от его положения в массиве) и аргумент <code>initialValue</code> не указан, или если аргумент <code>initialValue</code> указан, но массив пустой, то будет возвращено одно это значение, без вызова функции <code>callback</code>.</p> +<p>Вот так будут выглядеть некоторый примеры прогона функции:</p> +<pre class="brush: js">[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) { + return previousValue + currentValue; +}); +</pre> +<p>Функция обратного вызова будет вызвана четыре раза, аргументы и возвращаемое значение при каждом вызове будут следующими:</p> +<table style="width: 100%;"> + <thead> + <tr> + <th scope="col"> </th> + <th scope="col"><code>previousValue</code></th> + <th scope="col"><code>currentValue</code></th> + <th scope="col"><code>index</code></th> + <th scope="col"><code>array</code></th> + <th scope="col">возвращаемое значение</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">первый вызов</th> + <td><code>4</code></td> + <td><code>3</code></td> + <td><code>3</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>7</code></td> + </tr> + <tr> + <th scope="row">второй вызов</th> + <td><code>7</code></td> + <td><code>2</code></td> + <td><code>2</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>9</code></td> + </tr> + <tr> + <th scope="row">третий вызов</th> + <td><code>9</code></td> + <td><code>1</code></td> + <td><code>1</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>10</code></td> + </tr> + <tr> + <th scope="row">четвёртый вызов</th> + <td><code>10</code></td> + <td><code>0</code></td> + <td><code>0</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>10</code></td> + </tr> + </tbody> +</table> +<p>Значение, возвращённое методом <code>reduceRight()</code> будет равным последнему результату выполнения функции обратного вызова (<code>10</code>).</p> +<p>Если же вы зададите начальное значение <code>initialValue</code>, результат будет выглядеть так:</p> +<pre class="brush: js">[0, 1, 2, 3, 4].reduceRight(function(previousValue, currentValue, index, array) { + return previousValue + currentValue; +}, 10); +</pre> +<table style="width: 100%;"> + <thead> + <tr> + <th scope="col"> </th> + <th scope="col"><code>previousValue</code></th> + <th scope="col"><code>currentValue</code></th> + <th scope="col"><code>index</code></th> + <th scope="col"><code>array</code></th> + <th scope="col">возвращаемое значение</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">первый вызов</th> + <td><code>10</code></td> + <td><code>4</code></td> + <td><code>4</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>14</code></td> + </tr> + <tr> + <th scope="row">второй вызов</th> + <td><code>14</code></td> + <td><code>3</code></td> + <td><code>3</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>17</code></td> + </tr> + <tr> + <th scope="row">третий вызов</th> + <td><code>17</code></td> + <td><code>2</code></td> + <td><code>2</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>19</code></td> + </tr> + <tr> + <th scope="row">четвёртый вызов</th> + <td><code>19</code></td> + <td><code>1</code></td> + <td><code>1</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>20</code></td> + </tr> + <tr> + <th scope="row">пятый вызов</th> + <td><code>20</code></td> + <td><code>0</code></td> + <td><code>0</code></td> + <td><code>[0, 1, 2, 3, 4]</code></td> + <td><code>20</code></td> + </tr> + </tbody> +</table> +<p>Значение, возвращённое методом <code>reduceRight()</code> на этот раз, конечно же, будет равным <code>20</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Sum_up_all_values_within_an_array" name="Example:_Sum_up_all_values_within_an_array">Пример: суммирование всех значений в массиве</h3> +<pre class="brush: js">var total = [0, 1, 2, 3].reduceRight(function(a, b) { + return a + b; +}); +// total == 6 +</pre> + +<h3 id="Example:_Flatten_an_array_of_arrays" name="Example:_Flatten_an_array_of_arrays">Пример: разворачивание массива массивов</h3> +<pre class="brush: js">var flattened = [[0, 1], [2, 3], [4, 5]].reduceRight(function(a, b) { + return a.concat(b); +}, []); +// flattened равен [4, 5, 2, 3, 0, 1] +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> +<p>Метод <code>Array.prototype.reduceRight()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может отсутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>reduceRight()</code> в реализациях, которые не поддерживают этот метод.</p> +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.22 +// Ссылка (en): http://es5.github.io/#x15.4.4.22 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.22 +if ('function' !== typeof Array.prototype.reduceRight) { + Array.prototype.reduceRight = function(callback/*, initialValue*/) { + 'use strict'; + if (null === this || 'undefined' === typeof this) { + throw new TypeError('Array.prototype.reduce called on null or undefined'); + } + if ('function' !== typeof callback) { + throw new TypeError(callback + ' is not a function'); + } + var t = Object(this), len = t.length >>> 0, k = len - 1, value; + if (arguments.length >= 2) { + value = arguments[1]; + } else { + while (k >= 0 && !k in t) { + k--; + } + if (k < 0) { + throw new TypeError('Reduce of empty array with no initial value'); + } + value = t[k--]; + } + for (; k >= 0; k--) { + if (k in t) { + value = callback(value, t[k], k, t); + } + } + return value; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.22', 'Array.prototype.reduceRight')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.reduceright', 'Array.prototype.reduceRight')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("10.5")}}</td> + <td>{{CompatSafari("4.0")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Array.prototype.reduce()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/reverse/index.html b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html new file mode 100644 index 0000000000..15bb946242 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/reverse/index.html @@ -0,0 +1,96 @@ +--- +title: Array.prototype.reverse() +slug: Web/JavaScript/Reference/Global_Objects/Array/reverse +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/reverse +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>reverse()</strong></code> на месте обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-reverse.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>array</var>.reverse()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Перевернутный массив</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>reverse()</code> на месте переставляет элементы массива, на котором он был вызван, изменяет массив и возвращает ссылку на него.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Reversing_the_elements_in_an_array" name="Example:_Reversing_the_elements_in_an_array">Пример: обращение порядка элементов в массиве</h3> + +<p>В следующем примере создаётся массив <code>myArray</code>, содержащий три элемента, а затем массив переворачивается.</p> + +<pre class="brush: js">var myArray = ['один', 'два', 'три']; +myArray.reverse(); + +console.log(myArray) // ['три', 'два', 'один'] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.8', 'Array.prototype.reverse')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.reverse', 'Array.prototype.reverse')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.reverse")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.join()")}}</li> + <li>{{jsxref("Array.prototype.sort()")}}</li> + <li>{{jsxref("TypedArray.prototype.reverse()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/shift/index.html b/files/ru/web/javascript/reference/global_objects/array/shift/index.html new file mode 100644 index 0000000000..081339bd93 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/shift/index.html @@ -0,0 +1,139 @@ +--- +title: Array.prototype.shift() +slug: Web/JavaScript/Reference/Global_Objects/Array/shift +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/shift +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>shift()</strong></code> удаляет <strong>первый</strong> элемент из массива и возвращает его значение. Этот метод изменяет длину массива.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.shift()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>shift</code> удаляет элемент по нулевому индексу, сдвигает значения по последовательным индексам вниз, а затем возвращает удалённое значение. Если свойство {{jsxref("Array.length", "length")}} массива равно 0, вернётся значение {{jsxref("Global_Objects/undefined", "undefined")}}.</p> + +<p>Метод <code>shift</code> не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Объекты, не содержащие свойство <code>length</code>, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Removing_an_element_from_an_array" name="Example:_Removing_an_element_from_an_array">Пример: удаление элемента из массива</h3> + +<p>Следующий код показывает массив <code>myFish</code> до и после удаления его первого элемента. Также он показывает удалённый элемент:</p> + +<pre class="brush: js">var myFish = ['ангел', 'клоун', 'мандарин', 'хирург']; + +console.log('myFish до: ' + myFish); +//myFish до: ангел,клоун,мандарин,хирург + +var shifted = myFish.shift(); + +console.log('myFish после: ' + myFish); +//myFish после: клоун,мандарин,хирург + +console.log('Удалён этот элемент: ' + shifted); +//Удалён этот элемент: ангел +</pre> + +<p>Вывод этого примера будет следующим:</p> + +<pre class="brush: js">myFish до: ангел,клоун,мандарин,хирург +myFish после: клоун,мандарин,хирург +Удалён этот элемент: ангел +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.9', 'Array.prototype.shift')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.shift', 'Array.prototype.shift')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("1.0")}}</td> + <td>{{CompatGeckoDesktop("1.7")}}</td> + <td>{{CompatIE("5.5")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.push()")}}</li> + <li>{{jsxref("Array.prototype.pop()")}}</li> + <li>{{jsxref("Array.prototype.unshift()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/slice/index.html b/files/ru/web/javascript/reference/global_objects/array/slice/index.html new file mode 100644 index 0000000000..1b35c36e24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/slice/index.html @@ -0,0 +1,242 @@ +--- +title: Array.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/Array/slice +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/slice +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>slice()</strong></code> возвращает новый массив, содержащий копию части исходного массива.</p> + +<div>{{EmbedInteractiveExample("pages/js/array-slice.html")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>arr</var>.slice([<var>begin</var>[, <var>end</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>begin</code> {{optional_inline}}</dt> + <dd>Индекс (счёт начинается с нуля), по которому начинать извлечение.</dd> + <dd>Если индекс отрицательный, <code>begin</code> указывает смещение от конца последовательности. Вызов <code>slice(-2)</code> извлечёт два последних элемента последовательности.</dd> + <dd>Если <code>begin</code> неопределен, <code>slice()</code> начинает работать с индекса <code>0</code>.</dd> + <dd>Если <code>begin</code> больше длины последовательности вернется пустой массив.</dd> + <dt><code>end</code> {{optional_inline}}</dt> + <dd>Индекс (счёт начинается с нуля), по которому заканчивать извлечение. Метод <code>slice()</code> извлекает элементы с индексом меньше <code>end</code>.</dd> + <dd>Вызов <code>slice(1, 4)</code> извлечёт элементы со второго по четвёртый (элементы по индексам 1, 2 и 3).</dd> + <dd>Если индекс отрицательный, <code>end</code> указывает смещение от конца последовательности. Вызов <code>slice(2, -1)</code> извлечёт из последовательности элементы начиная с третьего элемента с начала и заканчивая вторым с конца.</dd> + <dd>Если <code>end</code> опущен, <code>slice()</code> извлекает все элементы до конца последовательности (<code>arr.length</code>).</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый массив, содержащий извлеченные элементы.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>slice()</code> не изменяет исходный массив, а возвращает новую «одноуровневую» копию, содержащую копии элементов, вырезанных из исходного массива. Элементы исходного массива копируются в новый массив по следующим правилам:</p> + +<ul> + <li>Ссылки на объекты (но не фактические объекты): метод <code>slice()</code> копирует ссылки на объекты в новый массив. И оригинал, и новый массив ссылаются на один и тот же объект. То есть, если объект по ссылке будет изменён, изменения будут видны и в новом, и в исходном массивах.</li> + <li>Строки и числа (но не объекты {{jsxref("Global_Objects/String", "String")}} и {{jsxref("Global_Objects/Number", "Number")}}): метод <code>slice()</code> копирует значения строк и чисел в новый массив. Изменения строки или числа в одном массиве никак не затрагивает другой.</li> +</ul> + +<p>Если к любому массиву будет добавлен новый элемент, это никак не повлияет на другой массив.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Return_a_portion_of_an_existing_array" name="Example:_Return_a_portion_of_an_existing_array">Пример: возврат части существующего массива</h3> + +<pre class="brush: js notranslate">// Пример: наши хорошие друзья цитрусовые среди фруктов +var fruits = ['Банан', 'Апельсин', 'Лимон', 'Яблоко', 'Манго']; +var citrus = fruits.slice(1, 3); + +// citrus содержит ['Апельсин', 'Лимон'] +</pre> + +<h3 id="Example_Using_slice" name="Example:_Using_slice">Пример: использование метода <code>slice()</code></h3> + +<p>В следующем примере метод <code>slice()</code> создаёт новый массив, <code>newCar</code>, из массива <code>myCar</code>. Оба содержат ссылку на объект <code>myHonda</code>. Когда цвет в объекте <code>myHonda</code> изменяется на багровый, оба массива замечают это изменение.</p> + +<pre class="brush: js notranslate">// Используя slice, создаём newCar из myCar. +var myHonda = { color: 'красный', wheels: 4, engine: { cylinders: 4, size: 2.2 } }; +var myCar = [myHonda, 2, 'в хорошем состоянии', 'приобретена в 1997']; +var newCar = myCar.slice(0, 2); + +// Отображаем значения myCar, newCar и цвет myHonda +// по ссылкам из обоих массивов. +console.log('myCar = ' + myCar.toSource()); +console.log('newCar = ' + newCar.toSource()); +console.log('myCar[0].color = ' + myCar[0].color); +console.log('newCar[0].color = ' + newCar[0].color); + +// Изменяем цвет myHonda. +myHonda.color = 'багровый'; +console.log('Новый цвет моей Honda - ' + myHonda.color); + +// Отображаем цвет myHonda по ссылкам из обоих массивов. +console.log('myCar[0].color = ' + myCar[0].color); +console.log('newCar[0].color = ' + newCar[0].color); +</pre> + +<p>Этот скрипт выведет:</p> + +<pre class="brush: js notranslate">myCar = [{color:'красный', wheels:4, engine:{cylinders:4, size:2.2}}, 2, + 'в хорошем состоянии', 'приобретена в 1997'] +newCar = [{color:'красный', wheels:4, engine:{cylinders:4, size:2.2}}, 2] +myCar[0].color = красный +newCar[0].color = красный +Новый цвет моей Honda - багровый +myCar[0].color = багровый +newCar[0].color = багровый +</pre> + +<h2 id="Array-like" name="Array-like">Массивоподобные объекты</h2> + +<p>Метод <code>slice()</code> также может использоваться для преобразования массивоподобных объектов / коллекций в новый массив <code>Array</code>. Вам просто нужно привязать метод к объекту. Псевдомассив {{jsxref("Functions_and_function_scope/arguments", "arguments")}} внутри функции как раз является примером «массивоподобного объекта».</p> + +<pre class="brush: js notranslate">function list() { + return Array.prototype.slice.call(arguments, 0); +} + +var list1 = list(1, 2, 3); // [1, 2, 3] +</pre> + +<p>Привязка может быть осуществлена посредством функции .<code>call()</code> из прототипа функции {{jsxref("Function.prototype")}}, также запись может быть сокращена до <code>[].slice.call(arguments)</code> вместо использования <code>Array.prototype.slice.call()</code>. В любом случае, она может быть упрощена посредством использования функции {{jsxref("Function.prototype.bind()", "bind()")}}.</p> + +<pre class="brush: js notranslate">var unboundSlice = Array.prototype.slice; +var slice = Function.prototype.call.bind(unboundSlice); + +function list() { + return slice(arguments, 0); +} + +var list1 = list(1, 2, 3); // [1, 2, 3] +</pre> + +<h2 id="Streamlining_cross-browser_behavior" name="Streamlining_cross-browser_behavior">Совершенствование кросс-браузерного поведения</h2> + +<p>Хотя спецификация не требует от хост-объектов (например, объектов DOM) следовать поведению Mozilla при преобразовании с помощью <code>Array.prototype.slice()</code> и IE < 9 так не делает, версии IE, начиная с 9-й это умеют. «Прокладывание» позволяет добиться надёжного кросс-браузерного поведения. Пока другие современные браузеры будут поддерживать эту способность, что и делают в настоящее время IE, Mozilla, Chrome, Safari и Opera, разработчики, читая (поддерживающий DOM) код функции <code>slice()</code>, опирающийся на эту прокладку, не будут вводиться в заблуждение его семантикой; они могут смело полагаться на текущую семантику, являющуюся, видимо, <em>де-факто</em> стандартным поведением. (Прокладка также исправляет поведение IE, позволяя работать со вторым аргументом <code>slice()</code>, явно определённым как {{jsxref("Global_Objects/null", "null")}}/{{jsxref("Global_Objects/undefined", "undefined")}}, поскольку более ранние версии IE такое не позволяют, но все современные браузеры, в том числе IE >= 9, поддерживают данное поведение.)</p> + +<pre class="brush: js notranslate">/** + * Прокладка для "исправления" отсутствия поддержки в IE < 9 применения slice + * к хост-объектам вроде NamedNodeMap, NodeList и HTMLCollection + * (технически, поскольку хост-объекты зависят от реализации, + * по крайней мере, до ES2015, IE не обязан так работать). + * Также работает для строк, исправляет поведение IE < 9, позволяя явно указывать undefined + * вторым аргументом (как в Firefox), и предотвращает ошибки, возникающие при + * вызове на других объектах DOM. + */ +(function () { + 'use strict'; + var _slice = Array.prototype.slice; + + try { + // Не может использоваться с элементами DOM в IE < 9 + _slice.call(document.documentElement); + } catch (e) { // В IE < 9 кидается исключение + // Функция будет работать для истинных массивов, массивоподобных объектов, + // NamedNodeMap (атрибуты, сущности, примечания), + // NodeList (например, getElementsByTagName), HTMLCollection (например, childNodes) + // и не будет падать на других объектах DOM (как это происходит на элементах DOM в IE < 9) + Array.prototype.slice = function(begin, end) { + // IE < 9 будет недоволен аргументом end, равным undefined + end = (typeof end !== 'undefined') ? end : this.length; + + // Для родных объектов Array мы используем родную функцию slice + if (Object.prototype.toString.call(this) === '[object Array]') { + return _slice.call(this, begin, end); + } + + // Массивоподобные объекты мы обрабатываем самостоятельно + var i, cloned = [], + size, len = this.length; + + // Обрабатываем отрицательное значение begin + var start = begin || 0; + start = (start >= 0) ? start: len + start; + + // Обрабатываем отрицательное значение end + var upTo = (end) ? end : len; + if (end < 0) { + upTo = len + end; + } + + // Фактически ожидаемый размер среза + size = upTo - start; + + if (size > 0) { + cloned = new Array(size); + if (this.charAt) { + for (i = 0; i < size; i++) { + cloned[i] = this.charAt(start + i); + } + } else { + for (i = 0; i < size; i++) { + cloned[i] = this[start + i]; + } + } + } + + return cloned; + }; + } +}()); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.10', 'Array.prototype.slice')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.slice', 'Array.prototype.slice')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.slice', 'Array.prototype.slice')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправить нам pull request.</div> + +<p>{{Compat("javascript.builtins.Array.slice")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.splice()")}}</li> + <li>{{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Function.prototype.bind()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/some/index.html b/files/ru/web/javascript/reference/global_objects/array/some/index.html new file mode 100644 index 0000000000..ee4c18f9f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/some/index.html @@ -0,0 +1,215 @@ +--- +title: Array.prototype.some() +slug: Web/JavaScript/Reference/Global_Objects/Array/some +tags: + - Array + - ECMAScript5 + - JavaScript + - JavaScript 1.6 + - Method + - Prototype + - Reference + - Référence(2) + - Массив + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Array/some +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>some()</strong></code> проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции.</p> + +<div class="blockIndicator note"> +<p><strong>Обратите внимание</strong>: метод возвращает <code>false</code> при любом условии для пустого массива.</p> +</div> + +<p>{{EmbedInteractiveExample("pages/js/array-some.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><var>arr</var>.some(<var>callback(element[, index[, array]])</var>[, <var>thisArg</var>])</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция проверки каждого элемента, принимает три аргумента: + <dl> + <dt><code>element</code></dt> + <dd>Текущий обрабатываемый элемент массива.</dd> + <dt><code>index</code>{{Optional_inline}}</dt> + <dd>Индекс текущего обрабатываемого элемента массива.</dd> + <dt><code>array</code>{{Optional_inline}}</dt> + <dd>Массив, по которому осуществляется проход.</dd> + </dl> + </dd> + <dt><code>thisArg</code>{{Optional_inline}}</dt> + <dd>Значение, используемое в качестве <code>this</code> при выполнении функции <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code><strong>true</strong></code>, если функция проверки возвращает {{Glossary("truthy")}} значение хотя бы для одного элемента массива. Иначе, <code><strong>false</strong></code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>some()</code> вызывает переданную функцию <code>callback</code> один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдет такой, для которого <code>callback</code> вернет <em>истинное</em> значение (значение, становящееся равным <code>true</code> при приведении его к типу {{jsxref("Boolean")}}). Если такой элемент найден, метод <code>some()</code> немедленно вернёт <code>true</code>. В противном случае, если <code>callback</code> вернёт <code>false</code> для всех элементов массива, метод <code>some()</code> вернёт <code>false</code>. Функция <code>callback</code> вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.</p> + +<p>Функция <code>callback</code> вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.</p> + +<p>Если в метод <code>some()</code> был передан параметр <code>thisArg</code>, при вызове <code>callback</code> он будет использоваться в качестве значения <code>this</code>. В противном случае в качестве значения <code>this</code> будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}. В конечном итоге, значение <code>this</code>, наблюдаемое из функции <code>callback</code>, определяется согласно <a href="/ru/docs/Web/JavaScript/Reference/Operators/this">обычным правилам определения <code>this</code>, видимого из функции</a>.</p> + +<p>Метод <code>some()</code> не изменяет массив, для которого он был вызван.</p> + +<p>Диапазон элементов, обрабатываемых методом <code>some()</code>, устанавливается до первого вызова функции <code>callback</code>. Элементы, добавленные в массив после начала выполнения метода <code>some()</code>, не будут посещены функцией <code>callback</code>. Если существующие элементы массива изменятся, значения, переданные в функцию <code>callback</code>, будут значениями на тот момент времени, когда метод <code>some()</code> посетит их; удалённые элементы посещены не будут.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Testing_size_of_all_array_elements" name="Example:_Testing_size_of_all_array_elements">Проверка значений элементов массива</h3> + +<p>Следующий пример проверяет наличие в массиве элемента, который больше 10.</p> + +<pre class="brush: js">function isBiggerThan10(element, index, array) { + return element > 10; +} +[2, 5, 8, 1, 4].some(isBiggerThan10); // false +[12, 5, 8, 1, 4].some(isBiggerThan10); // true +</pre> + +<p>{{ EmbedLiveSample('Проверка_значений_элементов_массива', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}</p> + +<h3 id="Example_Testing_array_elements_using_arrow_functions" name="Example:_Testing_array_elements_using_arrow_functions">Проверка элементов массива с использованием стрелочных функций</h3> + +<p><a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрелочные функции</a> предоставляют более краткий синтаксис для подобных проверок.</p> + +<pre class="brush: js">[2, 5, 8, 1, 4].some(elem => elem > 10); // false +[12, 5, 8, 1, 4].some(elem => elem > 10); // true +</pre> + +<p>{{ EmbedLiveSample('Проверка_элементов_массива_с_использованием_стрелочных_функций', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}</p> + +<h3 id="Проверка_наличия_элемента_в_массиве">Проверка наличия элемента в массиве</h3> + +<p>Чтобы имитировать функцию метода <code>includes()</code>, эта пользовательская функция возвращает true, если элемент существует в массиве:</p> + +<pre class="brush: js">const fruits = ['apple', 'banana', 'mango', 'guava']; + +function checkAvailability(arr, val) { + return arr.some(function(arrVal) { + return val === arrVal; + }); +} + +checkAvailability(fruits, 'kela'); // false +checkAvailability(fruits, 'banana'); // true</pre> + +<p>{{ EmbedLiveSample('Проверка_наличия_элемента_в_массиве', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}</p> + +<h3 id="Проверка_наличия_элемента_в_массиве_с_использованием_стрелочной_функции">Проверка наличия элемента в массиве с использованием стрелочной функции</h3> + +<pre><code>const fruits = ['apple', 'banana', 'mango', 'guava']; + +function checkAvailability(arr, val) { + return arr.some(arrVal => val === arrVal); +} + +checkAvailability(fruits, 'kela'); // false +checkAvailability(fruits, 'banana'); // true</code></pre> + +<p>{{ EmbedLiveSample('Проверка_наличия_элемента_в_массиве_с_использованием_стрелочной_функции', '', '', '', 'Experiment:StaticExamplesOnTop/JavaScript/Array/some') }}</p> + +<h3 id="Приведение_значения_к_логическому_типу">Приведение значения к логическому типу</h3> + +<pre><code>const TRUTHY_VALUES = [true, 'true', 1]; + +function getBoolean(value) { + 'use strict'; + + if (typeof value === 'string') { + value = value.toLowerCase().trim(); + } + + return TRUTHY_VALUES.some(function(t) { + return t === value; + }); +} + +getBoolean(false); // false +getBoolean('false'); // false +getBoolean(1); // true +getBoolean('true'); // true</code></pre> + +<p>{{ EmbedLiveSample('Приведение_значения_к_логическому_типу', '', '', '', 'Web/JavaScript/Reference/Global_Objects/Array/some') }}</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>some()</code> был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать <code>some()</code> в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает, что {{jsxref("Global_Objects/Object", "Object")}} и {{jsxref("Global_Objects/TypeError", "TypeError")}} имеют свои первоначальные значения и что <code>callback.call</code> вычисляется в оригинальное значение {{jsxref("Function.prototype.call()")}}.</p> + +<pre class="brush: js">// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.17 +// Ссылка (en): http://es5.github.io/#x15.4.4.17 +// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.17 +if (!Array.prototype.some) { + Array.prototype.some = function(fun/*, thisArg*/) { + 'use strict'; + + if (this == null) { + throw new TypeError('Array.prototype.some called on null or undefined'); + } + + if (typeof fun !== 'function') { + throw new TypeError(); + } + + var t = Object(this); + var len = t.length >>> 0; + + var thisArg = arguments.length >= 2 ? arguments[1] : void 0; + for (var i = 0; i < len; i++) { + if (i in t && fun.call(thisArg, t[i], i, t)) { + return true; + } + } + + return false; + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.17', 'Array.prototype.some')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.some', 'Array.prototype.some')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.some', 'Array.prototype.some')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Array.some")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.find()")}}</li> + <li>{{jsxref("TypedArray.prototype.some()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/sort/index.html b/files/ru/web/javascript/reference/global_objects/array/sort/index.html new file mode 100644 index 0000000000..06769275e6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/sort/index.html @@ -0,0 +1,234 @@ +--- +title: Array.prototype.sort() +slug: Web/JavaScript/Reference/Global_Objects/Array/sort +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/sort +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>sort()</strong></code> <em>на месте</em> сортирует элементы массива и возвращает отсортированный массив. Сортировка не обязательно <a href="https://ru.wikipedia.org/wiki/Устойчивая_сортировка">устойчива</a> (<a href="https://en.wikipedia.org/wiki/Sorting_algorithm#Stability">англ.</a>). Порядок cортировки по умолчанию соответствует порядку кодовых точек Unicode.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>arr</var>.sort([<var>compareFunction</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>compareFunction</code></dt> + <dd>Необязательный параметр. Указывает функцию, определяющую порядок сортировки. Если опущен, массив сортируется в соответствии со значениями кодовых точек каждого символа <a href="/ru/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode">Unicode</a>, полученных путём преобразования каждого элемента в строку.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Отсортированный массив. Важно, что копия массива не создается - массив сортируется <em><a href="https://en.wikipedia.org/wiki/In-place_algorithm">на месте</a></em>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если функция сравнения <code>compareFunction</code> не предоставляется, элементы сортируются путём преобразования их в строки и сравнения строк в порядке следования кодовых точек Unicode. Например, слово "Вишня" идёт перед словом "бананы". При числовой сортировке, 9 идёт перед 80, но поскольку числа преобразуются в строки, то "80" идёт перед "9" в соответствии с порядком в Unicode.</p> + +<pre class="brush: js notranslate">var fruit = ['арбузы', 'бананы', 'Вишня']; +fruit.sort(); // ['Вишня', 'арбузы', 'бананы'] + +var scores = [1, 2, 10, 21]; +scores.sort(); // [1, 10, 2, 21] + +var things = ['слово', 'Слово', '1 Слово', '2 Слова']; +things.sort(); // ['1 Слово', '2 Слова', 'Слово', 'слово'] +// В Unicode, числа находятся перед буквами в верхнем регистре, +// а те, в свою очередь, перед буквами в нижнем регистре. +</pre> + +<p>Если функция сравнения <code>compareFunction</code> предоставлена, элементы массива сортируются в соответствии с её возвращаемым значением. Если сравниваются два элемента <code>a</code> и <code>b</code>, то:</p> + +<ul> + <li>Если <code>compareFunction(a, b)</code> меньше 0, сортировка поставит <code>a</code> по меньшему индексу, чем <code>b</code>, то есть, <code>a</code> идёт первым.</li> + <li>Если <code>compareFunction(a, b)</code> вернёт 0, сортировка оставит <code>a</code> и <code>b</code> неизменными по отношению друг к другу, но отсортирует их по отношению ко всем другим элементам. Обратите внимание: стандарт ECMAscript не гарантирует данное поведение, и ему следуют не все браузеры (например, версии Mozilla по крайней мере, до 2003 года).</li> + <li>Если <code>compareFunction(a, b)</code> больше 0, сортировка поставит <code>b</code> по меньшему индексу, чем <code>a</code>.</li> + <li>Функция <code>compareFunction(a, b)</code> должна всегда возвращать одинаковое значение для определённой пары элементов <code>a</code> и <code>b</code>. Если будут возвращаться непоследовательные результаты, порядок сортировки будет не определён.</li> +</ul> + +<p>Итак, функция сравнения имеет следующую форму:</p> + +<pre class="brush: js notranslate">function compare(a, b) { + if (a меньше b по некоторому критерию сортировки) { + return -1; + } + if (a больше b по некоторому критерию сортировки) { + return 1; + } + // a должно быть равным b + return 0; +} +</pre> + +<p>Для числового сравнения, вместо строкового, функция сравнения может просто вычитать <code>b</code> из <code>a</code>. Следующая функция будет сортировать массив по возрастанию:</p> + +<pre class="brush: js notranslate">function compareNumbers(a, b) { + return a - b; +} +</pre> + +<p>Метод <code>sort</code> можно удобно использовать с {{jsxref("Operators/function", "функциональными выражениями", "", 1)}} (и <a href="/ru/docs/Web/JavaScript/Guide/Closures">замыканиями</a>):</p> + +<pre class="brush: js notranslate">var numbers = [4, 2, 5, 1, 3]; +numbers.sort(function(a, b) { + return a - b; +}); +console.log(numbers); // [1, 2, 3, 4, 5] +</pre> + +<p>Объекты могут быть отсортированы по значению одного из своих свойств.</p> + +<pre class="brush: js notranslate">var items = [ + { name: 'Edward', value: 21 }, + { name: 'Sharpe', value: 37 }, + { name: 'And', value: 45 }, + { name: 'The', value: -12 }, + { name: 'Magnetic' }, + { name: 'Zeros', value: 37 } +]; +items.sort(function (a, b) { + if (a.name > b.name) { + return 1; + } + if (a.name < b.name) { + return -1; + } + // a должно быть равным b + return 0; +}); +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Creating.2C_displaying.2C_and_sorting_an_array" name="Example:_Creating.2C_displaying.2C_and_sorting_an_array">Пример: создание, отображение и сортировка массива</h3> + +<p>В следующем примере создаётся четыре массива, сначала отображается первоначальный массив, а затем они сортируются. Числовые масивы сортируются сначала без, а потом с функцией сравнения.</p> + +<pre class="brush: js notranslate">var stringArray = ['Голубая', 'Горбатая', 'Белуга']; +var numericStringArray = ['80', '9', '700']; +var numberArray = [40, 1, 5, 200]; +var mixedNumericArray = ['80', '9', '700', 40, 1, 5, 200]; + +function compareNumbers(a, b) { + return a - b; +} + +// снова предполагаем, что функция печати определена +console.log('stringArray:', stringArray.join()); +console.log('Сортировка:', stringArray.sort()); + +console.log('numberArray:', numberArray.join()); +console.log('Сортировка без функции сравнения:', numberArray.sort()); +console.log('Сортировка с функцией compareNumbers:', numberArray.sort(compareNumbers)); + +console.log('numericStringArray:', numericStringArray.join()); +console.log('Сортировка без функции сравнения:', numericStringArray.sort()); +console.log('Сортировка с функцией compareNumbers:', numericStringArray.sort(compareNumbers)); + +console.log('mixedNumericArray:', mixedNumericArray.join()); +console.log('Сортировка без функции сравнения:', mixedNumericArray.sort()); +console.log('Сортировка с функцией compareNumbers:', mixedNumericArray.sort(compareNumbers)); +</pre> + +<p>Этот пример произведёт следующий вывод. Как показывает вывод, когда используется функция сравнения, числа сортируются корректно вне зависимости от того, являются ли они собственно числами или строками с числами.</p> + +<pre class="notranslate">stringArray: Голубая,Горбатая,Белуга +Сортировка: Белуга,Голубая,Горбатая + +numberArray: 40,1,5,200 +Сортировка без функции сравнения: 1,200,40,5 +Сортировка с функцией compareNumbers: 1,5,40,200 + +numericStringArray: 80,9,700 +Сортировка без функции сравнения: 700,80,9 +Сортировка с функцией compareNumbers: 9,80,700 + +mixedNumericArray: 80,9,700,40,1,5,200 +Сортировка без функции сравнения: 1,200,40,5,700,80,9 +Сортировка с функцией compareNumbers: 1,5,9,40,80,200,700 +</pre> + +<h3 id="Example_Sorting_non-ASCII_characters" name="Example:_Sorting_non-ASCII_characters">Пример: сортировка не-ASCII символов</h3> + +<p>Для сортировки строк с не-ASCII символами, то есть строк с символами акцента (e, é, è, a, ä и т.д.), строк, с языками, отличными от английского: используйте {{jsxref("String.localeCompare")}}. Эта функция может сравнивать эти символы, чтобы они становились в правильном порядке.</p> + +<pre class="brush: js notranslate">var items = ['réservé', 'premier', 'cliché', 'communiqué', 'café', 'adieu']; +items.sort(function (a, b) { + return a.localeCompare(b); +}); + +// items равен ['adieu', 'café', 'cliché', 'communiqué', 'premier', 'réservé'] +</pre> + +<h3 id="Example_Sorting_maps" name="Example:_Sorting_maps">Пример: сортировка c помощью map</h3> + +<p>Функция сравнения <code>(compareFunction)</code> может вызываться несколько раз для каждого элемента в массиве. В зависимости от природы функции сравнения, это может привести к высоким расходам ресурсов. Чем более сложна функция сравнения и чем больше элементов требуется отсортировать, тем разумнее использовать <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/map">map</a> для сортировки. Идея состоит в том, чтобы обойти массив один раз, чтобы извлечь фактические значения, используемые для сортировки, во временный массив, отсортировать временный массив, а затем обойти временный массив для получения правильного порядка.</p> + +<pre class="brush: js notranslate">// массив для сортировки +var list = ['Дельта', 'альфа', 'ЧАРЛИ', 'браво']; + +// временный массив содержит объекты с позицией и значением сортировки +var mapped = list.map(function(el, i) { +return { index: i, value: el.toLowerCase() }; +}); + +// сортируем массив, содержащий уменьшенные значения +mapped.sort(function(a, b) { + if (a.value > b.value) { + return 1; } + if (a.value < b.value) { + return -1; } + return 0; +}); + +// контейнер для результа +var result = mapped.map(function(el) { + return list[el.index]; +}); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.11', 'Array.prototype.sort')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.sort', 'Array.prototype.sort')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Array.sort")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.reverse()")}}</li> + <li>{{jsxref("String.prototype.localeCompare()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/splice/index.html b/files/ru/web/javascript/reference/global_objects/array/splice/index.html new file mode 100644 index 0000000000..a714590fab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/splice/index.html @@ -0,0 +1,142 @@ +--- +title: Array.prototype.splice() +slug: Web/JavaScript/Reference/Global_Objects/Array/splice +tags: + - Array + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Array/splice +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>splice()</strong></code> изменяет содержимое массива, удаляя существующие элементы и/или добавляя новые.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>array</var>.splice(<var>start[</var>, <var>deleteCount</var>[, <var>item1</var>[, <var>item2</var>[, ...]]]]) +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>start</code></dt> + <dd>Индекс, по которому начинает изменять массив. Если больше длины массива, реальный индекс будет установлен на длину массива. Если отрицателен, указывает индекс элемента с конца.</dd> + <dt><code>deleteCount </code>{{optional_inline}}</dt> + <dd>Целое число, показывающее количество старых удаляемых из массива элементов. Если <code>deleteCount</code> равен 0, элементы не удаляются. В этом случае вы должны указать как минимум один новый элемент. Если <code>deleteCount</code> больше количества элементов, оставшихся в массиве, начиная с индекса <code>start</code>, то будут удалены все элементы до конца массива.</dd> + <dt><code>item<em>N </em></code>{{optional_inline}}</dt> + <dd>Необязательные параметры. Добавляемые к массиву элементы. Если вы не укажете никакого элемента, <code>splice()</code> просто удалит элементы из массива.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Массив, содержащий удалённые элементы. Если будет удалён только один элемент, вернётся массив из одного элемента. Если никакие элементы не будут удалены, вернётся пустой массив.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если количество указанных вставляемых элементов будет отличным от количества удаляемых элементов, массив изменит длину после вызова.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Удаляет_0_элементов_по_индексу_2_и_вставляет_drum">Удаляет 0 элементов по индексу 2 и вставляет "drum"</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(2, 0, 'drum'); + +// myFish равен ["angel", "clown", "drum", "mandarin", "sturgeon"] +// removed равен [], ничего не удалено</pre> + +<h3 id="Удаляет_1_элемент_по_индексу_3">Удаляет 1 элемент по индексу 3</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon']; +var removed = myFish.splice(3, 1); + +// removed равен ["mandarin"] +// myFish равен ["angel", "clown", "drum", "sturgeon"]</pre> + +<h3 id="Удаляет_1_элемент_по_индексу_2_и_вставляет_trumpet">Удаляет 1 элемент по индексу 2 и вставляет "trumpet"</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'drum', 'sturgeon']; +var removed = myFish.splice(2, 1, 'trumpet'); + +// myFish равен ["angel", "clown", "trumpet", "sturgeon"] +// removed равен ["drum"]</pre> + +<h3 id="Удаляет_2_элемента_начиная_с_индекса_0_и_вставляет_parrot_anemone_и_blue">Удаляет 2 элемента начиная с индекса 0 и вставляет "parrot", "anemone" и "blue"</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'trumpet', 'sturgeon']; +var removed = myFish.splice(0, 2, 'parrot', 'anemone', 'blue'); + +// myFish равен ["parrot", "anemone", "blue", "trumpet", "sturgeon"] +// removed равен ["angel", "clown"]</pre> + +<h3 id="Удаляет_2_элемента_начиная_с_индекса_2">Удаляет 2 элемента начиная с индекса 2</h3> + +<pre class="brush: js notranslate">var myFish = ['parrot', 'anemone', 'blue', 'trumpet', 'sturgeon']; +var removed = myFish.splice(myFish.length - 3, 2); + +// myFish равен ["parrot", "anemone", "sturgeon"] +// removed равен ["blue", "trumpet"]</pre> + +<h3 id="Удаляет_1_элемент_по_индексу_-2">Удаляет 1 элемент по индексу -2</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(-2, 1); + +// myFish равен ["angel", "clown", "sturgeon"] +// removed равен s ["mandarin"]</pre> + +<h3 id="Удаляет_все_элементы_после_индекса_2_включительно">Удаляет все элементы после индекса 2 (включительно)</h3> + +<pre class="brush: js notranslate">var myFish = ['angel', 'clown', 'mandarin', 'sturgeon']; +var removed = myFish.splice(2); + +// myFish равен ["angel", "clown"] +// removed равен ["mandarin", "sturgeon"]</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.12', 'Array.prototype.splice')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.splice', 'Array.prototype.splice')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Array.splice")}}</p> + +<h3 id="Backward_compatibility" name="Backward_compatibility">Обратная совместимость</h3> + +<p>В JavaScript 1.2 метод <code>splice()</code> возвращал удалённый элемент только если был удалён один элемент (параметр <code>deleteCount</code> равен 1); в противном случае метод возвращал массив с удалёнными элементами. Обратите внимание, что последним браузером, использующим JavaScript 1.2, был Netscape Navigator 4, так что вы можете считать, что <code>splice()</code> всегда возвращает массив.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.push()", "push()")}} / {{jsxref("Array.prototype.pop()", "pop()")}} — добавление / удаление элементов с конца массива</li> + <li>{{jsxref("Array.prototype.unshift()", "unshift()")}} / {{jsxref("Array.prototype.shift()", "shift()")}} — добавление / удаление элементов с начала массива</li> + <li>{{jsxref("Array.prototype.concat()", "concat()")}} — возвращает новый массив, состоящий из данного массива, соединённого с другими массивами и/или значениями</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html new file mode 100644 index 0000000000..ed3f4f6088 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tolocalestring/index.html @@ -0,0 +1,134 @@ +--- +title: Array.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +tags: + - Array + - Internationalization + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toLocaleString +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>toLocaleString()</strong></code> возвращает строковое представление элементов массива. Элементы преобразуются в строки с использованием своих собственных методов <code>toLocaleString</code> и эти строки разделяются локале-зависимой строкой (например, запятой «,»).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.toLocaleString();</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Элементы массива преобразуются в строки с использованием своих собственных методов <code>toLocaleString</code>:</p> + +<ul> + <li><code>Object</code>: {{jsxref("Object.prototype.toLocaleString()")}}</li> + <li><code>Number</code>: {{jsxref("Number.prototype.toLocaleString()")}}</li> + <li><code>Date</code>: {{jsxref("Date.prototype.toLocaleString()")}}</li> +</ul> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleString" name="Example:_Using_toLocaleString">Пример: использование <code>toLocaleString</code></h3> + +<pre class="brush: js">var number = 1337; +var date = new Date(); +var myArr = [number, date, 'foo']; + +var str = myArr.toLocaleString(); + +console.log(str); +// напечатает '1337,6.12.2013 19:37:35,foo', +// если работает под германской локалью (de-DE) с временной зоной Европа/Берлин +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.3', 'Array.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.tolocalestring', 'Array.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/tosource/index.html b/files/ru/web/javascript/reference/global_objects/array/tosource/index.html new file mode 100644 index 0000000000..c4d30c1287 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tosource/index.html @@ -0,0 +1,94 @@ +--- +title: Array.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Array/toSource +tags: + - Array + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toSource +--- +<div> + {{JSRef("Global_Objects", "Array")}} {{non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toSource()</strong></code> возвращает строковое представление исходного кода массива.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>arr</var>.toSource()</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toSource</code> возвращает следующие значения:</p> +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Array", "Array")}}, метод <code>toSource</code> возвращает следующую строку, указывающую, что исходный код недоступен: + <pre class="brush: js">function Array() { + [native code] +} +</pre> + </li> + <li>Для экземпляров класса {{jsxref("Global_Objects/Array", "Array")}}, метод <code>toSource</code> возвращает строковое представление исходного кода.</li> +</ul> +<p>Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде. Вы можете вызвать <code>toSource</code> во время отладки для просмотра содержимого массива.</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<h3 id="Example:_Examining_the_source_code_of_an_array" name="Example:_Examining_the_source_code_of_an_array">Пример: рассмотрение исходного кода массива</h3> +<p>Для просмотра исходного кода массива:</p> +<pre class="brush: js">var alpha = new Array('a', 'b', 'c'); + +alpha.toSource(); // вернёт ['a', 'b', 'c'] +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> + <li>{{jsxref("Array.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/tostring/index.html b/files/ru/web/javascript/reference/global_objects/array/tostring/index.html new file mode 100644 index 0000000000..f2877df269 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/tostring/index.html @@ -0,0 +1,122 @@ +--- +title: Array.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Array/toString +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/toString +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>toString()</strong></code> возвращает строковое представление указанного массива и его элементов.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.toString()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объект {{jsxref("Global_Objects/Array", "Array")}} переопределяет метод <code>toString</code> объекта {{jsxref("Global_Objects/Object", "Object")}}. Для объектов класса <code>Array</code>, метод <code>toString</code> соединяет массив и возвращает одну строку, содержащую каждый элемент массива, разделённый запятыми. Например, следующий код создаёт массив и использует метод <code>toString</code> для преобразования массива в строку.</p> + +<pre class="brush: js">var monthNames = ['Янв', 'Фев', 'Мар', 'Апр']; +var myVar = monthNames.toString(); // присваивает 'Янв,Фев,Мар,Апр' переменной myVar. +</pre> + +<p>JavaScript вызывает метод <code>toString</code> автоматически, когда массив представляется текстовым значением или когда массив находится в контексте конкатенации строк.</p> + +<h3 id="ECMAScript_5_semantics" name="ECMAScript_5_semantics">Семантика ECMAScript 5</h3> + +<p>Начиная с JavaScript 1.8.5 (<span class="st">Firefox 4</span>), и в соответствии с сементикой ECMAScript 5-го издания, метод <code>toString()</code> является обобщённым и может использоваться с любым объектом. В случае с массивами, если он имеет метод <code>join()</code>, он будет вызван и результат его работы будет возвращён. В противном случае будет вызван метод {{jsxref("Object.prototype.toString()")}}, и будет возвращён результат его работы.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.2', 'Array.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.tostring', 'Array.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/unshift/index.html b/files/ru/web/javascript/reference/global_objects/array/unshift/index.html new file mode 100644 index 0000000000..1d3e095ead --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/unshift/index.html @@ -0,0 +1,89 @@ +--- +title: Array.prototype.unshift() +slug: Web/JavaScript/Reference/Global_Objects/Array/unshift +tags: + - Array + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Array/unshift +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>unshift()</strong></code> добавляет один или более элементов в начало массива и возвращает новую длину массива.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.unshift(<var>element1</var>[, ...[, <var>elementN</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>element1, ..., element<em>N</em></code></dt> + <dd>Элементы, добавляемые в начало массива.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Новое свойство {{jsxref("Array.length", "length")}} объекта, над которым был вызван метод <code>unshift</code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>unshift</code> вставляет переданные значения в начало массивоподобного объекта.</p> + +<p>Метод <code>unshift</code> не является привязанным к типу; этот метод может быть {{jsxref("Function.call", "вызван", "", 1)}} или {{jsxref("Function.apply", "применён", "", 1)}} к объектам, напоминающим массив. Объекты, не содержащие свойство <code>length</code>, отражающее последний элемент в серии последовательных числовых, начинающихся с нуля, свойств, могут повести себя неправильным образом.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var arr = [1, 2]; + +arr.unshift(0); // результат вызова равен 3, новой длине массива +// arr равен [0, 1, 2] + +arr.unshift(-2, -1); // = 5 +// arr равен [-2, -1, 0, 1, 2] + +arr.unshift([-3]); +// arr равен[[-3], -2, -1, 0, 1, 2] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.4.4.13', 'Array.prototype.unshift')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.unshift', 'Array.prototype.unshift')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Array.unshift")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.push()")}}</li> + <li>{{jsxref("Array.prototype.pop()")}}</li> + <li>{{jsxref("Array.prototype.shift()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/array/values/index.html b/files/ru/web/javascript/reference/global_objects/array/values/index.html new file mode 100644 index 0000000000..bdd8c8c2f6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/values/index.html @@ -0,0 +1,136 @@ +--- +title: Array.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Array/values +tags: + - Array + - ECMAScript6 + - Experimental + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Array/values +--- +<div>{{JSRef("Global_Objects", "Array")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>values()</code></strong> возвращает новый объект итератора массива <strong><code>Array Iterator</code></strong>, содержащий значения для каждого индекса в массиве.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>arr</var>.values()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Iteration_using_for...of_loop" name="Example:_Iteration_using_for...of_loop">Пример: итерация через цикл <code>for...of</code></h3> + +<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; +var eArr = arr.values(); +// ваш браузер должен поддерживать цикл for...of и переменные, +// объявленные через let в циклах for +for (let letter of eArr) { + console.log(letter); +} +</pre> + +<h3 id="Example:_Alternative_iteration" name="Example:_Alternative_iteration">Пример: альтернативный способ итерации</h3> + +<pre class="brush: js">var arr = ['w', 'y', 'k', 'o', 'p']; +var eArr = arr.values(); +console.log(eArr.next().value); // w +console.log(eArr.next().value); // y +console.log(eArr.next().value); // k +console.log(eArr.next().value); // o +console.log(eArr.next().value); // p +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-array.prototype.values', 'Array.prototype.values')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array.prototype.values', 'Array.prototype.values')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>9</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Firefox-specific_notes" name="Firefox-specific_notes">Примечание по Firefox</h3> + +<ul> + <li>Из-за <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=875433">проблемы с совместимостью</a> метод <code>Array.prototype.values()</code> в данный момент убран из SpiderMonkey.</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.prototype.keys()")}}</li> + <li>{{jsxref("Array.prototype.entries()")}}</li> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Array.prototype.every()")}}</li> + <li>{{jsxref("Array.prototype.some()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html new file mode 100644 index 0000000000..3dfc1687ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/index.html @@ -0,0 +1,145 @@ +--- +title: ArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +tags: + - Буфер + - Типизированные массивы +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>ArrayBuffer</code></strong> используется для работы с бинарными данными. Он представляет собой ссылку на поток "сырых" двоичных данных, однако работать с ними напрямую возможности не дает. Вместо этого, вы можете создать <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">типизированный массив</a> или объект {{jsxref("DataView")}}, который можно использовать для чтения и записи данных в <strong><code>ArrayBuffer</code></strong>. </p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new ArrayBuffer(length) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>length</code></dt> + <dd>Длина создаваемого буфера в байтах.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый объект <code>ArrayBuffer</code> определенного размера. Изначально содержимое равно 0.</p> + +<h2 id="Описание">Описание</h2> + +<p>Конструктор <code>ArrayBuffer</code> создает новый <code>ArrayBuffer</code> установленного в байтах размера.</p> + +<h3 id="Создание_буфера">Создание буфера</h3> + +<ul> + <li><a href="/ru/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Appendix.3A_Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer">Из Base64 строки</a></li> + <li><a href="/ru/docs/Web/API/FileReader#readAsArrayBuffer()">Из локального файла</a></li> +</ul> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>ArrayBuffer.length</code></dt> + <dd><font face="Open Sans, Arial, sans-serif">Длина конструктора</font><code><font face="Open Sans, Arial, sans-serif"> </font>ArrayBuffer</code>, которая равна 1.</dd> + <dt>{{jsxref("ArrayBuffer.prototype")}}</dt> + <dd>Позволяет расширить прототип всех <code>ArrayBuffer</code> объектов.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}</dt> + <dd>Возвращает <code>true</code> если <code>arg</code> – одно из представлений <code>ArrayBuffer</code>, например <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">типизированный массив</a> или {{jsxref("DataView")}}. Вернет <code>false</code> в остальных случаях.</dd> + <dt>{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}</dt> + <dd> + <div class="line" id="file-arraybuffer-transfer-LC6">Вернет новый <code>ArrayBuffer</code>, контент которого будет взят из данных <code>oldBuffer</code>, а затем усечен или дополнен нулевыми значениями до<font face="Open Sans, Arial, sans-serif"> </font><code>newByteLength</code>.</div> + </dd> +</dl> + +<h2 id="Пример">Пример</h2> + +<p>В этом примере мы создаем 8-байтный буфер с {{jsxref("Global_Objects/Int32Array", "Int32Array")}} представлением:</p> + +<pre class="brush: js">var buffer = new ArrayBuffer(8); +var view = new Int32Array(buffer);</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Заменен спецификацией ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Первичное определение в ECMA стандарте.</td> + </tr> + </tbody> +</table> + +<h2 id="Таблица_совместимости">Таблица совместимости</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>7.0</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>10</td> + <td>11.6</td> + <td>5.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>4.0</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("2")}}</td> + <td>10</td> + <td>11.6</td> + <td>4.2</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Также">Также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Typed_arrays">JavaScript типизированные массивы</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html new file mode 100644 index 0000000000..22971e53cd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/isview/index.html @@ -0,0 +1,88 @@ +--- +title: ArrayBuffer.isView() +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView +tags: + - ArrayBuffer + - JavaScript + - TypedArrays +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>ArrayBuffer.isView(</strong><var>arg</var><strong>)</strong></code> возвращает <code>true</code>, если <code>arg</code> является одним из таких видов <code>ArrayBuffer</code>, как <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">типизированные массивы</a> или {{jsxref("DataView")}}; в ином случае возвращает <code>false</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/arraybuffer-isview.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>ArrayBuffer.isView(<var>arg</var>)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>arg</code></dt> + <dd>Проверяемое значение.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code>true</code>, если переданный аргумент является одним из видов <code>ArrayBuffer</code>; в противном случае <code>false</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">ArrayBuffer.isView(); // false +ArrayBuffer.isView([]); // false +ArrayBuffer.isView({}); // false +ArrayBuffer.isView(null); // false +ArrayBuffer.isView(undefined); // false +ArrayBuffer.isView(new ArrayBuffer(10)); // false + +ArrayBuffer.isView(new Uint8Array()); // true +ArrayBuffer.isView(new Float32Array()); // true +ArrayBuffer.isView(new Int8Array(10).subarray(0, 3)); // true + +var buffer = new ArrayBuffer(2); +var dv = new DataView(buffer); +ArrayBuffer.isView(dv); // true +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Примечание</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>Устарело</td> + <td>Заменено в ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определене в стандарте ECMA.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-arraybuffer.isview', 'ArrayBuffer.isView')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость">Совместимость</h2> + + + +<p>{{Compat("javascript.builtins.ArrayBuffer.isView")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">Типизированные массивы JavaScript</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html new file mode 100644 index 0000000000..84b8592a5e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/arraybuffer/slice/index.html @@ -0,0 +1,125 @@ +--- +title: ArrayBuffer.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice +translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer/slice +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>slice()</strong></code> вернет новый <code>ArrayBuffer</code>, содержимое которого, будет копией содержимого, содержащегося в исходом ArrayBuffer, начиная с begin (включительно), и до end(не включая).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">arraybuffer.slice(begin[, end])</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>begin</code></dt> + <dd>Указывает с какого индекса начинать slice, начинается с нуля.</dd> +</dl> + +<dl> + <dt><code>end</code></dt> + <dd>Указывает до какого индекса делать slice. Если не указан - slice будет выполнен до конца <code>ArrayBuffer. Разница между begin и end должна быть положительной и быть не более длины ArrayBuffer, в противном случае будет выставлен 0.</code></dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Новый объект <code>ArrayBuffer</code>.</p> + +<h2 id="Description">Description</h2> + +<p>Метод <code>slice</code> копирует, до индекса в параметре end (не включительно) . В случае если <code>begin</code> или <code>end</code> негативен, то индекс считается с конца массива.</p> + +<h2 id="Examples">Examples</h2> + +<h3 id="Копируем_ArrayBuffer">Копируем <code>ArrayBuffer</code></h3> + +<pre class="brush: js">var buf1 = new ArrayBuffer(8); +var buf2 = buf1.slice(0); +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by EMCAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-arraybuffer.prototype.slice', 'ArrayBuffer.prototype.slice')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop("12") }}</td> + <td>11</td> + <td>{{CompatVersionUnknown}}</td> + <td>6</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile("12") }}</td> + <td>11</td> + <td>{{CompatVersionUnknown}}</td> + <td>6.0</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("ArrayBuffer")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html new file mode 100644 index 0000000000..b1475ad6e3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/index.html @@ -0,0 +1,166 @@ +--- +title: AsyncFunction +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction +--- +<div>{{JSRef}}</div> + +<p><code><strong><font face="Open Sans, arial, sans-serif">Конструктор </font>Async</strong></code><strong><code>Function</code> </strong>создает новый объект {{jsxref("Statements/async_function", "async function")}}. В JavaScript любая асинхронная функция фактически является объектом AsyncFunction.</p> + +<p>Обратите внимание, что AsyncFunction не является глобальным объектом. Её можно получить, выполнив следующий код.</p> + +<pre class="brush: js">Object.getPrototypeOf(async function(){}).constructor +</pre> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new AsyncFunction([<var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]],] <var>functionBody</var>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>arg1, arg2, ... arg<em>N</em></code></dt> + <dd>Имена, используемые функцией как формальные имена аргументов. Каждое имя должно быть строкой, которая соответствует действительному идентификатору JavaScript или списку таких строк, разделенных запятой; например, "<code>x</code>", "<code>theValue</code>", или "<code>a,b</code>". </dd> + <dt><code>functionBody</code></dt> + <dd>Строка, содержащая в себе определение функции в исходном коде JavaScript .</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Объекты {{jsxref("Statements/async_function", "async function")}}, созданные с помощью AsyncFunction constructor будут распарсены в момент, когда функция создается. Это менее эффективно, чем объявлять асинхронную функцию с помощью {{jsxref("Statements/async_function", "async function expression")}} и вызывать ее внутри вашего кода, поскольку такие функции анализируются с остальной частью кода.</p> + +<p>Все аргументы, переданные функции, рассматриваются как имена идентификаторов параметров в создаваемой функции в том порядке, в котором они передаются.</p> + +<div class="note"> +<p><strong>Обратите внимание:</strong> объекты {{jsxref("Statements/async_function", "async functions")}} созданные с помощью AsyncFunction constructor , не создают замыкания на создающие их контексты; Они всегда создаются в глобальной области видимости. При их запуске они смогут получить доступ только к своим локальным переменным и к глобальным переменным, но не имеют доступа к тем областям видимости, в которых был вызван AsyncFunction constructor. Это отличается от использования {{jsxref("Global_Objects/eval", "eval")}} с кодом для async function. </p> +</div> + +<p>Вызов AsyncFunction constructor как функции (без использования оператора new ) имеет тот же эффект, что и вызов его как конструктора.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code><strong>AsyncFunction.length</strong></code></dt> + <dd>Свойство length AsyncFunction constructor, значение которого равно 1.</dd> + <dt>{{jsxref("AsyncFunction.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам async function.</dd> +</dl> + +<h2 id="AsyncFunction_prototype_object"><code>AsyncFunction</code> prototype object</h2> + +<h3 id="Свойства_2">Свойства</h3> + +<div>{{page('/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype', 'Properties')}}</div> + +<h2 id="Экземпляры_AsyncFunction"><code>Экземпляры AsyncFunction</code></h2> + +<p>Экземпляры <code>AsyncFunction</code> наследуют методы и свойства от {{jsxref("AsyncFunction.prototype")}}. Как и для всех конструкторов, вы можете изменить объект-прототип конструктора, чтобы внести изменения во все экземпляры <code>AsyncFunction</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Создание_async_function_с_помощью_AsyncFunction_constructor">Создание async function с помощью <code>AsyncFunction</code> constructor</h3> + +<pre class="brush: js">function resolveAfter2Seconds(x) { + return new Promise(resolve => { + setTimeout(() => { + resolve(x); + }, 2000); + }); +} + +var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor + +var a = new AsyncFunction('a', + 'b', + 'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);'); + +a(10, 20).then(v => { + console.log(v); // напечатает 30 через 4 секунды +}); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-async-function-objects', 'AsyncFunction object')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Изначальное определение в ES2017.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th> Edge</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome(55)}}</td> + <td>{{CompatGeckoDesktop("52.0")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatOpera(42)}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Android Webview</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + <th>Chrome for Android</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("52.0")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatOpera(42)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatChrome(55)}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Statements/async_function", "async function function")}}</li> + <li>{{jsxref("Operators/async_function", "async function expression")}}</li> + <li>{{jsxref("Global_Objects/Function", "Function")}}</li> + <li>{{jsxref("Statements/function", "function statement")}}</li> + <li>{{jsxref("Operators/function", "function expression")}}</li> + <li>{{jsxref("Functions_and_function_scope", "Functions and function scope", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html new file mode 100644 index 0000000000..9d0c21f241 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/asyncfunction/prototype/index.html @@ -0,0 +1,55 @@ +--- +title: AsyncFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/AsyncFunction/prototype +--- +<div>{{JSRef}}</div> + +<p>Свойство <code><strong>AsyncFunction.prototype</strong></code> представляет прототип объекта {{jsxref("AsyncFunction")}} .</p> + +<h2 id="Описание">Описание</h2> + +<p>Объект {{jsxref("AsyncFunction")}} наследуется от <code>AsyncFunction.prototype</code>. <code>AsyncFunction.prototype</code> не может быть модифицирован.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code><strong>AsyncFunction.constructor</strong></code></dt> + <dd>Начальное значение {{jsxref("AsyncFunction")}}.</dd> + <dt><code><strong>AsyncFunction.prototype[@@toStringTag]</strong></code></dt> + <dd>Возвращает "AsyncFunction".</dd> +</dl> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-async-function-constructor-prototype', 'AsyncFunction.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ES2017.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<div> + + +<p>{{Compat("javascript.builtins.AsyncFunction.prototype")}}</p> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("AsyncFunction")}}</li> + <li>{{jsxref("Function")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/atomics/add/index.html b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html new file mode 100644 index 0000000000..a426517362 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/add/index.html @@ -0,0 +1,126 @@ +--- +title: Atomics.add() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/add +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/add +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Atomics</strong></code><strong><code>.add()</code></strong> добавляет значение к текущему по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Atomics.add(typedArray, index, value) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>typedArray</code></dt> + <dd>Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.</dd> + <dt><code>index</code></dt> + <dd>Позиция в <code>typedArray</code> для добавления <code>value</code>.</dd> + <dt><code>value</code></dt> + <dd>Число для добавления.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Предыдущее значение в указанной позиции (<code>typedArray[index]</code>).</p> + +<h3 id="Исключения">Исключения</h3> + +<ul> + <li>Выбрасывает {{jsxref("TypeError")}}, если тип <code>typedArray</code> не является одним из допустимых тцелочисленных типов.</li> + <li>Выбрасывает {{jsxref("TypeError")}}, если тип <code>typedArray</code> не общего типа.</li> + <li>Выбрасывает {{jsxref("RangeError")}}, если <code>index</code> вне <code>typedArray</code>.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var sab = new SharedArrayBuffer(1024); +var ta = new Uint8Array(sab); + +Atomics.add(ta, 0, 12); // возвращает 0, предыдущее значение +Atomics.load(ta, 0); // 12</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-atomics.add', 'Atomics.add')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ES2017.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}} [2]</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set <code>javascript.options.shared_memory</code> to <code>true</code>. </p> + +<p>[2] The implementation is under development and needs these runtime flags: <code>--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer</code></p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Atomics")}}</li> + <li>{{jsxref("Atomics.sub()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/atomics/index.html b/files/ru/web/javascript/reference/global_objects/atomics/index.html new file mode 100644 index 0000000000..8ac33321f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/index.html @@ -0,0 +1,168 @@ +--- +title: Atomics +slug: Web/JavaScript/Reference/Global_Objects/Atomics +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics +--- +<div>{{JSRef}}</div> + +<div>Объект <strong><code>Atomics</code></strong> предоставляет атомарные операции как статические методы. Используется вместе с объектом {{jsxref("SharedArrayBuffer")}}. </div> + +<div> </div> + +<p>Атомарные операции установлены в модуле <code>Atomics</code>. В отличие от других глобальных объектов, <code>Atomics</code> не является конструктором. Его нельзя использовать вместе с оператором <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> или вызывать объект <code>Atomics</code> как функцию. Все свойства и методы <code>Atomics</code> статические (как у объекта {{jsxref("Math")}}, к примеру).</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Atomics[Symbol.toStringTag]</code></dt> + <dd>Значение этого свойства - "Atomics".</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<h3 id="Атомарные_операции">Атомарные операции</h3> + +<p>Когда память разделена, несколько потоков могут читать и записывать одни и те же данные в память. Атомарные операции гарантируют, что ожидаемые значения будут записаны и прочитаны, а операции завершены, прежде чем следующая операция начнет свою работу, и они не будут прерваны.</p> + +<dl> + <dt>{{jsxref("Atomics.add()")}}</dt> + <dd>Добавляет представленное значение к текущему по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.</dd> + <dt>{{jsxref("Atomics.and()")}}</dt> + <dd>Вычисляет побитовое AND в указанной позиции массива. Возвращает предыдущее значение в этой позиции.</dd> + <dt>{{jsxref("Atomics.compareExchange()")}}</dt> + <dd>Сохраняет представленное значение в указанную позицию массива, если оно эквивалентно представленному значению. Возвращает предыдущее значение.</dd> + <dt>{{jsxref("Atomics.exchange()")}}</dt> + <dd>Сохраняет представленное значение в указанную позицию массива. Возвращает предыдущее значение.</dd> +</dl> + +<dl> + <dt>{{jsxref("Atomics.load()")}}</dt> + <dd>Возвращает значение из указаной позиции массива.</dd> + <dt>{{jsxref("Atomics.or()")}}</dt> + <dd>Вычисляет побитовое OR в указанной позиции массивая. Возвращает предыдущее значение в этой позиции.</dd> + <dt>{{jsxref("Atomics.store()")}}</dt> + <dd>Сохраняет представленное значение в указанную позицию массива. Возвращает значение.</dd> + <dt>{{jsxref("Atomics.sub()")}}</dt> + <dd>Вычитает представленное значение из текущего по указанной позиции в массиве. Возвращает предыдущее значение в этой позиции.</dd> + <dt>{{jsxref("Atomics.xor()")}}</dt> + <dd>Вычисляет побитовое XOR в указанной позиции массива. Возвращает предыдущее значение в этой позиции.</dd> +</dl> + +<h3 id="Wait_и_notify">Wait и notify</h3> + +<p><code>wait()</code> и <code>wake()</code> методы моделируются на основе futexes ("fast user-space mutex" - быстрый мьютекс пользовательского пространства) Linux и предоставляют собой способы ожидания момента, когда определенное состояние не станет true, и обычно используется как блокирующие конструкции.</p> + +<dl> + <dt>{{jsxref("Atomics.wait()")}}</dt> + <dd> + <p>Проверяет, содержится в указанной позиции массива все еще представленное значение и спит в ожидании или тайм-аут. Возвращает <code>"ok"</code>, <code>"not-equal" </code>или <code>"timed-out"</code>. Если ожидание не разрешено в вызывающем агенете, тогда выбросит ошибку исключения (большинство браузеров не разрешают <code>wait()</code> в главном потоке барузера).</p> + </dd> + <dt>{{jsxref("Atomics.wake()")}}</dt> + <dd>Пробуждает некоторых агентов, которые спят в очереди ожидания в указанной позиции массива. Возвращает количество агентов, которые были разбужены.</dd> + <dt>{{jsxref("Atomics.isLockFree()", "Atomics.isLockFree(size)")}}</dt> + <dd> + <p>Оптимизационный примитив, который может быть использован для определения использовать ли блокирующие операции или атомарные. Возвращает <code>true</code>, если атомарные операции над массивaми с указанным размерами элеменатов будут выполнены с использованием аппаратных атомарных опреаций (как противоположность блокирующим). Только для специалистов.</p> + </dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-atomics-object', 'Atomics')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ES2017.</td> + </tr> + <tr> + <td>{{SpecName('ES8', '#sec-atomics-object', 'Atomics')}}</td> + <td>{{Spec2('ES8')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}} [2]</td> + <td>{{CompatGeckoDesktop("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set <code>javascript.options.shared_memory</code> to <code>true</code>. </p> + +<p>[2] The implementation is under development and needs these runtime flags: <code>--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer</code></p> + +<h2 id="Похожие_заметки">Похожие заметки</h2> + +<p>До SpiderMonkey 48 {{geckoRelease(48)}}, финальные имена API и сематика не были еще реализованы. Изменения между Firefox v. 46 и v. 48:</p> + +<ul> + <li>Методы <code>Atomics.futexWakeOrRequeue()</code> и <code>Atomics.fence()</code> полностью удалены ({{bug(1259544)}} и {{bug(1225028)}}).</li> + <li>Методы {{jsxref("Atomics.wait()")}} и {{jsxref("Atomics.wake()")}} были назвны <code>Atomics.futexWait()</code> и <code>Atomics.futexWake()</code> ({{bug(1260910)}}). Заметка: старые имена были удалены в версии 49 и младше ({{bug(1262062)}}).</li> + <li>Свойства <code>Atomics.OK</code>, <code>Atomics.TIMEDOUT</code>, <code>Atomics.NOTEQUAL</code> были удалены. {{jsxref("Atomics.wait()")}} метод теперь возвращает строки "ok", "timed-out" и "not-equal" ({{bug(1260835)}}).</li> + <li> + <p>Параметр <code>count</code> метода {{jsxref("Atomics.wake()")}} изменился: теперь он по умолчанию равен <code>+Infinity</code>, а не <code>0</code> ({{bug(1253350)}}).</p> + </li> +</ul> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("ArrayBuffer")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li><a href="/en-US/docs/Web/API/Web_Workers_API">Web Workers</a></li> + <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple </a>– a simple library providing synchronization and work distribution abstractions.</li> + <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">Shared Memory – a brief tutorial</a></li> + <li><a href="https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/">A Taste of JavaScript’s New Parallel Primitives – Mozilla Hacks</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html new file mode 100644 index 0000000000..6535d885e5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/atomics/sub/index.html @@ -0,0 +1,128 @@ +--- +title: Atomics.sub() +slug: Web/JavaScript/Reference/Global_Objects/Atomics/sub +translation_of: Web/JavaScript/Reference/Global_Objects/Atomics/sub +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Atomics</strong></code><strong><code>.sub()</code></strong> вычитает представленное значение из текущего по указанной позиции в массиве и возвращает предыдущее значение в этой позиции. Эта атомарная опреация гарантирует, что никакой другой записи не произойдет, пока измененное значение не будет записано обратно.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Atomics.sub(typedArray, index, value) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>typedArray</code></dt> + <dd>Разделенный массив целых чисел. {{jsxref("Int8Array")}}, {{jsxref("Uint8Array")}}, {{jsxref("Int16Array")}}, {{jsxref("Uint16Array")}}, {{jsxref("Int32Array")}} или {{jsxref("Uint32Array")}}.</dd> + <dt><code>index</code></dt> + <dd>Позиция в <code>typedArray</code> для добавления <code>value</code>.</dd> + <dt><code>value</code></dt> + <dd>Число для вычитания.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Предыдущее значение в указанной позиции (<code>typedArray[index]</code>).</p> + +<h3 id="Исключения">Исключения</h3> + +<ul> + <li>Выбрасывает {{jsxref("TypeError")}}, если тип <code>typedArray</code> не является одним из допустимых тцелочисленных типов.</li> + <li>Выбрасывает {{jsxref("TypeError")}}, если тип <code>typedArray</code> не общего типа.</li> + <li>Выбрасывает {{jsxref("RangeError")}}, если <code>index</code> вне <code>typedArray</code>.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var sab = new SharedArrayBuffer(1024); +var ta = new Uint8Array(sab); +ta[0] = 48; + +Atomics.sub(ta, 0, 12); // возвращает 48, предыдущее значение +Atomics.load(ta, 0); // 36 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-atomics.sub', 'Atomics.sub')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ES2017.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}} [2]</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] In Firefox version 46 until version 54, this feature is disabled by a preference setting. In about:config, set <code>javascript.options.shared_memory</code> to <code>true</code>. </p> + +<p>[2] The implementation is under development and needs these runtime flags: <code>--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer</code></p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Atomics")}}</li> + <li>{{jsxref("Atomics.add()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html b/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html new file mode 100644 index 0000000000..67f371ecf6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/asintn/index.html @@ -0,0 +1,79 @@ +--- +title: BigInt.asIntN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +tags: + - BigInt + - JavaScript + - Method + - Reference + - asIntN +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asIntN +--- +<div>{{JSRef}}</div> + +<p><strong><code>BigInt.asIntN</code></strong> — это статический метод, который позволяет перенести BigInt-значение в целое число со знаком между -2<sup>ширина-1</sup> and 2<sup>ширина-1</sup>-1.</p> + +<div>\{{EmbedInteractiveExample("pages/js/bigint-asintn.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">BigInt.asIntN(<var>width</var>, <var>bigint</var>);</pre> + +<h3 id="Аргументы">Аргументы</h3> + +<dl> + <dt><code>width</code></dt> + <dd>Количество битов, доступных для целочисленного размера.</dd> + <dt><code>bigint</code></dt> + <dd>Целое число для зажима, чтобы соответствовать поставляемым битам.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Значение <code>bigint</code><span style="font-size: 13.3333px;"> </span>по модулю 2<code><sup>width</sup></code> как целое число со знаком.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Пребывание_в_64-битных_диапазонах">Пребывание в 64-битных диапазонах</h3> + +<p>Метод <code>BigInt.asIntN()</code> может быть полезен, чтобы оставаться в диапазоне 64-битной арифметики.</p> + +<pre class="brush: js">const max = 2n ** (64n - 1n) - 1n; + +BigInt.asIntN(64, max); +// ↪ 9223372036854775807n + +BigInt.asIntN(64, max + 1n); +// ↪ -9223372036854775807n +// отрицательное число из-за переполнения +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификации</th> + <th scope="col">Статус</th> + </tr> + <tr> + <td><a href="https://tc39.github.io/proposal-bigint/#sec-bigint.asintn">BigInt proposal</a></td> + <td>Stage 3</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + + + +<p>{{Compat("javascript.builtins.BigInt.asIntN")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{JSxRef("BigInt")}}</li> + <li>{{JSxRef("BigInt.asUintN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html b/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html new file mode 100644 index 0000000000..6f3c09ba56 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/asuintn/index.html @@ -0,0 +1,72 @@ +--- +title: BigInt.asUintN() +slug: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt/asUintN +--- +<div>{{JSRef}}</div> + +<p>The <strong><code>BigInt.asUintN</code></strong> static method is used to wrap a BigInt value to an unsigned integer between 0 and 2<sup>width</sup>-1.</p> + +<div>{{EmbedInteractiveExample("pages/js/bigint-asuintn.html", "taller")}}</div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox notranslate">BigInt.asUintN(<var>width</var>, <var>bigint</var>);</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code><var>width</var></code></dt> + <dd>The amount of bits available for the integer size.</dd> + <dt><code><var>bigint</var></code></dt> + <dd>The integer to clamp to fit into the supplied bits.</dd> +</dl> + +<h3 id="Returns">Returns</h3> + +<p>The value of <code><var>bigint</var></code> modulo 2<sup><code><var>width</var></code></sup> as an unsigned integer.</p> + +<h2 id="Examples">Examples</h2> + +<h3 id="Staying_in_64-bit_ranges">Staying in 64-bit ranges</h3> + +<p>The <code>BigInt.asUintN()</code> method can be useful to stay in the range of 64-bit arithmetic.</p> + +<pre class="brush: js notranslate">const max = 2n ** 64n - 1n; + +BigInt.asUintN(64, max); +// ↪ 18446744073709551615n + +BigInt.asUintN(64, max + 1n); +// ↪ 0n +// zero because of overflow</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-bigint.asuintn', 'BigInt.asUintN()')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.BigInt.asUintN")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{JSxRef("BigInt")}}</li> + <li>{{JSxRef("BigInt.asIntN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/bigint/index.html b/files/ru/web/javascript/reference/global_objects/bigint/index.html new file mode 100644 index 0000000000..9760700391 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/bigint/index.html @@ -0,0 +1,294 @@ +--- +title: BigInt +slug: Web/JavaScript/Reference/Global_Objects/BigInt +tags: + - BigInt + - JavaScript + - методы BigInt + - свойства BigInt +translation_of: Web/JavaScript/Reference/Global_Objects/BigInt +--- +<p>{{JSRef}}</p> + +<p><strong><code>BigInt</code></strong> это встроенный объект, который предоставляет способ представлять целые числа больше 2<sup>53</sup> - 1, наибольшего числа, которое JavaScript может надежно представить с {{JSxRef("Number")}} примитивом. Это максимальное значение можно получить, обратившись к {{JSxRef("Number.MAX_SAFE_INTEGER")}}.</p> + +<dl> +</dl> + +<h2 id="Описание">Описание</h2> + +<p><code>BigInt</code> создается путем добавления <code>n</code> в конец целочисленного литерала — <code>10n</code> — или вызовом функции <code>BigInt()</code>.</p> + +<pre class="brush: js">const theBiggestInt = 9007199254740991n; + +const alsoHuge = BigInt(9007199254740991); +// ↪ 9007199254740991n + +const hugeString = BigInt("9007199254740991"); +// ↪ 9007199254740991n + +const hugeHex = BigInt("0x1fffffffffffff"); +// ↪ 9007199254740991n + +const hugeBin = BigInt("0b11111111111111111111111111111111111111111111111111111"); +// ↪ 9007199254740991n +</pre> + +<p>В некотором смысле он похож на {{JSxRef ("Number")}}, но отличается в некоторых ключевых моментах — его нельзя использовать с методами во встроенном объекте {{JSxRef ("Math")}} и нельзя смешивать в операциях с любыми экземплярами Number.</p> + +<div class="blockIndicator warning"> +<p>{{JSxRef("Number")}} и <code>BigInt</code> нельзя смешивать в операциях — они должны быть приведены к тому же типу.</p> + +<p>Будте осторожны приводя значения туда и обратно, так как точность BigInt может быть потеряна при приведении к числу (<code>Number)</code>.</p> +</div> + +<h3 id="Тип">Тип</h3> + +<p>При проверке с использованием оператора <code>typeof</code>, <code>BigInt</code> выдает тип <code>"bigint"</code>:</p> + +<pre class="brush: js">typeof 1n === 'bigint'; // true +typeof BigInt('1') === 'bigint'; // true +</pre> + +<p>При оборачивании в объект, BigInt будет представлен как обычный объект:</p> + +<pre class="brush: js">typeof Object(1n) === 'object'; // true +</pre> + +<h3 id="Операторы">Операторы</h3> + +<p>Следующие операторы могут использоваться с <code>BigInt</code> (или объектом-оберткой <code>BigInt</code>): <code>+</code>, <code>*</code>, <code>-</code>, <code>**</code>, <code>%</code>.</p> + +<p><a href="/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators">Побитовые операции</a> также поддерживаются, кроме <code>>>></code> (сдвиг вправо с заполнением нулями).</p> + +<p>Не поддерживаемый унарный оператор (<code>+</code>) <a href="https://github.com/tc39/proposal-bigint/blob/master/ADVANCED.md#dont-break-asmjs">больше не ломает asm.js</a>.</p> + +<pre class="brush: js">const previousMaxSafe = BigInt(Number.MAX_SAFE_INTEGER); +// ↪ 9007199254740991n + +const maxPlusOne = previousMaxSafe + 1n; +// ↪ 9007199254740992n + +const theFuture = previousMaxSafe + 2n; +// ↪ 9007199254740993n, это работает! + +const multi = previousMaxSafe * 2n; +// ↪ 18014398509481982n + +const subtr = multi – 10n; +// ↪ 18014398509481972n + +const mod = multi % 10n; +// ↪ 2n + +const bigN = 2n ** 54n; +// ↪ 18014398509481984n + +bigN * -1n +// ↪ –18014398509481984n +</pre> + +<p>Оператор <code>/</code> также работает, как и ожидалось, с целыми числами. Однако, поскольку это BigInt, эта операция будет округляться в меньшую сторону, то есть она не будет возвращать какие-либо дробные цифры.</p> + +<div class="blockIndicator warning"> +<p>Результат операции с дробным результатом будет округлен в <strong><u>меньшую</u></strong> сторону при использовании <code>BigInt</code>.</p> +</div> + +<pre class="brush: js">const expected = 4n / 2n; +// ↪ 2n + +const rounded = 5n / 2n; +// ↪ 2n, not 2.5n + +</pre> + +<h3 id="Сравнения">Сравнения</h3> + +<p><code>BigInt</code> равен {{JSxRef ("Number")}} только при нестрогом сравнении.</p> + +<pre class="brush: js">0n === 0 +// ↪ false + +0n == 0 +// ↪ true</pre> + +<p>{{JSxRef("Global_Objects/Number", "Обычные числа")}} и <code>BigInt</code> можно сравнивать как обычно.</p> + +<pre class="brush: js">1n < 2 +// ↪ true + +2n > 1 +// ↪ true + +2 > 2 +// ↪ false + +2n > 2 +// ↪ false + +2n >= 2 +// ↪ true</pre> + +<p>Они могут быть смешаны в массивах и отсортированы:</p> + +<pre class="brush: js">const mixed = [4n, 6, -12n, 10, 4, 0, 0n]; +// ↪ [4n, 6, -12n, 10, 4, 0, 0n] + +mixed.sort(); +// ↪ [-12n, 0, 0n, 10, 4n, 4, 6] +</pre> + +<p>Обратите внимание, что сравнения с <code>обьектом</code>-оберткой <code>BigInt</code> действуют как с другими объектами, указывая на равенство только когда сравинивается идентичный экземпляр объекта:</p> + +<pre class="brush: js">0n === Object(0n); // false +Object(0n) === Object(0n); // false + +const o = Object(0n); +o === o // true +</pre> + +<h3 id="Условные_выражения">Условные выражения</h3> + +<p><code>BigInt</code> ведёт себя как {{JSxRef("Global_Objects/Number", "обычное число")}} в следующих случаях:</p> + +<ul> + <li>Преобразуется в {{JSxRef("Global_Objects/Boolean", "Boolean")}} через функцию {{JSxRef("Global_Objects/Boolean", "Boolean")}}</li> + <li>Используется с логическими операторами {{JSxRef("Operators/Logical_Operators", "Logical Operators")}} <code>||</code>, <code>&&</code> и <code>!</code></li> + <li>В условном тесте, таком как {{JSxRef("Statements/if...else", "if statement")}}.</li> +</ul> + +<pre class="brush: js">if (0n) { + console.log('Привет из if!'); +} else { + console.log('Привет из else!'); +} + +// ↪ "Привет из else!" + +0n || 12n +// ↪ 12n + +0n && 12n +// ↪ 0n + +Boolean(0n) +// ↪ false + +Boolean(12n) +// ↪ true + +!12n +// ↪ false + +!0n +// ↪ true +</pre> + +<h2 id="Конструктор">Конструктор</h2> + +<dl> + <dt><code><a href="https://wiki.developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/BigInt">BigInt()</a></code></dt> + <dd>Создаёт объект {{jsxref("BigInt")}}.</dd> +</dl> + +<h2 id="Статические_методы">Статические методы</h2> + +<dl> + <dt>{{JSxRef("BigInt.asIntN()")}}</dt> + <dd>Оборачивает BigInt в пределах от -2<sup>width-1</sup> до 2<sup>width-1</sup>-1</dd> + <dt>{{JSxRef("BigInt.asUintN()")}}</dt> + <dd>Оборачивает a BigInt в пределах от 0 до 2<sup>width</sup>-1</dd> +</dl> + +<h2 id="Методы_экземпляра">Методы экземпляра</h2> + +<dl> + <dt>{{JSxRef("BigInt.prototype.toLocaleString()")}}</dt> + <dd>Возвращает строку с языко-зависимым представлением числа. Переопредедяет метод {{JSxRef("Object.prototype.toLocaleString()")}}.</dd> + <dt>{{JSxRef("BigInt.prototype.toString()")}}</dt> + <dd>Возвращает строку, представляющую указанный объект по указанному основанию системы счисления. Переопределяет метод {{JSxRef("Object.prototype.toString()")}}.</dd> + <dt>{{JSxRef("BigInt.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение указанного объекта. Переопределяет метод {{JSxRef("Object.prototype.valueOf()")}}.</dd> +</dl> + +<h2 id="Рекомендации_по_использованию">Рекомендации по использованию</h2> + +<h3 id="Приведение">Приведение</h3> + +<p>Поскольку приведение между {{JSxRef("Number")}} и <code>BigInt</code> может привести к потере точности, рекомендуется использовать<code> BigInt</code> только тогда, когда разумно ожидаются значения, превышающие 2<sup>53</sup> и не приводить между двумя типами.</p> + +<h3 id="Криптография">Криптография</h3> + +<p>Операции поддерживаемые <code>BigInt</code> не постоянны во времени. <code>BigInt</code> следовательно <a href="https://www.chosenplaintext.ca/articles/beginners-guide-constant-time-cryptography.html">не пригоден для использования в криптографии</a>.</p> + +<h3 id="Использование_вместе_с_JSON">Использование вместе с JSON</h3> + +<p>Использование {{jsxref("JSON.stringify()")}} с любым значением типа <code>BigInt</code> приведёт к <code>TypeError</code>, поскольку значения <code>BigInt</code> не преобразуется в JSON по умолчанию, однако вы можете реализовать свой собственный метод <code>toJSON</code>, если вам необходимо:</p> + +<pre class="brush: js">BigInt.prototype.toJSON = function() { return this.toString() } +</pre> + +<p>Теперь вместо ошибки, <code>JSON.stringify</code> будет создавать строку:</p> + +<pre class="brush: js">JSON.stringify(BigInt(1)) +// '"1"' +</pre> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Расчет_простых_чисел">Расчет простых чисел</h3> + +<pre class="brush: js">// Возвращает true, если BigInt — простое число +function isPrime(p) { + for (let i = 2n; i * i <= p; i++) { + if (p % i === 0n) return false; + } + return true; +} + +// Берет BigInt в качестве аргумента и возвращает BigInt +function nthPrime(nth) { + let maybePrime = 2n; + let prime = 0n; + + while (nth >= 0n) { + if (isPrime(maybePrime)) { + nth--; + prime = maybePrime; + } + maybePrime++; + } + + return prime; +} + +nthPrime(20n) +// ↪ 73n</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td>{{SpecName("ESDraft", "#sec-bigint-objects", "<code>BigInt</code> objects")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузера">Совместимость браузера</h2> + +<div> + + +<p>{{Compat("javascript.builtins.BigInt")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{JSxRef("Number")}}</li> + <li>{{JSxRef("Number.MAX_SAFE_INTEGER")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/boolean/index.html b/files/ru/web/javascript/reference/global_objects/boolean/index.html new file mode 100644 index 0000000000..00d4637117 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/index.html @@ -0,0 +1,200 @@ +--- +title: Boolean +slug: Web/JavaScript/Reference/Global_Objects/Boolean +tags: + - Boolean + - Constructor + - JavaScript + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +<div>{{JSRef()}}</div> + +<p>Объект <strong><code>Boolean</code></strong> является объектом-обёрткой над примитивом логического типа.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>new Boolean([<var>value</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Необязательный параметр. Начальное значение объекта <code>Boolean</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Значение, переданное первым параметром, при необходимости преобразуется в логическое значение. Если значение опущено или равно <code>0</code>, <code>-0</code>, {{jsxref("Global_Objects/null", "null")}}, <code>false</code>, {{jsxref("Global_Objects/NaN", "NaN")}}, {{jsxref("Global_Objects/undefined", "undefined")}} или пустой строке (<code>""</code>), объект имеет начальное значение, равное <code>false</code>. Все остальные значения, включая любые объекты или строку <code>"false"</code>, создают объект с начальным значением, равным <code>true</code>.</p> + +<p>Не путайте примитивные значения <code>true</code> и <code>false</code> логического типа со значениями <code>true</code> и <code>false</code> объекта <code>Boolean</code>.</p> + +<p>Любой объект, чьё значение не является равным {{jsxref("Global_Objects/undefined", "undefined")}} или {{jsxref("Global_Objects/null", "null")}}, включая сам объект <code>Boolean</code> со значением, равным <code>false</code>, вычисляется в <code>true</code> при передаче его в условное выражение. Например, условие в следующей инструкции {{jsxref("Statements/if...else", "if")}} вычисляется в <code>true</code>:</p> + +<pre class="brush: js">var x = new Boolean(false); +if (x) { + // этот код будет выполнен +} +</pre> + +<p>Это поведение не применяется к примитивам логического типа. Например, условие в следующей инструкции {{jsxref("Statements/if...else", "if")}} вычисляется в <code>false </code>:</p> + +<pre class="brush: js">var x = false; +if (x) { + // этот код не будет выполнен +} +</pre> + +<p>Не используйте объект <code>Boolean</code> для преобразования нелогического значения в логическое значение. Вместо этого используйте <code>Boolean</code> в качестве функции:</p> + +<pre class="brush: js">var x = Boolean(expression); // предпочтительно +var x = new Boolean(expression); // не используйте +</pre> + +<p>Если вы определите любой объект, включая объект <code>Boolean</code> со значением <code>false</code>, в качестве начального значения объекта <code>Boolean</code>, новый объект <code>Boolean</code> будет иметь значение <code>true</code>.</p> + +<pre class="brush: js">var myFalse = new Boolean(false); // начальное значение равно false +var g = new Boolean(myFalse); // начальное значение равно true +var myString = new String('Привет'); // строковый объект +var s = new Boolean(myString); // начальное значение равно true +</pre> + +<p>Не используйте объект <code>Boolean</code> вместо примитива логического типа.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>Boolean.length</code></dt> + <dd>Свойство <code>length</code> логического значения равно 1.</dd> + <dt>{{jsxref("Boolean.prototype")}}</dt> + <dd>Представляет прототип конструктора объекта <code>Boolean</code>.</dd> +</dl> + +<p>{{jsOverrides("Function", "Properties", "prototype")}}</p> + +<h2 id="Methods" name="Methods">Методы</h2> + +<p>Глобальный объект <code>Boolean</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов:</p> + +<div>{{jsOverrides("Function", "Methods")}}</div> + +<h2 id="Boolean_instances" name="Boolean_instances">Экземпляры объекта <code>Boolean</code></h2> + +<p>Все экземпляры объекта <code>Boolean</code> наследуются от {{jsxref("Boolean.prototype")}}. Как и все конструкторы, объект прототипа предоставляет экземплярам свойства и методы.</p> + +<h3 id="Properties_2" name="Properties_2">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Properties')}}</div> + +<h3 id="Methods_2" name="Methods_2">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Boolean/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Creating_Boolean_objects_with_an_initial_value_of_false" name="Example:_Creating_Boolean_objects_with_an_initial_value_of_false">Пример: создание объектов <code>Boolean</code> с начальным значением, равным <code>false</code></h3> + +<pre class="brush: js">var bNoParam = new Boolean(); +var bZero = new Boolean(0); +var bNull = new Boolean(null); +var bEmptyString = new Boolean(''); +var bfalse = new Boolean(false); +</pre> + +<h3 id="Example:_Creating_Boolean_objects_with_an_initial_value_of_true" name="Example:_Creating_Boolean_objects_with_an_initial_value_of_true">Пример: создание объектов <code>Boolean</code> с начальным значением, равным <code>true</code></h3> + +<pre class="brush: js">var btrue = new Boolean(true); +var btrueString = new Boolean('true'); +var bfalseString = new Boolean('false'); +var bSuLin = new Boolean('Су Лин'); +var bArrayProto = new Boolean([]); +var bObjProto = new Boolean({}); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.6', 'Boolean')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-boolean-objects', 'Boolean')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("6.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Boolean.prototype")}}</li> + <li>{{Glossary("Boolean")}}</li> + <li><a href="https://ru.wikipedia.org/wiki/Логический_тип">Логический тип данных (Википедия)</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html b/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html new file mode 100644 index 0000000000..310a9768f3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/prototype/index.html @@ -0,0 +1,112 @@ +--- +title: Boolean.prototype +slug: Web/JavaScript/Reference/Global_Objects/Boolean/prototype +tags: + - Boolean + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean +--- +<div>{{JSRef("Global_Objects", "Boolean")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Boolean.prototype</code></strong> представляет прототип конструктора объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Экземпляры объекта {{jsxref("Global_Objects/Boolean", "Boolean")}} наследуются от <code>Boolean.prototype</code>. Вы можете использовать протитип конструктора объекта для добавления свойств или методов ко всем экземплярам объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>Boolean.prototype.constructor</code></dt> + <dd>Возвращает функцию, создающую экземпляр прототипа. По умолчанию, это функция {{jsxref("Global_Objects/Boolean", "Boolean")}}.</dd> +</dl> +<div>{{jsOverrides("Object", "properties", "constructor")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает строку, содержащую исходный код объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}; вы можете использовать эту строку для создания эквивалентного объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Boolean.prototype.toString()")}}</dt> + <dd>Возвращает строку <code>"true"</code> или <code>"false"</code>, в зависимости от значения объекта. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("Boolean.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.</dd> +</dl> +<div>{{jsOverrides("Object", "methods", "toSource", "toString", "valueOf")}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.6.3.1', 'Boolean.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-boolean.prototype', 'Boolean.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html b/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html new file mode 100644 index 0000000000..164fc98bba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/tosource/index.html @@ -0,0 +1,92 @@ +--- +title: Boolean.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +tags: + - Boolean + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toSource +--- +<div>{{JSRef("Global_Objects", "Boolean")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toSource()</strong></code> возвращает строку, представляющую исходный код объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>booleanObj</var>.toSource() +Boolean.toSource()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toSource</code> возвращает следующие значения:</p> +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Boolean", "Boolean")}} метод <code>toSource</code> возвращает следующую строку, указывающую, что исходный код недоступен: +<pre class="brush: js">function Boolean() { + [native code] +} +</pre> + </li> + <li>Для экземпляров класса {{jsxref("Global_Objects/Boolean", "Boolean")}} метод <code>toSource</code> возвращает строковое представление исходного кода.</li> +</ul> +<p>Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html b/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html new file mode 100644 index 0000000000..abc713e318 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/tostring/index.html @@ -0,0 +1,113 @@ +--- +title: Boolean.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/toString +tags: + - Boolean + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/toString +--- +<div>{{JSRef("Global_Objects", "Boolean")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toString()</strong></code> возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>bool</var>.toString()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Global_Objects/Boolean", "Boolean")}} переопределяет метод <code>toString</code> объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/Boolean", "Boolean")}} метод <code>toString</code> возвращает строковое представление объекта.</p> +<p>JavaScript вызывает метод <code>toString</code> автоматически, когда объект {{jsxref("Global_Objects/Boolean", "Boolean")}} должен быть представлен в виде текста или когда объект {{jsxref("Global_Objects/Boolean", "Boolean")}} находится в контексте строковой конкатенации.</p> +<p>Для объектов и значений {{jsxref("Global_Objects/Boolean", "Boolean")}} встроенный метод <code>toString</code> возвращает строки «<code>true</code>» или «<code>false</code>» в зависимости от значения логического объекта.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example.3A_Using_toString" name="Example.3A_Using_toString">Пример: использование <code>toString</code></h3> +<p>В следующем коде вызов <code>flag.toString()</code> вернёт строку <code>"true"</code>:</p> +<pre class="brush: js">var flag = new Boolean(true); +var myVar = flag.toString(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.6.4.2', 'Boolean.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-boolean.prototype.tostring', 'Boolean.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html b/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html new file mode 100644 index 0000000000..6b4ed81473 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/boolean/valueof/index.html @@ -0,0 +1,111 @@ +--- +title: Boolean.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +tags: + - Boolean + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Boolean/valueOf +--- +<div>{{JSRef("Global_Objects", "Boolean")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>valueOf()</strong></code> возвращает примитивное значение объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>bool</var>.valueOf()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>valueOf</code> объекта {{jsxref("Global_Objects/Boolean", "Boolean")}} возвращает примитивное значение объекта или литерала логического типа.</p> +<p>Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_valueOf" name="Example:_Using_valueOf">Пример: использование <code>valueOf</code></h3> +<pre class="brush: js">x = new Boolean(); +myVar = x.valueOf(); // присваивает false переменной myVar +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.6.4.3', 'Boolean.prototype.valueOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-boolean.prototype.valueof', 'Boolean.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/dataview/index.html b/files/ru/web/javascript/reference/global_objects/dataview/index.html new file mode 100644 index 0000000000..adf480e976 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/dataview/index.html @@ -0,0 +1,122 @@ +--- +title: DataView +slug: Web/JavaScript/Reference/Global_Objects/DataView +translation_of: Web/JavaScript/Reference/Global_Objects/DataView +--- +<div>{{JSRef}}</div> + +<p>Вид <strong><code>DataView</code></strong> предоставляет низко-уровневый интерфейс для чтения и записи многочисленных числовых типов в бинарном {{jsxref("ArrayBuffer")}}, независимо от порядка байтов платформы.</p> + +<div>{{EmbedInteractiveExample("pages/js/dataview-constructor.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new DataView(buffer [, byteOffset [, byteLength]])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>buffer</code></dt> + <dd>Существующий {{jsxref("ArrayBuffer")}} или {{jsxref("SharedArrayBuffer")}} {{experimental_inline}} для использования как хранилище для нового объекта <code>DataView</code>.</dd> + <dt><code>byteOffset</code> {{optional_inline}}</dt> + <dd>Смещение в байтах к первому байту в заданном буфере. Если не определён, то вид буфера будет начинаться с первого байта.</dd> + <dt><code>byteLength</code> {{optional_inline}}</dt> + <dd>Количество элементов в массиве байтов. Если не определён, то длина вида будет соответствовать длине буфера.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый объект <code>DataView</code> представляющий определённый буфер данных.</p> + +<h3 id="Исключения">Исключения</h3> + +<dl> + <dt><code>{{jsxref("RangeError")}}</code></dt> + <dd>Выкидывается если <code>byteOffset</code> и <code>byteLength</code> заходит за пределы буфера.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<h3 id="Порядок_байтов">Порядок байтов</h3> + +<p>Многобайтовые числовые форматы представлены в памяти по разному в зависимости от архитектуры машины, см {{Glossary("Endianness")}} для объяснения. Аксессоры DataView предоставляют явный контроль над обращением к данным вне зависимости от порядка байтов архитектуры платформы.</p> + +<pre class="brush: js">var littleEndian = (function() { + var buffer = new ArrayBuffer(2); + new DataView(buffer).setInt16(0, 256, true /* littleEndian */); + // Int16Array uses the platform's endianness. + return new Int16Array(buffer)[0] === 256; +})(); +console.log(littleEndian); // true or false +</pre> + +<h2 id="Свойства">Свойства</h2> + +<p>All <code>DataView</code> instances inherit from {{jsxref("DataView.prototype")}} and allows the addition of properties to all DataView objects.</p> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Properties')}}</p> + +<h2 id="Методы">Методы</h2> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/DataView/prototype','Methods')}}</p> + +<h2 id="Пример">Пример</h2> + +<pre class="brush: js">var buffer = new ArrayBuffer(16); +var dv = new DataView(buffer, 0); + +dv.setInt16(1, 42); +dv.getInt16(1); //42 +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 6</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-dataview-constructor', 'DataView')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-dataview-constructor', 'DataView')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Таблица_совместимости">Таблица совместимости</h2> + + + +<p>{{Compat("javascript.builtins.DataView")}}</p> + +<h2 id="Замечания_совместимости">Замечания совместимости</h2> + +<p>Starting with Firefox 40, <code>DataView</code> requires to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling <code>DataView()</code> as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = DataView(buffer, 0); +// TypeError: calling a builtin DataView constructor without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new DataView(buffer, 0);</pre> + +<h2 id="Также">Также</h2> + +<ul> + <li><a class="link-https" href="https://github.com/jDataView/jDataView">jDataView</a>: JavaScript library that polyfills and extends the <code>DataView</code> API to all browsers and Node.js.</li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("SharedArrayBuffer")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html b/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html new file mode 100644 index 0000000000..22e53f475d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/dataview/setint16/index.html @@ -0,0 +1,80 @@ +--- +title: DataView.prototype.setInt16() +slug: Web/JavaScript/Reference/Global_Objects/DataView/setInt16 +tags: + - DataView + - JavaScript + - TypedArrays + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/DataView/setInt16 +--- +<div>{{JSRef}}</div> + +<div>Метод <strong><code>setInt16()</code></strong> содержит 16-битное целое (short) значение в байте, смещённым по указанному числу от начала {{jsxref("DataView")}}.</div> + +<div>{{EmbedInteractiveExample("pages/js/dataview-setint16.html")}}</div> + +<p class="hidden">Исходный код для этого интерактивного примера содержится на репозитории в GitHub. Если вы хотите внести вклад в проект интерактивных примеров, пожалуйста, зайдите на <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/interactive-examples</a> и отправьте нам pull request.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>dataview</var>.setInt16(byteOffset, value [, littleEndian])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>byteOffset</dt> + <dd>Смещение в байтах от старта до этого значения, где будут храниться данные.</dd> + <dt>value</dt> + <dd>Устанавливаемое значение.</dd> + <dt>littleEndian</dt> + <dd>{{optional_inline}} Указывает, сохранять ли 16-bit целое в {{Glossary("Endianness", "little- or big-endian")}} формате. Если значение false или undefined, записывает значение big-endian.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h3 id="Возвращаемые_ошибки">Возвращаемые ошибки</h3> + +<dl> + <dt>{{jsxref("RangeError")}}</dt> + <dd>Выдана, если <code>byteOffset</code> установлен так, что целое бы хранилось после конца.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_setInt16">Использование метода <code>setInt16</code></h3> + +<pre class="brush:js">var buffer = new ArrayBuffer(8); +var dataview = new DataView(buffer); +dataview.setInt16(1, 3); +dataview.getInt16(1); // 3 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-dataview.prototype.setint16', 'DataView.prototype.setInt16')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице сгенерирована из структурированных данных. Если вы хотите внести вклад в данные, пожалуйста, зайдите на <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам pull request.</div> + +<p>{{Compat("javascript.builtins.DataView.setInt16")}}</p> + +<h2 id="Смотрите_также">Смотрите также </h2> + +<ul> + <li>{{jsxref("DataView")}}</li> + <li>{{jsxref("ArrayBuffer")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getdate/index.html b/files/ru/web/javascript/reference/global_objects/date/getdate/index.html new file mode 100644 index 0000000000..06c43d7b14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getdate/index.html @@ -0,0 +1,81 @@ +--- +title: Date.prototype.getDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/getDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDate +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getDate()</code></strong> возвращает день месяца указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getDate()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getDate()</code>, является целым числом от 1 до 31.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getDate" name="Example:_Using_getDate">Пример: использование метода <code>getDate()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 25 переменной <code>day</code> из значения объекта {{jsxref("Global_Objects/Date", "Date")}} <code>date</code>.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let day = date.getDate(); + +console.log(day); // 25 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.14', 'Date.prototype.getDate')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getdate', 'Date.prototype.getDate')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.getDate")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCDate()")}}</li> + <li>{{jsxref("Date.prototype.getUTCDay()")}}</li> + <li>{{jsxref("Date.prototype.setDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getday/index.html b/files/ru/web/javascript/reference/global_objects/date/getday/index.html new file mode 100644 index 0000000000..628d921793 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getday/index.html @@ -0,0 +1,94 @@ +--- +title: Date.prototype.getDay() +slug: Web/JavaScript/Reference/Global_Objects/Date/getDay +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getDay +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getDay()</code></strong> возвращает порядковый номер дня недели указанной даты по местному времени, где 0 соответствует воскресенью.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getDay()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getDay()</code>, является целым числом, соответствующим дню недели: 0 соответствует воскресенью, 1 — понедельнику, 2 — вторнику и так далее.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getDay" name="Example:_Using_getDay">Пример: использование метода <code>getDay()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 1 переменной <code>weekday</code> из значения объекта {{jsxref("Global_Objects/Date", "Date")}} <code>date</code>. 25 декабря 1995 года было понедельником.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let weekday = date.getDay(); + +console.log(weekday); // 1 +</pre> + +<div class="blockIndicator note"> +<p><strong>Примечание:</strong> При необходимости полное название дня (например, "<code>Понедельник</code>") можно получить, используя {{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} с параметром <code>options</code> parameter. С помощью этого метода упрощается интернационализация:</p> + +<pre class="brush: js notranslate">let options = { weekday: 'long'}; + +console.log(new Intl.DateTimeFormat('en-US', options).format(date)); +// Monday + +console.log(new Intl.DateTimeFormat('ru-RU', options).format(date)); +// понедельник +</pre> +</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.16', 'Date.prototype.getDay')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getday', 'Date.prototype.getDay')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.getDay")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCDate()")}}</li> + <li>{{jsxref("Date.prototype.getUTCDay()")}}</li> + <li>{{jsxref("Date.prototype.setDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html new file mode 100644 index 0000000000..594410c0a3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getfullyear/index.html @@ -0,0 +1,81 @@ +--- +title: Date.prototype.getFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getFullYear +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getFullYear()</code></strong> возвращает год указанной даты по местному времени.</p> + +<p>Используйте этот метод вместо метода {{jsxref("Date.prototype.getYear()", "getYear()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getFullYear()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getFullYear()</code> является абсолютным числом. Для дат между 1000 и 9999 годом метод <code>getFullYear()</code> возвращает четырёхзначный номер, например, 1995. Используйте эту функцию, чтобы быть уверенным, что год будет правильным после 2000 года.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getFullYear" name="Example:_Using_getFullYear">Пример: использование метода <code>getFullYear()</code></h3> + +<p>В следующем примере переменной <code>year</code> присваивается четырёхзначное значение текущего года.</p> + +<pre class="brush: js notranslate">let today = new Date(); // Mon Nov 23 2020 15:23:46 GMT+0300 (Москва, стандартное время) +let year = today.getFullYear(); // 2020 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.10', 'Date.prototype.getFullYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getfullyear', 'Date.prototype.getFullYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.getFullYear")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setFullYear()")}}</li> + <li>{{jsxref("Date.prototype.getYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/gethours/index.html b/files/ru/web/javascript/reference/global_objects/date/gethours/index.html new file mode 100644 index 0000000000..b5ecd79d22 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gethours/index.html @@ -0,0 +1,103 @@ +--- +title: Date.prototype.getHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/getHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getHours +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getHours()</code></strong> возвращает часы указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getHours()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getHours()</code>, является целым числом от 0 до 23.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getHours" name="Example:_Using_getHours">Пример: использование метода <code>getHours()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 23 переменной <code>hours</code> из значения объекта {{jsxref("Global_Objects/Date", "Date")}} <code>date</code>.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let hours = date.getHours(); + +console.log(hours); // 23 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.18', 'Date.prototype.getHours')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-date.prototype.gethours', 'Date.prototype.getHours')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.getHours")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCHours()")}}</li> + <li>{{jsxref("Date.prototype.setHours()")}}</li> +</ul> + +<div id="simple-translate"> +<div> +<div class="simple-translate-button isShow" style="height: 22px; width: 22px; top: 1012px; left: 179px;"></div> + +<div class="simple-translate-panel " style="width: 300px; height: 200px; top: 0px; left: 0px; font-size: 13px; background-color: rgb(255, 255, 255);"> +<div class="simple-translate-result-wrapper" style="overflow: hidden;"> +<div class="simple-translate-move"></div> + +<div class="simple-translate-result-contents"> +<p class="simple-translate-result" style="color: rgb(0, 0, 0);"></p> + +<p class="simple-translate-candidate" style="color: rgb(115, 115, 115);"></p> +</div> +</div> +</div> +</div> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html new file mode 100644 index 0000000000..71257f95c1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getmilliseconds/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMilliseconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getMilliseconds()</code></strong> возвращает миллисекунды указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getMilliseconds()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getMilliseconds()</code>, является целым числом от 0 до 999.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getMilliseconds" name="Example:_Using_getMilliseconds">Пример: использование метода <code>getMilliseconds()</code></h3> + +<p>В следующем примере переменной <code>milliseconds</code> присваиваются миллисекунды текущего времени:</p> + +<pre class="brush: js notranslate">let today = new Date(); +let milliseconds = today.getMilliseconds(); + +console.log(milliseconds); // 709 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.24', 'Date.prototype.getMilliseconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getmilliseconds', 'Date.prototype.getMilliseconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</li> + <li>{{jsxref("Date.prototype.setMilliseconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html new file mode 100644 index 0000000000..88db42fe6f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getminutes/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMinutes +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getMinutes()</code></strong> возвращает минуты указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getMinutes()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getMinutes()</code>, является целым числом от 0 до 59.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getMinutes" name="Example:_Using_getMinutes">Пример: использование метода <code>getMinutes()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 15 переменной <code>minutes</code> из значения объекта {{jsxref("Global_Objects/Date", "Date")}} <code>date</code>.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let minutes = date.getMinutes(); + +console.log(minutes); // 15 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.20', 'Date.prototype.getMinutes')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getminutes', 'Date.prototype.getMinutes')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCMinutes()")}}</li> + <li>{{jsxref("Date.prototype.setMinutes()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html new file mode 100644 index 0000000000..5d8c1af47e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getmonth/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getMonth +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getMonth()</code></strong> возвращает месяц указанной даты по местному времени, нумерация месяцев начинается с нуля для первого месяца в году.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getMonth()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getMonth()</code>, является целым числом от 0 до 11. 0 соответствует январю, 1 — февралю и так далее.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getMonth" name="Example:_Using_getMonth">Пример: использование метода <code>getMonth()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 11 переменной <code>month</code> из значения переменной <code>date</code> объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let month = date.getMonth(); + +console.log(month); // 11 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.12', 'Date.prototype.getMonth')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getmonth', 'Date.prototype.getMonth')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCMonth()")}}</li> + <li>{{jsxref("Date.prototype.setMonth()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html new file mode 100644 index 0000000000..4332bf9b01 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getseconds/index.html @@ -0,0 +1,126 @@ +--- +title: Date.prototype.getSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getSeconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getSeconds()</code></strong> возвращает секунды указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getSeconds()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getSeconds()</code>, является целым числом от 0 до 59.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getSeconds" name="Example:_Using_getSeconds">Пример: использование метода <code>getSeconds()</code></h3> + +<p>Вторая инструкция в примере ниже присваивает значение 30 переменной <code>seconds</code> из значения переменной <code>date</code> объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<pre class="brush: js notranslate">let date = new Date('December 25, 1995 23:15:30'); +let seconds = date.getSeconds(); + +console.log(seconds); // 30 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.22', 'Date.prototype.getSeconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getseconds', 'Date.prototype.getSeconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCSeconds()")}}</li> + <li>{{jsxref("Date.prototype.setSeconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/gettime/index.html b/files/ru/web/javascript/reference/global_objects/date/gettime/index.html new file mode 100644 index 0000000000..407d054fa7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gettime/index.html @@ -0,0 +1,100 @@ +--- +title: Date.prototype.getTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTime +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTime +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<div></div> + +<p>Метод <strong><code>getTime()</code></strong> возвращает числовое значение, соответствующее указанной дате по всемирному координированному времени.</p> + +<p>Вы можете использовать этот метод для того, чтобы присвоить дату и время другому объекту {{jsxref("Global_Objects/Date", "Date")}}. Этот метод функционально эквивалентен методу {{jsxref("Date.prototype.valueof", "valueOf()")}}.</p> + +<p>{{EmbedInteractiveExample("pages/js/date-gettime.html")}}</p> + +<p class="hidden">Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на перенос.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>dateObj</var>.getTime()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Значение, возвращённое методом <code>getTime()</code>, является количеством миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_getTime_for_copying_dates" name="Example:_Using_getTime_for_copying_dates">Пример: использование метода <code>getTime()</code> для копирования дат</h3> + +<p>Конструирует новый объект даты с идентичным значением времени.</p> + +<pre class="brush: js notranslate">let birthday = new Date(2020, 12, 20); +let copy = new Date(); +copy.setTime(birthday.getTime()); + +console.log(copy.setTime(birthday.getTime())); // 1611090000000 +</pre> + +<h3 id="Example_Measuring_execution_time" name="Example:_Measuring_execution_time">Пример: замер времени выполнения</h3> + +<p>Вычитанием двух последовательных вызовов метода <code>getTime()</code> на заново сконструированных объектах {{jsxref("Global_Objects/Date", "Date")}} можно замерить промежуток времени, произошедший между двумя этими вызовами. Это можно использовать для вычисления времени выполнения неких операций.</p> + +<pre class="brush: js notranslate">let end, start; + +start = new Date(); +for (let i = 0; i < 1000; i++) { + Math.sqrt(i); +} +end = new Date(); + +console.log('Операция заняла ' + (end.getTime() - start.getTime()) + ' мсек'); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.9', 'Date.prototype.getTime')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.gettime', 'Date.prototype.getTime')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Date.getTime")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.setTime()")}}</li> + <li>{{jsxref("Date.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html b/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html new file mode 100644 index 0000000000..9c564f3139 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/gettimezoneoffset/index.html @@ -0,0 +1,106 @@ +--- +title: Date.prototype.getTimezoneOffset() +slug: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getTimezoneOffset()</code></strong> возвращает смещение часового пояса относительно часового пояса UTC в минутах для текущей локали.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getTimezoneOffset()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Возвращает смещение часового пояса, являющееся разностью в минутах между временем UTC и местным временем. Обратите внимание, что это значит, что смещение будет положительным для местного часового пояса, находящегося западнее часового пояса UTC и отрицательным — восточнее. Например, если ваш часовой пояс равен UTC+10 (австралийское восточное поясное время), будет возвращено значение -600. Наличие летнего и зимнего времени не даёт этому смещению быть постоянным, даже в пределах одного часового пояса.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getTimezoneOffset" name="Example:_Using_getTimezoneOffset">Пример: использование метода <code>getTimezoneOffset()</code></h3> +<pre class="brush: js">var x = new Date(); +var currentTimeZoneOffsetInHours = x.getTimezoneOffset() / 60; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.26', 'Date.prototype.getTimezoneOffset')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.gettimezoneoffset', 'Date.prototype.getTimezoneOffset')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html new file mode 100644 index 0000000000..ed5a5368f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcdate/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.getUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDate +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCDate()</code></strong> возвращает день месяца указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><var>dateObj</var>.getUTCDate()</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCDate()</code>, является целым числом от 1 до 31.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCDate" name="Example:_Using_getUTCDate">Пример: использование метода <code>getUTCDate()</code></h3> +<p>В следующем примере переменной <code>day</code> присваивается значение дня из текущей даты.</p> +<pre class="brush: js">var today = new Date(); +var day = today.getUTCDate(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.15', 'Date.prototype.getUTCDate')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcdate', 'Date.prototype.getUTCDate')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getDate()")}}</li> + <li>{{jsxref("Date.prototype.getUTCDay()")}}</li> + <li>{{jsxref("Date.prototype.setUTCDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html new file mode 100644 index 0000000000..4a82c3b080 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcday/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.getUTCDay() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCDay +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCDay()</code></strong> возвращает день недели указанной даты по всемирному координированному времени, где 0 соответствует воскресенью.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCDay()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getDay()</code>, является целым числом, соответствующим дню недели: 0 соответствует воскресенью, 1 — понедельнику, 2 — вторнику и так далее.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCDay" name="Example:_Using_getUTCDay">Пример: использование метода <code>getUTCDay()</code></h3> +<p>В следующем примере переменной <code>weekday</code> присваивается номер дня недели из текущей даты.</p> +<pre class="brush: js">var today = new Date(); +var weekday = today.getUTCDay(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.17', 'Date.prototype.getUTCDay')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcday', 'Date.prototype.getUTCDay')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCDate()")}}</li> + <li>{{jsxref("Date.prototype.getDay()")}}</li> + <li>{{jsxref("Date.prototype.setUTCDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html new file mode 100644 index 0000000000..628a0301b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcfullyear/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCFullYear +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCFullYear()</code></strong> возвращает год указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCFullYear()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCFullYear()</code> является абсолютным числом, совместимым с проблемой 2000 года, например, 1995.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCFullYear" name="Example:_Using_getUTCFullYear">Пример: использование метода <code>getUTCFullYear()</code></h3> +<p>В следующем примере переменной <code>year</code> присваивается четырёхзначное значение текущего года.</p> +<pre class="brush: js">var today = new Date(); +var year = today.getUTCFullYear(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.11', 'Date.prototype.getUTCFullYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcfullyear', 'Date.prototype.getUTCFullYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setFullYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html b/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html new file mode 100644 index 0000000000..3fcc362cea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutchours/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCHours +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCHours()</code></strong> возвращает часы указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCHours()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCHours()</code>, является целым числом от 0 до 23.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCHours" name="Example:_Using_getUTCHours">Пример: использование метода <code>getUTCHours()</code></h3> +<p>В следующем примере переменной <code>hours</code> присваивается количество часов из текущего времени.</p> +<pre class="brush: js">var today = new Date(); +var hours = today.getUTCHours(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.19', 'Date.prototype.getUTCHours')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutchours', 'Date.prototype.getUTCHours')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getHours()")}}</li> + <li>{{jsxref("Date.prototype.setUTCHours()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html new file mode 100644 index 0000000000..da9cf2090b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcmilliseconds/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMilliseconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCMilliseconds()</code></strong> возвращает миллисекунды указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCMilliseconds()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCMilliseconds()</code>, является целым числом от 0 до 999.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCMilliseconds" name="Example:_Using_getUTCMilliseconds">Пример: использование метода <code>getUTCMilliseconds()</code></h3> +<p>В следующем примере переменной <code>milliseconds</code> присваивается количество миллисекунд из текущего времени.</p> +<pre class="brush: js">var today = new Date(); +var milliseconds = today.getUTCMilliseconds(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.25', 'Date.prototype.getUTCMilliseconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcmilliseconds', 'Date.prototype.getUTCMilliseconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getMilliseconds()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html new file mode 100644 index 0000000000..8f15413ccd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcminutes/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMinutes +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCMinutes()</code></strong> возвращает минуты указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCMinutes()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCMinutes()</code>, является целым числом от 0 до 59.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCMinutes" name="Example:_Using_getUTCMinutes">Пример: использование метода <code>getUTCMinutes()</code></h3> +<p>В следующем примере переменной <code>minutes</code> присваивается количество минут из текущего времени.</p> +<pre class="brush: js">var today = new Date(); +var minutes = today.getUTCMinutes(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.21', 'Date.prototype.getUTCMinutes')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcminutes', 'Date.prototype.getUTCMinutes')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getMinutes()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMinutes()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html new file mode 100644 index 0000000000..f7e3f3ccb9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcmonth/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCMonth +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCMonth()</code></strong> возвращает месяц указанной даты по всемирному координированному времени, нумерация месяцев начинается с нуля для первого месяца в году.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCMonth()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCMonth()</code>, является целым числом от 0 до 11. 0 соответствует январю, 1 — февралю и так далее.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCMonth" name="Example:_Using_getUTCMonth">Пример: использование метода <code>getUTCMonth()</code></h3> +<p>В следующем примере переменной <code>month</code> присваивается значение месяца из текущей даты.</p> +<pre class="brush: js">var today = new Date(); +var month = today.getUTCMonth(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.13', 'Date.prototype.getUTCMonth')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcmonth', 'Date.prototype.getUTCMonth')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getMonth()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMonth()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html new file mode 100644 index 0000000000..68916e4551 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getutcseconds/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.getUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getUTCSeconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>getUTCSeconds()</code></strong> возвращает секунды указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.getUTCSeconds()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Значение, возвращённое методом <code>getUTCSeconds()</code>, является целым числом от 0 до 59.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_getUTCSeconds" name="Example:_Using_getUTCSeconds">Пример: использование метода <code>getUTCSeconds()</code></h3> +<p>В следующем примере переменной <code>seconds</code> присваивается количество секунд из текущего времени.</p> +<pre class="brush: js">var today = new Date(); +var seconds = today.getUTCSeconds(); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.23', 'Date.prototype.getUTCSeconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getutcseconds', 'Date.prototype.getUTCSeconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getSeconds()")}}</li> + <li>{{jsxref("Date.prototype.setUTCSeconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/getyear/index.html b/files/ru/web/javascript/reference/global_objects/date/getyear/index.html new file mode 100644 index 0000000000..e7c7b42782 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/getyear/index.html @@ -0,0 +1,123 @@ +--- +title: Date.prototype.getYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/getYear +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/getYear +--- +<div>{{JSRef("Global_Objects", "Date")}} {{deprecated_header("")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>getYear()</code></strong> возвращает год указанной даты по местному времени. Поскольку метод <code>getYear()</code> не возвращает полный год («проблема 2000 года»), он больше не используется и был заменён методом {{jsxref("Date.prototype.getFullYear", "getFullYear()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.getYear()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Метод <code>getYear()</code> возвращает год минус 1900; таким образом:</p> + +<ul> + <li>Для годов, больших, либо равных 2000, значение, возвращённое методом <code>getYear()</code>, будет равно 100 или выше. Например, если год равен 2026, метод <code>getYear()</code> вернёт 126.</li> + <li>Для годов между 1900 и 1999 включительно, значение, возвращённое методом <code>getYear()</code>, лежит между 0 и 99. Например, если год равен 1976, метод <code>getYear()</code> вернёт 76.</li> + <li>Для годов, меньших 1900, значение, возвращённое методом <code>getYear()</code>, будем меньше 0. Например, если год равен 1800, метод <code>getYear()</code> вернёт -100.</li> +</ul> + +<p>Чтобы учесть года до и после 2000, вы должны вместо метода <code>getYear()</code> использовать метод {{jsxref("Date.prototype.getFullYear", "getFullYear()")}}, который возвращает полный год.</p> + +<h2 id="Backward_compatibility" name="Backward_compatibility">Обратная совместимость</h2> + +<h3 id="JavaScript_1.2_and_earlier" name="JavaScript_1.2_and_earlier">Поведение в JavaScript 1.2 и ранее</h3> + +<p>Метод <code>getYear()</code> возвращал 2-х или 4-х значный год:</p> + +<ul> + <li>Для годов между 1900 и 1999 включительно, значение, возвращаемое методом <code>getYear()</code>, было годом минус 1900. Например, если год равнялся 1976, возвращаемое значение равнялось 76.</li> + <li>Для годов, меньших 1900, либо больших 1999, значение, возвращаемое методом <code>getYear()</code> было четырёхзначным годом. Например, если год равнялся 1856, возвращаемое значение равнялось 1856. Если год равнялся 2026, возвращаемое значение равнялось 2026.</li> +</ul> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Years_between_1900_and_1999" name="Example:_Years_between_1900_and_1999">Пример: года между 1900 и 1999</h3> + +<p>Вторая инструкция присваивает значение 95 переменной <code>year</code>.</p> + +<pre class="brush: js">var Xmas = new Date('December 25, 1995 23:15:00'); +var year = Xmas.getYear(); // вернёт 95 +</pre> + +<h3 id="Example:_Years_above_1999" name="Example:_Years_above_1999">Пример: года после 1999</h3> + +<p>Вторая инструкция присваивает значение 100 переменной <code>year</code>.</p> + +<pre class="brush: js">var Xmas = new Date('December 25, 2000 23:15:00'); +var year = Xmas.getYear(); // вернёт 100 +</pre> + +<h3 id="Example:_Years_below_1900" name="Example:_Years_below_1900">Пример: года до 1900</h3> + +<p>Вторая инструкция присваивает значение -100 переменной <code>year</code>.</p> + +<pre class="brush: js">var Xmas = new Date('December 25, 1800 23:15:00'); +var year = Xmas.getYear(); // вернёт -100 +</pre> + +<h3 id="Example:_Setting_and_getting_a_year_between_1900_and_1999" name="Example:_Setting_and_getting_a_year_between_1900_and_1999">Пример: установка и получение года между 1900 и 1999</h3> + +<p>Вторая инструкция присваивает значение 95 переменной <code>year</code>, которое представляет 1995 год.</p> + +<pre class="brush: js">var Xmas.setYear(95); +var year = Xmas.getYear(); // вернёт 95 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-B.2.4', 'Date.prototype.getYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определён в (информативном) приложении по совместимости.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.getyear', 'Date.prototype.getYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> </div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.getYear")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getFullYear()")}}</li> + <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/index.html b/files/ru/web/javascript/reference/global_objects/date/index.html new file mode 100644 index 0000000000..5979d471f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/index.html @@ -0,0 +1,232 @@ +--- +title: Дата +slug: Web/JavaScript/Reference/Global_Objects/Date +tags: + - Date + - JavaScript + - Reference + - время +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Создаёт экземпляр объекта <strong><code>Date</code></strong>, представляющего собой момент времени. Обьект Дата содержит число милисекунд прошедших с 1 января 1970 г. UTC</p> + + + +<p>{{EmbedInteractiveExample("pages/js/date-constructor.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>new Date(); +new Date(<var>value</var>); +new Date(<var>dateString</var>); +new Date(<var>year</var>, <var>month</var>[, <var>day</var>[, <var>hour</var>[, <var>minute</var>[, <var>second</var>[, <var>millisecond</var>]]]]]); +</code></pre> + +<div class="note"> +<p><strong>Обратите внимание:</strong> объекты <code>Date</code> могут быть созданы только путём вызова функции <code>Date</code> в качестве конструктора: обычный вызов функции (то есть, без использования оператора {{jsxref("Operators/new", "new")}}) вернёт строку вместо объекта <code>Date</code>; в отличие от других объектных типов JavaScript, объекты <code>Date</code> не имеют литерального синтаксиса.</p> +</div> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<div class="note"> +<p><strong>Обратите внимание:</strong> если функция <code>Date</code> вызывается в качестве конструктора с более, чем одним аргументом, значения, большие логического диапазона (например, 13 в качестве номера месяца или 70 для значения минут) «переметнутся» на соседние значения. Например, вызов <code>new Date(2013, 13, 1)</code> эквивалентен вызову <code>new Date(2014, 1, 1)</code>, оба создадут дату <code>2014-02-01</code> (нумерация месяцев начинается с нуля). Тоже самое действует и для других значений: вызов <code>new Date(2013, 2, 1, 0, 70)</code> эквивалентен вызову <code>new Date(2013, 2, 1, 1, 10)</code> — оба вызова создадут дату <code>2013-03-01T01:10:00</code>.</p> +</div> + +<div class="note"> +<p><strong>Обратите внимание:</strong> если функция Date вызывается в качестве конструктора с более чем одним аргументом, то указанные аргументы интерпретируются как локальное время. Если аргументы указывают время в UTC, используйте <code>new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}})</code> с теми же аргументами.</p> +</div> + +<dl> + <dt><code>value</code></dt> + <dd>Целое значение, представляющее количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC (эпохи Unix).</dd> + <dt><code>dateString</code></dt> + <dd>Строковое значение, представляющее дату. Строка должна быть в одном из форматов, распознаваемых методом {{jsxref("Date.parse()")}} (совместимые с IETF RFC 2822 временные метки [<a href="http://tools.ietf.org/html/rfc2822#page-14">на английском</a>, <a href="http://rfc2.ru/5322.rfc/print#p3.3">на русском</a>], а также версия ISO8601 [<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15">на английском</a>, <a href="http://es5.javascript.ru/x15.9.html#x15.9.1.15">на русском</a>]).</dd> + <dt><code>year</code></dt> + <dd>Целое значение, представляющее год. Значения с 0 по 99 отображаются на года с 1900 по 1999. Смотрите {{anch("Example:_Two_digit_years_map_to_1900_-_1999", "пример ниже")}}.</dd> + <dt><code>month</code></dt> + <dd>Целое значение, представляющее месяц, начинается с 0 для января и кончается 11 для декабря.</dd> + <dt><code>day</code></dt> + <dd>Необязательный параметр. Целое значение, представляющее день месяца.</dd> + <dt><code>hour</code></dt> + <dd>Необязательный параметр. Целое значение, представляющее часы дня.</dd> + <dt><code>minute</code></dt> + <dd>Необязательный параметр. Целое значение, представляющее минуты времени.</dd> + <dt><code>second</code></dt> + <dd>Необязательный параметр. Целое значение, представляющее секунды времени.</dd> + <dt><code>millisecond</code></dt> + <dd>Необязательный параметр. Целое значение, представляющее миллисекунды времени.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<ul> + <li>Если никаких аргументов передано не было, конструктор создаёт объект <code>Date</code> для текущих даты и времени, согласно системным настройкам.</li> + <li>Если передано как минимум два аргумента, отсутствующие аргументы устанавливаются в стартовые значения - день месяца 1 и время полуночи.</li> + <li>Дата в JavaScript измеряется в миллисекундах, прошедших с полуночи 1 января 1970 года по UTC. День содержит 86 400 000 миллисекунд. Диапазон дат объекта <code>Date</code> варьируется от -100 000 000 до 100 000 000 дней относительно 1 января 1970 года по UTC.</li> + <li>Объект <code>Date</code> обеспечивает универсальное поведение на всех платформах. Значение времени может передаваться между системами для представления одинакового момента во времени и, если оно используется для создания локального объекта даты, будет отражать местный эквивалент времени.</li> + <li>Объект <code>Date</code> поддерживает несколько методов для работы с UTC (всемирным координированным временем), наряду с методами работы с местным временем. UTC, также известное как среднее время по Гринвичу (GMT), ссылается на время, установленное Всемирным стандартом времени. Местное время — это время на компьютере, на котором выполняется JavaScript.</li> + <li>Вызов объекта <code>Date</code> в качестве функции (то есть, без использования оператора {{jsxref("Operators/new", "new")}}) вернёт строку, представляющую текущие дату и время.</li> +</ul> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Date.prototype")}}</dt> + <dd>Позволяет добавлять свойства к объекту <code>Date</code>.</dd> + <dt><code>Date.length</code></dt> + <dd>Значение свойства <code>Date.length</code> равно 7. Это количество аргументов, обрабатываемых конструктором.</dd> +</dl> + +<div>{{jsOverrides("Function", "properties", "prototype")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Date.now()")}}</dt> + <dd>Возвращает числовое значение, соответствующее текущему времени — количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</dd> + <dt>{{jsxref("Date.parse()")}}</dt> + <dd>Разбирает строковое представление даты и возвращает количество миллисекунд с 1 января 1970 года 00:00:00 по местному времени.</dd> + <dt>{{jsxref("Date.UTC()")}}</dt> + <dd>Принимает те же самые параметры, что и самый длиный вариант конструктора (то есть, от 2 до 7) и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</dd> +</dl> + +<div>{{jsOverrides("Function", "Methods", "now", "parse", "UTC")}}</div> + +<h2 id="Date_instances" name="Date_instances">Экземпляры объекта <code>Date</code></h2> + +<p>Все экземпляры объекта <code>Date</code> наследуются от {{jsxref("Date.prototype")}}. Объект прототипа конструктора <code>Date</code> может быть изменён, чтобы затронуть все экземпляры объекта <code>Date</code>.</p> + +<h3 id="Методы">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Date/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Several_ways_to_assign_dates" name="Example:_Several_ways_to_assign_dates">Пример: несколько способов создания объекта <code>Date</code></h3> + +<p>Следующие примеры показывают несколько способов создания дат в JavaScript:</p> + +<div class="note"> +<p><strong>Обратите внимание:</strong> разбор строкового представления дат с помощью конструктора <code>Date</code> (так же как эквивалентный ему метод <code>Date.parse</code>) может иметь различия и несоответствия в браузерах.</p> +</div> + +<pre class="brush: js notranslate">var today = new Date(); +var birthday = new Date('December 17, 1995 03:24:00'); +var birthday = new Date('1995-12-17T03:24:00'); +var birthday = new Date(1995, 11, 17); +var birthday = new Date(1995, 11, 17, 3, 24, 0); +</pre> + +<h3 id="Example_Two_digit_years_map_to_1900_-_1999" name="Example:_Two_digit_years_map_to_1900_-_1999">Пример: двухциферный год отображается на 1900 - 1999 года</h3> + +<p>Для того, чтобы создать и получить даты между 0 и 99 годом, нужно использовать методы {{jsxref("Date.prototype.setFullYear()")}} и {{jsxref("Date.prototype.getFullYear()")}}.</p> + +<pre class="brush: js notranslate">var date = new Date(98, 1); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT) + +// Устаревший метод, 98 отображается на 1998 год +date.setYear(98); // Sun Feb 01 1998 00:00:00 GMT+0000 (GMT) + +date.setFullYear(98); // Sat Feb 01 0098 00:00:00 GMT+0000 (BST) +</pre> + +<h3 id="Example_Calculating_elapsed_time" name="Example:_Calculating_elapsed_time">Пример: вычисление затраченного времени</h3> + +<p>Следующие примеры показывают, как определить разницу во времени между двумя датами в JavaScript:</p> + +<pre class="brush: js notranslate">// Используя объекты Date +var start = Date.now(); + +// Событие, для которого замеряется время, происходит тут: +doSomethingForALongTime(); +var end = Date.now(); +var elapsed = end - start; // затраченное время в миллисекундах +</pre> + +<pre class="brush: js notranslate">// Используя встроенные методы +var start = new Date(); + +// Событие, для которого замеряется время, происходит тут: +doSomethingForALongTime(); +var end = new Date(); +var elapsed = end.getTime() - start.getTime(); // затраченное время в миллисекундах +</pre> + +<pre class="brush: js notranslate">// Проверяет функцию и возвращает её возвращаемое значение +function printElapsedTime(fTest) { + var nStartTime = Date.now(), + vReturn = fTest(), + nEndTime = Date.now(); + + console.log('Затраченное время: ' + String(nEndTime - nStartTime) + ' миллисекунд'); + return vReturn; +} + +yourFunctionReturn = printElapsedTime(yourFunction); + +</pre> + +<div class="blockIndicator note"> +<p><strong>Обратите внимание:</strong> в браузерах, поддерживающих высокое временное разрешение с помощью {{domxref("window.performance", "API замера производительности", "", 1)}}, метод {{domxref("Performance.now()")}} может обеспечить более надёжные и точные замеры затраченного времени, нежели метод {{jsxref("Date.now()")}}.</p> +</div> + +<h3 id="Получить_количество_секунд_с_начало_эпохи_Unix">Получить количество секунд с начало эпохи Unix</h3> + +<pre class="notranslate"><code>var seconds = Math.floor(Date.now() / 1000);</code></pre> + +<p>В этом случае важно возвращать только целое число (так что простое деление не подойдет), а также возвращать только фактически прошедшие секунды (поэтому этот код использует {{jsxref ("Math.floor ()")}} а не {{jsxref ("Math.round ()")}}).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td> + <table> + <tbody> + <tr> + <td>{{Spec2('ES1')}}</td> + </tr> + </tbody> + </table> + </td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9', 'Date')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date-objects', 'Date')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-date-objects', 'Date')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Date", 3)}}</p> diff --git a/files/ru/web/javascript/reference/global_objects/date/now/index.html b/files/ru/web/javascript/reference/global_objects/date/now/index.html new file mode 100644 index 0000000000..f8e9276067 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/now/index.html @@ -0,0 +1,78 @@ +--- +title: Date.now() +slug: Web/JavaScript/Reference/Global_Objects/Date/now +tags: + - Date + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/now +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Date.now()</code></strong> возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>var timeInMs = Date.now();</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>now()</code> возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC по текущий момент времени в качестве {{jsxref("Global_Objects/Number", "числа", "", 1)}}.</p> + +<p>Поскольку метод <code>now()</code> является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как <code>Date.now()</code>.</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был стандартизирован в ECMA-262 5-го издания. Отсутствие этого метода в движках, которые не были обновлены для его поддержки, можно обойти следующей прокладкой:</p> + +<pre class="brush: js">if (!Date.now) { + Date.now = function now() { + return new Date().getTime(); + }; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.4.4', 'Date.now')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.now', 'Date.now')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Date.now")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{domxref("Performance.now()")}} — предоставляет временные метки с разрешением в доли миллисекунд для использования при измерении производительности веб-страницы</li> + <li>{{domxref("console.time()")}} / {{domxref("console.timeEnd()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/parse/index.html b/files/ru/web/javascript/reference/global_objects/date/parse/index.html new file mode 100644 index 0000000000..ce223350ef --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/parse/index.html @@ -0,0 +1,217 @@ +--- +title: Date.parse() +slug: Web/JavaScript/Reference/Global_Objects/Date/parse +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/parse +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Date.parse()</code></strong> разбирает строковое представление даты и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<p>Прямой вызов:</p> + +<pre class="syntaxbox"><code>Date.parse(<var>dateString</var>)</code></pre> + +<p>Неявный вызов:</p> + +<pre class="syntaxbox"><code>new Date(<var>dateString</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>dateString</code></dt> + <dd>Строковое представление даты из RFC2822 (<a href="http://tools.ietf.org/html/rfc2822#page-14">на английском</a>, <a href="http://rfc2.ru/5322.rfc/print#p3.3">на русском</a>) или ISO 8601. Могут использоваться и другие форматы, но результаты в таком случае будут непредсказуемые.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>parse()</code> принимает строку с датой (например, <code>"Dec 25, 1995"</code>) и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC. Этот метод полезен для установки значения даты из строкового значения, например, в сочетании с методом {{jsxref("Date.prototype.setTime()", "setTime()")}} о объектом {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<p>По данному строковому представлению времени метод <code>parse()</code> возвращает значение времени. Он принимает синтаксис даты из RFC2822 / IETF (RFC2822 раздел 3.3 — <a href="http://tools.ietf.org/html/rfc2822#page-14">на английском</a>, <a href="http://rfc2.ru/5322.rfc/print#p3.3">на русском</a>), например, <code>"Mon, 25 Dec 1995 13:30:00 GMT"</code>. Он понимает аббревиатуры континентальных часовых поясов США, но для общего пользования используйте смещение часовых поясов, например, <code>"Mon, 25 Dec 1995 13:30:00 +0430"</code> (4 часа 30 минут к востоку от Гринвичского меридиана). Если часовой пояс не определён и строка является форматом ISO, распозначаемым ES5, предполагается, что часовым поясом является UTC. GMT и UTC считаются эквивалентными. Местный часовой пояс используется для интерпретации аргумента в формате RFC2822 из раздела 3.3 (<a href="http://tools.ietf.org/html/rfc2822#page-14">на английском</a>, <a href="http://rfc2.ru/5322.rfc/print#p3.3">на русском</a>) (или в любом другом формате, не распознаваемым как ISO 8601 в ES5), если он не содержит информации о часовом поясе.</p> + +<h3 id="ECMAScript_5_ISO-8601_format_support" name="ECMAScript_5_ISO-8601_format_support">Поддержка формата ISO-8601 в ECMAScript 5</h3> + +<p>Строка с датой и временем может быть в формате <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>. Например, могут быть переданы и разобраны строки <code>"2011-10-10"</code> (только дата) или <code>"2011-10-10T14:48:00"</code> (дата и время). Для интерпретации аргументов в формате <a href="http://www.w3.org/TR/NOTE-datetime">ISO 8601</a>, не содержащих информацию о часовом поясе, используется часовой пояс UTC.</p> + +<p>Хотя во время разбора строки с датой и используется спецификатор часового пояса, возвращаемое значение всегда содержит количество миллисекунд между 1 января 1970 года 00:00:00 по UTC и моментом времени, представленым аргументом.</p> + +<p>Поскольку метод <code>parse()</code> является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как <code>Date.parse()</code>.</p> + +<h3 id="Differences_in_assumed_time-zone" name="Differences_in_assumed_time-zone">Различия в предполагаемом часовом поясе</h3> + +<p>Для строки даты <code>"March 7, 2014"</code>, метод <code>parse()</code> будет предполагать местный часовой пояс, но если строка дана в формате ISO, например <code>"2014-03-07"</code>, он будет предполагать, что часовой пояс равен UTC. Поэтому объекты {{jsxref("Global_Objects/Date", "Date")}}, созданные из этих строк, если в системе местный часовой пояс не равен UTC, будут представлять разные моменты времени. Это значит, что две строки с датами, которые выглядят одинаковыми, могут дать два разных значения в зависимости от формата преобразуемой строки.</p> + +<h3 id="Fall-back_to_implementation-specific_date_formats" name="Fall-back_to_implementation-specific_date_formats">Откат к зависимым от реализации форматам даты</h3> + +<p>В спецификации ECMAScript говорится: если строка не соответствует стандартному формату, функция может откатиться к любой зависимой от реализации эвристике, либо к зависимому от реализции алгоритму разбора. Нераспознанные строки, либо даты, содержащие недопустимые значения элементов в строках формата ISO, должны при вызове <code>Date.parse()</code> возвращать {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<p>Однако, недопустимые значения в строке даты, не распознанные как формат ISO, как определено ES5 могут возвращать, а могут и не возвращать {{jsxref("Global_Objects/NaN", "NaN")}} в качестве результата, в зависимости от браузера и предоставленных значений, например:</p> + +<pre class="brush: js">// Строка не в формате ISO с недопустимыми значениями даты +new Date('23/25/2014'); +</pre> + +<p>будет рассматриваться как местная дата 25 ноября 2015 года в Firefox 30 и как недопустимая дата в Safari 7. Однако, если строка распознана как строка в формате ISO и она содержит недопустимые значения, метод вернёт {{jsxref("Global_Objects/NaN", "NaN")}} во всех браузерах, совместимых с ES5:</p> + +<pre class="brush: js">// Строка в формате ISO с недопустимыми значениями даты +new Date('2014-25-23').toISOString(); +// вернёт "RangeError: invalid date" во всех браузерах, совместимых с ES5 +</pre> + +<p>Реализация эвристики SpiderMonkey может быть найдена в файле <a href="http://mxr.mozilla.org/mozilla-central/source/js/src/jsdate.cpp?rev=64553c483cd1#889"><code>jsdate.cpp</code></a>. Строка <code>"10 06 2014"</code> является примером не подходящей под формат ISO и поэтому её разбор откатывается на пользовательскую подпрограмму. Так же смотрите эту <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1023155#c6">грубую схему</a> работы разбора строки.</p> + +<pre class="brush: js">new Date('10 06 2014'); +</pre> + +<p>будет рассматриваться как местная дата 6 октября 2014 года, а не 10 июня 2014 года. Другие примеры:</p> + +<pre class="brush: js">new Date('foo-bar 2014').toString(); +// вернёт: "Invalid Date" + +Date.parse('foo-bar 2014'); +// вернёт: NaN +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_parse" name="Example:_Using_parse">Пример: использование метода <code>Date.parse()</code></h3> + +<p>Если переменная <code>IPOdate</code> содержит существующий объект {{jsxref("Global_Objects/Date", "Date")}}, она может быть установлена в 9 августа 1995 года (по местному времени) следующим способом:</p> + +<pre class="brush: js">IPOdate.setTime(Date.parse('Aug 9, 1995'));</pre> + +<p>Ещё несколько примеров разбора нестандартных строк с датами:</p> + +<pre class="brush: js">Date.parse('Aug 9, 1995');</pre> + +<p>Вернёт <code>807937200000</code> в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.</p> + +<pre class="brush: js">Date.parse('Wed, 09 Aug 1995 00:00:00 GMT');</pre> + +<p>Вернёт <code>807926400000</code> вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).</p> + +<pre class="brush: js">Date.parse('Wed, 09 Aug 1995 00:00:00');</pre> + +<p>Вернёт <code>807937200000</code> в часовом поясе GMT-0300, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то часовой пояс по умолчанию равен местному часовому поясу.</p> + +<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT');</pre> + +<p>Вернёт <code>0</code> вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).</p> + +<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00');</pre> + +<p>Вернёт <code>14400000</code> в часовом поясе GMT-0400, и другие значения в других часовых поясах, так как поскольку строка не определяет часовой пояс и не находится в формате ISO, то используется местный часовой пояс.</p> + +<pre class="brush: js">Date.parse('Thu, 01 Jan 1970 00:00:00 GMT-0400');</pre> + +<p>Вернёт <code>14400000</code> вне зависимости от местного часового пояса, поскольку предоставлен спецификатор GMT (всемирное координированное время).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.4.2', 'Date.parse')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Добавлен формат ISO 8601.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.parse', 'Date.parse')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Формат ISO 8601</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckodesktop("2.0")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + <tr> + <td>Формат ISO 8601</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.UTC()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/prototype/index.html b/files/ru/web/javascript/reference/global_objects/date/prototype/index.html new file mode 100644 index 0000000000..6a3bb3c62b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/prototype/index.html @@ -0,0 +1,228 @@ +--- +title: Date.prototype +slug: Web/JavaScript/Reference/Global_Objects/Date/prototype +tags: + - Date + - JavaScript + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Date +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>Date.prototype</code></strong> представляет прототип конструктора {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<div>{{js_property_attributes(0, 0, 1)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Все экземпляры {{jsxref("Global_Objects/Date", "Date")}} наследуются от <code>Date.prototype</code>. Объект прототипа конструктора {{jsxref("Global_Objects/Date", "Date")}} может быть изменён для затрагивания всех экземпляров объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<p>Для совместимости с вычислениями тысячелетия (другими словами, для учёта 2000 года), вы всегда должны указывать полный год; например, использовать число 1998, а не 98. Чтобы помочь вам определить полный год, JavaScript включает методы {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}, {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}}, {{jsxref("Date.prototype.getUTCFullYear()", "getUTCFullYear()")}} и {{jsxref("Date.prototype.setUTCFullYear()", "setUTCFullYear()")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>Date.prototype.constructor</code></dt> + <dd>Возвращает функцию, создавшую этот экземпляр объекта. По умолчанию ей является объект {{jsxref("Global_Objects/Date", "Date")}}.</dd> +</dl> + +<div>{{jsOverrides("Object", "properties", "constructor")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> + +<h3 id="Getter" name="Getter">Получения значения</h3> + +<dl> + <dt>{{jsxref("Date.prototype.getDate()")}}</dt> + <dd>Возвращает день месяца (1-31) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getDay()")}}</dt> + <dd>Возвращает день недели (0-6) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getFullYear()")}}</dt> + <dd>Возвращает год (4 цифры для 4-х значного года) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getHours()")}}</dt> + <dd>Возвращает часы (0-23) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getMilliseconds()")}}</dt> + <dd>Возвращает миллисекунды (0-999) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getMinutes()")}}</dt> + <dd>Возвращает минуты (0-59) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getMonth()")}}</dt> + <dd>Возвращает месяц (0-11) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getSeconds()")}}</dt> + <dd>Возвращает секунды (0-59) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.getTime()")}}</dt> + <dd>Возвращает числовое значение указанной даты как количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC (отрицательное значение для даты до этого момента).</dd> + <dt>{{jsxref("Date.prototype.getTimezoneOffset()")}}</dt> + <dd>Возвращает смещение часового пояса в минутах для текущей локали.</dd> + <dt>{{jsxref("Date.prototype.getUTCDate()")}}</dt> + <dd>Возвращает день месяца (1-31) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCDay()")}}</dt> + <dd>Возвращает день недели (0-6) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCFullYear()")}}</dt> + <dd>Возвращает год (4 цифры для 4-х значного года) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCHours()")}}</dt> + <dd>Возвращает часы (0-23) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</dt> + <dd>Возвращает миллисекунды (0-999) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCMinutes()")}}</dt> + <dd>Возвращает минуты (0-59) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCMonth()")}}</dt> + <dd>Возвращает месяц (0-11) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getUTCSeconds()")}}</dt> + <dd>Возвращает секунды (0-59) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.getYear()")}} {{deprecated_inline}}</dt> + <dd>Возвращает год (обычно 2-3 цифры) указанной даты по всемирному координированному времени. Вместо него используйте метод {{jsxref("Date.prototype.getFullYear()", "getFullYear()")}}.</dd> +</dl> + +<h3 id="Setter" name="Setter">Установки значения</h3> + +<dl> + <dt>{{jsxref("Date.prototype.setDate()")}}</dt> + <dd>Устанавливает день месяца указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setFullYear()")}}</dt> + <dd>Устанавливает полный год (4 цифры для 4-х значного года) указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setHours()")}}</dt> + <dd>Устанавливает часы указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setMilliseconds()")}}</dt> + <dd>Устанавливает миллисекунды указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setMinutes()")}}</dt> + <dd>Устанавливает минуты указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setMonth()")}}</dt> + <dd>Устанавливает месяц указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setSeconds()")}}</dt> + <dd>Устанавливает секунды указанной даты по местному времени.</dd> + <dt>{{jsxref("Date.prototype.setTime()")}}</dt> + <dd>Устанавливает объект {{jsxref("Global_Objects/Date", "Date")}} во время, представляемое количеством миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC (отрицательное значение устанавливает даты до этого момента).</dd> + <dt>{{jsxref("Date.prototype.setUTCDate()")}}</dt> + <dd>Устанавливает день месяца указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCFullYear()")}}</dt> + <dd>Устанавливает полный год (4 цифры для 4-х значного года) указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCHours()")}}</dt> + <dd>Устанавливает часы указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</dt> + <dd>Устанавливает миллисекунды указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCMinutes()")}}</dt> + <dd>Устанавливает минуты указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCMonth()")}}</dt> + <dd>Устанавливает месяц указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setUTCSeconds()")}}</dt> + <dd>Устанавливает секунды указанной даты по всемирному координированному времени.</dd> + <dt>{{jsxref("Date.prototype.setYear()")}} {{deprecated_inline}}</dt> + <dd>Устанавливает год (обычно 2-3 цифры) указанной даты по всемирному координированному времени. Вместо него используйте метод {{jsxref("Date.prototype.setFullYear()", "setFullYear()")}}.</dd> +</dl> + +<h3 id="Conversion_getter" name="Conversion_getter">Получения преобразованного значения</h3> + +<dl> + <dt>{{jsxref("Date.prototype.toDateString()")}}</dt> + <dd>Возвращает часть, содержащую только дату объекта {{jsxref("Global_Objects/Date", "Date")}} в качестве человеко-читаемой строки.</dd> + <dt>{{jsxref("Date.prototype.toISOString()")}}</dt> + <dd>Преобразует дату в строку, следуя расширенному формату ISO 8601.</dd> + <dt>{{jsxref("Date.prototype.toJSON()")}}</dt> + <dd>Возвращает строку, представляющую объект {{jsxref("Global_Objects/Date", "Date")}}, используя метод {{jsxref("Date.prototype.toISOString()", "toISOString()")}}. Предназначен для использования методом {{jsxref("JSON.stringify()")}}.</dd> + <dt>{{jsxref("Date.prototype.toGMTString()")}} {{deprecated_inline}}</dt> + <dd>Возвращает строку, представляющую объект {{jsxref("Global_Objects/Date", "Date")}}, на основе часового пояса GMT (всемирное время). Вместо него используйте метод {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.</dd> + <dt>{{jsxref("Date.prototype.toLocaleDateString()")}}</dt> + <dd>Возвращает строку с датой, чьё представление зависит от системных настроек локали.</dd> + <dt>{{jsxref("Date.prototype.toLocaleFormat()")}} {{non-standard_inline}}</dt> + <dd>Преобразует дату в строку, используя строку форматирования.</dd> + <dt>{{jsxref("Date.prototype.toLocaleString()")}}</dt> + <dd>Возвращает строку, чьё представление зависит от настроек локали. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("Date.prototype.toLocaleTimeString()")}}</dt> + <dd>Возвращает строку со временем, чьё представление зависит от системных настроек локали.</dd> + <dt>{{jsxref("Date.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает строковое представление исходного кода эквивалентного объекта {{jsxref("Global_Objects/Date", "Date")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Date.prototype.toString()")}}</dt> + <dd>Возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Date", "Date")}}. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("Date.prototype.toTimeString()")}}</dt> + <dd>Возвращает часть, содержащую только время объекта {{jsxref("Global_Objects/Date", "Date")}} в качестве человеко-читаемой строки.</dd> + <dt>{{jsxref("Date.prototype.toUTCString()")}}</dt> + <dd>Преобразует дату в строку, используя часовой пояс UTC.</dd> + <dt>{{jsxref("Date.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}}. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.</dd> +</dl> + +<div>{{jsOverrides("Object", "methods", "getDate", "getDay", "getFullYear", "getHours", "getMilliseconds", "getMinutes", "getMonth", "getSeconds", "getTime", "getTimezoneOffset", "getUTCDate", "getUTCDay", "getUTCFullYear", "getUTCHours", "getUTCMilliseconds", "getUTCMinutes", "getUTCMonth", "getUTCSeconds", "getYear", "setdate", "setFullYear", "setHours", "setMilliseconds", "setMinutes", "setMontth", "setSeconds", "setTime", "setUTCDate", "setUTCFullYear", "setUTCHours", "setUTCMilliseconds", "setUTCMinutes", "setUTCMonth", "setUTCSeconds", "setYear", "toDateString", "toGMTString", "toLocaleDateString", "toLocaleFormat", "toLocaleString", "toLocaleTimeString", "toSource", "toString", "toTimeString", "toUTCString", "valueOf")}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5', 'Date.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-the-date-prototype-object', 'Date.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/date/setdate/index.html b/files/ru/web/javascript/reference/global_objects/date/setdate/index.html new file mode 100644 index 0000000000..0fd3f1c9b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setdate/index.html @@ -0,0 +1,84 @@ +--- +title: Date.prototype.setDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setDate +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>setDate()</code></strong> устанавливает день месяца указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.setDate(<var>dayValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>dayValue</code></dt> + <dd>Целое число, представляющее номер дня в месяце.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>В результате выполнения функция setDate() изменяет текущий объект ({{jsxref("Date")}}) и возвращает количество миллисекунд от начала эпохи (1 января 1970 00:00:00 UTC) для полученного значения объекта.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если значение параметра <code>dayValue</code> будет выходить за пределы количества дней для месяца, метод <code>setDate()</code> соответственно обновит объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>dayValue</code> передать значение 0, дата будет установлена в последний день предыдущего месяца.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setDate" name="Example:_Using_setDate">Пример: использование метода <code>setDate()</code></h3> + +<pre class="brush: js">var theBigDay = new Date(1962, 6, 7); // 1962-07-07 +theBigDay.setDate(24); // 1962-07-24 +theBigDay.setDate(32); // 1962-08-01 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.36', 'Date.prototype.setDate')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setdate', 'Date.prototype.setDate')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> </div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Date.setDate")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getDate()")}}</li> + <li>{{jsxref("Date.prototype.setUTCDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html new file mode 100644 index 0000000000..a0022b73cc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setfullyear/index.html @@ -0,0 +1,136 @@ +--- +title: Date.prototype.setFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setFullYear +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>setFullYear()</code></strong> устанавливает полный год указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.setFullYear(<var>yearValue</var>[, <var>monthValue</var>[, <var>dayValue</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>yearValue</code></dt> + <dd>Целое число, определяющее значение года, например, 1995.</dd> + <dt><code>monthValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 11, представляющее месяцы от января до декабря.</dd> + <dt><code>dayValue</code></dt> + <dd>Необязательный параметр. Целое число от 1 до 31, представляющее день месяца. Если вы определите параметр <code>dayValue</code>, вы также должны определить параметр <code>monthValue</code>.</dd> +</dl> + +<h3 id="Returns" name="Returns" style="line-height: 24px; font-size: 1.71428571428571rem;">Возвращаемое значение</h3> + +<p>Текущее время в милисекундах для нового значения даты — такое же значение как и у метода {{jsxref("Date.prototype.getTime()", "getTime()")}} для текущего объекта <strong>после</strong> вызова <code style="font-style: normal;">setFullYear()</code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если вы не определите значения параметров <code>monthValue</code> и <code>dayValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getMonth()", "getMonth()")}} и {{jsxref("Date.prototype.getDate()", "getDate()")}}.</p> + +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setFullYear()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>monthValue</code> передать значение 15, год увеличится на 1 (<code>yearValue + 1</code>), а в качестве месяца будет использоваться значение 3.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setFullYear" name="Example:_Using_setFullYear">Пример: использование метода <code>setFullYear()</code></h3> + +<pre class="brush:js">var theBigDay = new Date(); +theBigDay.setFullYear(1997); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.40', 'Date.prototype.setFullYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setfullyear', 'Date.prototype.setFullYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/sethours/index.html b/files/ru/web/javascript/reference/global_objects/date/sethours/index.html new file mode 100644 index 0000000000..8112970d7b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/sethours/index.html @@ -0,0 +1,125 @@ +--- +title: Date.prototype.setHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setHours +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setHours()</code></strong> устанавливает часы указанной даты по местному времени и возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до времени, представляемого обновлённым экземпляром {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setHours(<var>hoursValue</var>[, <var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]]])</code></pre> + +<h3 id="Версия_до_JavaScript_1.3">Версия до JavaScript 1.3</h3> +<pre class="syntaxbox"><code><var>dateObj</var>.setHours(<var>hoursValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>hoursValue</code></dt> + <dd>Целое число от 0 до 23, представляющее часы.</dd> + <dt><code>minutesValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее минуты.</dd> + <dt><code>secondsValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр <code>secondsValue</code>, вы также должны определить параметр <code>minutesValue</code>.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр <code>msValue</code>, вы также должны определить параметры <code>minutesValue</code> и <code>secondsValue</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметров <code>minutesValue</code>, <code>secondsValue</code> и <code>msValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getMinutes()", "getMinutes()")}}, {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} и {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setHours()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1 (<code>minutesValue + 1</code>), а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setHours" name="Example:_Using_setHours">Пример: использование метода <code>setHours()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setHours(7); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.34', 'Date.prototype.setHours')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.sethours', 'Date.prototype.setHours')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getHours()")}}</li> + <li>{{jsxref("Date.prototype.setUTCHours()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html new file mode 100644 index 0000000000..fb380ec0c8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setmilliseconds/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMilliseconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setMilliseconds()</code></strong> устанавливает миллисекунды указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setMilliseconds(<var>millisecondsValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>millisecondsValue</code></dt> + <dd>Целое число от 0 до 999, представляющее миллисекунды.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если значение параметра <code>millisecondsValue</code> будет выходить за пределы ожидаемого диапазона, метод <code>setMilliseconds()</code> соответственно обновит объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>millisecondsValue</code> передать значение 1005, количество секунд увеличится на 1, а в качестве миллисекунд будет использоваться значение 5.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setMilliseconds" name="Example:_Using_setMilliseconds">Пример: использование метода <code>setMilliseconds()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setMilliseconds(100); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.28', 'Date.prototype.setMilliseconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setmilliseconds', 'Date.prototype.setMilliseconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getMilliseconds()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMilliseconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html new file mode 100644 index 0000000000..3cf8647e14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setminutes/index.html @@ -0,0 +1,139 @@ +--- +title: Date.prototype.setMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMinutes +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>setMinutes()</code></strong> устанавливает минуты указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.setMinutes(<var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]])</code></pre> + +<h3 id="Версия_до_JavaScript_1.3">Версия до JavaScript 1.3</h3> + +<pre class="syntaxbox"><code><var>dateObj</var>.setMinutes(<var>minutesValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>minutesValue</code></dt> + <dd>Целое число от 0 до 59, представляющее минуты.</dd> + <dt><code>secondsValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр <code>secondsValue</code>, вы также должны определить параметр <code>minutesValue</code>.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр <code>msValue</code>, вы также должны определить параметры <code>minutesValue</code> и <code>secondsValue</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Количество миллисекунд между 1 января 1970 00:00:00 UTC и обновленной датой.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если вы не определите значения параметров <code>secondsValue</code> и <code>msValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getSeconds()", "getSeconds()")}} и {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.</p> + +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setMinutes()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1 (<code>minutesValue + 1</code>), а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setMinutes" name="Example:_Using_setMinutes">Пример: использование метода <code>setMinutes()</code></h3> + +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setMinutes(45); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.32', 'Date.prototype.setMinutes')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setminutes', 'Date.prototype.setMinutes')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getMinutes()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMinutes()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html new file mode 100644 index 0000000000..439476b7cc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setmonth/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.setMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setMonth +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setMonth()</code></strong> устанавливает месяц указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setMonth(<var>monthValue</var>[, <var>dayValue</var>])</code></pre> + +<h3 id="Версия_до_JavaScript_1.3">Версия до JavaScript 1.3</h3> +<pre class="syntaxbox"><code><var>dateObj</var>.setMonth(<var>monthValue</var>)</code></pre> + +<h3 id="Parameter" name="Parameter">Parameter</h3> +<dl> + <dt><code>monthValue</code></dt> + <dd>Целое число от 0 до 11, представляющее месяцы от января до декабря.</dd> + <dt><code>dayValue</code></dt> + <dd>Необязательный параметр. Целое число от 1 до 31, представляющее день месяца.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметра <code>dayValue</code>, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getDate()", "getDate()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setMonth()</code> попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>monthValue</code> передать значение 15, год увеличится на 1, а в качестве месяца будет использоваться значение 3.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setMonth" name="Example:_Using_setMonth">Пример: использование метода <code>setMonth()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setMonth(6); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.38', 'Date.prototype.setMonth')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setmonth', 'Date.prototype.setMonth')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getMonth()")}}</li> + <li>{{jsxref("Date.prototype.setUTCMonth()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html new file mode 100644 index 0000000000..789eb9d7e1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setseconds/index.html @@ -0,0 +1,121 @@ +--- +title: Date.prototype.setSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setSeconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setSeconds()</code></strong> устанавливает секунды указанной даты по местному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setSeconds(<var>secondsValue</var>[, <var>msValue</var>])</code></pre> + +<h3 id="Версия_до_JavaScript_1.3">Версия до JavaScript 1.3</h3> +<pre class="syntaxbox"><code><var>dateObj</var>.setSeconds(<var>secondsValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>secondsValue</code></dt> + <dd>Целое число от 0 до 59, представляющее количество секунд.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Число от 0 до 999, представляющее количество миллисекунд.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметра <code>msValue</code>, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getMilliseconds()", "getMilliseconds()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setSeconds()</code> попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1, а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setSeconds" name="Example:_Using_setSeconds">Пример: использование метода <code>setSeconds()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setSeconds(30); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.30', 'Date.prototype.setSeconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setseconds', 'Date.prototype.setSeconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getSeconds()")}}</li> + <li>{{jsxref("Date.prototype.setUTCSeconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/settime/index.html b/files/ru/web/javascript/reference/global_objects/date/settime/index.html new file mode 100644 index 0000000000..ed30f8c6d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/settime/index.html @@ -0,0 +1,116 @@ +--- +title: Date.prototype.setTime() +slug: Web/JavaScript/Reference/Global_Objects/Date/setTime +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setTime +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setTime()</code></strong> устанавливает время объекта {{jsxref("Global_Objects/Date", "Date")}} в значение, представляемое количеством миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setTime(<var>timeValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>timeValue</code></dt> + <dd>Целое число, представляющее количеством миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Используя метод <code>setTime()</code>, можно присвоить дату и время другому объекту {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setTime" name="Example:_Using_setTime">Пример: использование метода <code>setTime()</code></h3> +<pre class="brush: js">var theBigDay = new Date('July 1, 1999'); +var sameAsBigDay = new Date(); +sameAsBigDay.setTime(theBigDay.getTime()); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.27', 'Date.prototype.setTime')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.settime', 'Date.prototype.setTime')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getTime()")}}</li> + <li>{{jsxref("Date.prototype.setUTCHours()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html new file mode 100644 index 0000000000..7f42960c13 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcdate/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setUTCDate() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCDate +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCDate()</code></strong> устанавливает день месяца указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCDate(<var>dayValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>dayValue</code></dt> + <dd>Целое число от 1 до 31, представляющее номер дня в месяце.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если значение параметра <code>dayValue</code> будет выходить за пределы количества дней для месяца, метод <code>setUTCDate()</code> попытается соответственно обновить объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>dayValue</code> передать значение 40, а текущий сохранённый в объекте {{jsxref("Global_Objects/Date", "Date")}} месяц равен июню, день будет изменён на 10, а месяц увеличится до июля.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCDate" name="Example:_Using_setUTCDate">Пример: использование метода <code>setUTCDate()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCDate(20); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.37', 'Date.prototype.setUTCDate')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcdate', 'Date.prototype.setUTCDate')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCDate()")}}</li> + <li>{{jsxref("Date.prototype.setDate()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html new file mode 100644 index 0000000000..4dbcfe0c7a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcfullyear/index.html @@ -0,0 +1,120 @@ +--- +title: Date.prototype.setUTCFullYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCFullYear +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCFullYear()</code></strong> устанавливает полный год указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCFullYear(<var>yearValue</var>[, <var>monthValue</var>[, <var>dayValue</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>yearValue</code></dt> + <dd>Целое число, определяющее значение года, например, 1995.</dd> + <dt><code>monthValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 11, представляющее месяцы от января до декабря.</dd> + <dt><code>dayValue</code></dt> + <dd>Необязательный параметр. Целое число от 1 до 31, представляющее день месяца. Если вы определите параметр <code>dayValue</code>, вы также должны определить параметр <code>monthValue</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметров <code>monthValue</code> и <code>dayValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCMonth()", "getUTCMonth()")}} и {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setUTCFullYear()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>monthValue</code> передать значение 15, год увеличится на 1 (<code>yearValue + 1</code>), а в качестве месяца будет использоваться значение 3.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCFullYear" name="Example:_Using_setUTCFullYear">Пример: использование метода <code>setUTCFullYear()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCFullYear(1997); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.41', 'Date.prototype.setUTCFullYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcfullyear', 'Date.prototype.setUTCFullYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setFullYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html b/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html new file mode 100644 index 0000000000..333120ab9b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutchours/index.html @@ -0,0 +1,122 @@ +--- +title: Date.prototype.setUTCHours() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCHours +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCHours()</code></strong> устанавливает часы указанной даты по всемирному координированному времени и возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до времени, представляемого обновлённым экземпляром {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCHours(<var>hoursValue</var>[, <var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>hoursValue</code></dt> + <dd>Целое число от 0 до 23, представляющее часы.</dd> + <dt><code>minutesValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее минуты.</dd> + <dt><code>secondsValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр <code>secondsValue</code>, вы также должны определить параметр <code>minutesValue</code>.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр <code>msValue</code>, вы также должны определить параметры <code>minutesValue</code> и <code>secondsValue</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметров <code>minutesValue</code>, <code>secondsValue</code> и <code>msValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCMinutes()", "getUTCMinutes()")}}, {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} и {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setUTCHours()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1 (<code>minutesValue + 1</code>), а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCHours" name="Example:_Using_setUTCHours">Пример: использование метода <code>setUTCHours()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCHours(8); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.35', 'Date.prototype.setUTCHours')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutchours', 'Date.prototype.setUTCHours')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCHours()")}}</li> + <li>{{jsxref("Date.prototype.setHours()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html new file mode 100644 index 0000000000..ce32739425 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcmilliseconds/index.html @@ -0,0 +1,115 @@ +--- +title: Date.prototype.setUTCMilliseconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMilliseconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCMilliseconds()</code></strong> устанавливает миллисекунды указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCMilliseconds(<var>millisecondsValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>millisecondsValue</code></dt> + <dd>Целое число от 0 до 999, представляющее миллисекунды.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если значение параметра <code>millisecondsValue</code> будет выходить за пределы ожидаемого диапазона, метод <code>setUTCMilliseconds()</code> попытается соответственно обновить объект {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>millisecondsValue</code> передать значение 1100, количество секунд увеличится на 1, а в качестве миллисекунд будет использоваться значение 100.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCMilliseconds" name="Example:_Using_setUTCMilliseconds">Пример: использование метода <code>setUTCMilliseconds()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCMilliseconds(500); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.29', 'Date.prototype.setUTCMilliseconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcmilliseconds', 'Date.prototype.setUTCMilliseconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCMilliseconds()")}}</li> + <li>{{jsxref("Date.prototype.setMilliseconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html new file mode 100644 index 0000000000..ab55814ccd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcminutes/index.html @@ -0,0 +1,120 @@ +--- +title: Date.prototype.setUTCMinutes() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMinutes +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCMinutes()</code></strong> устанавливает минуты указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCMinutes(<var>minutesValue</var>[, <var>secondsValue</var>[, <var>msValue</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>minutesValue</code></dt> + <dd>Целое число от 0 до 59, представляющее минуты.</dd> + <dt><code>secondsValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 59, представляющее секунды. Если вы определите параметр <code>secondsValue</code>, вы также должны определить параметр <code>minutesValue</code>.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Целое число от 0 до 999, представляющее миллисекунды. Если вы определите параметр <code>msValue</code>, вы также должны определить параметры <code>minutesValue</code> и <code>secondsValue</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметров <code>secondsValue</code> и <code>msValue</code>, будут использоваться значения, возвращаемые методами {{jsxref("Date.prototype.getUTCSeconds()", "getUTCSeconds()")}} и {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setUTCMinutes()</code> попытается соответственно обновить другие параметры и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1 (<code>minutesValue + 1</code>), а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCMinutes" name="Example:_Using_setUTCMinutes">Пример: использование метода <code>setUTCMinutes()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCMinutes(43); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.33', 'Date.prototype.setUTCMinutes')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcminutes', 'Date.prototype.setUTCMinutes')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCMinutes()")}}</li> + <li>{{jsxref("Date.prototype.setMinutes()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html new file mode 100644 index 0000000000..5dae100c2d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcmonth/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.setUTCMonth() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCMonth +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCMonth()</code></strong> устанавливает месяц указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCMonth(<var>monthValue</var>[, <var>dayValue</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>monthValue</code></dt> + <dd>Целое число от 0 до 11, представляющее месяцы от января до декабря.</dd> + <dt><code>dayValue</code></dt> + <dd>Необязательный параметр. Целое число от 1 до 31, представляющее день месяца.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметра <code>dayValue</code>, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getUTCDate()", "getUTCDate()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setUTCMonth()</code> попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>monthValue</code> передать значение 15, год увеличится на 1, а в качестве месяца будет использоваться значение 3.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCMonth" name="Example:_Using_setUTCMonth">Пример: использование метода <code>setUTCMonth()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCMonth(11); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.39', 'Date.prototype.setUTCMonth')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcmonth', 'Date.prototype.setUTCMonth')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCMonth()")}}</li> + <li>{{jsxref("Date.prototype.setMonth()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html b/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html new file mode 100644 index 0000000000..8fe93a7d8d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setutcseconds/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.setUTCSeconds() +slug: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setUTCSeconds +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>setUTCSeconds()</code></strong> устанавливает секунды указанной даты по всемирному координированному времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.setUTCSeconds(<var>secondsValue</var>[, <var>msValue</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>secondsValue</code></dt> + <dd>Целое число от 0 до 59, представляющее количество секунд.</dd> + <dt><code>msValue</code></dt> + <dd>Необязательный параметр. Число от 0 до 999, представляющее количество миллисекунд.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если вы не определите значения параметра <code>msValue</code>, будет использоваться значение, возвращаемое методом {{jsxref("Date.prototype.getUTCMilliseconds()", "getUTCMilliseconds()")}}.</p> +<p>Если значение определяемого параметра будет выходить за пределы ожидаемого диапазона, метод <code>setUTCSeconds()</code> попытается соответственно обновить другой параметр и информацию о дате в объекте {{jsxref("Global_Objects/Date", "Date")}}. Например, если в качестве <code>secondsValue</code> передать значение 100, минуты увеличатся на 1, а в качестве секунд будет использоваться значение 40.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setUTCSeconds" name="Example:_Using_setUTCSeconds">Пример: использование метода <code>setUTCSeconds()</code></h3> +<pre class="brush: js">var theBigDay = new Date(); +theBigDay.setUTCSeconds(20); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.31', 'Date.prototype.setUTCSeconds')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setutcseconds', 'Date.prototype.setUTCSeconds')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.getUTCSeconds()")}}</li> + <li>{{jsxref("Date.prototype.setSeconds()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/setyear/index.html b/files/ru/web/javascript/reference/global_objects/date/setyear/index.html new file mode 100644 index 0000000000..d3127e4bf0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/setyear/index.html @@ -0,0 +1,87 @@ +--- +title: Date.prototype.setYear() +slug: Web/JavaScript/Reference/Global_Objects/Date/setYear +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/setYear +--- +<div>{{JSRef("Global_Objects", "Date")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>setYear()</code></strong> устанавливает год указанной даты по местному времени. Поскольку метод <code>setYear()</code> не устанавливает полный год («проблема 2000 года»), он больше не используется и был заменён методом {{jsxref("Date.prototype.setFullYear", "setFullYear()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.setYear(<var>yearValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>yearValue</code></dt> + <dd>Целое число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если параметр <code>yearValue</code> является числом в диапазоне от 0 до 99 (включительно), год объекта <code>dateObj</code> устанавливается в <code>1900 + yearValue</code>. В противном случае год объекта <code>dateObj</code> устанавливается в <code>yearValue</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_setYear" name="Example:_Using_setYear">Пример: использование метода <code>setYear()</code></h3> + +<p>Первые две строки устанавливают год в 1996. Третья строка устанавливает год в 2000.</p> + +<pre class="brush: js">var theBigDay = new Date(); + +theBigDay.setYear(96); +theBigDay.setYear(1996); +theBigDay.setYear(2000); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-B.2.5', 'Date.prototype.getYear')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определён в (информативном) приложении по совместимости.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.setyear', 'Date.prototype.getYear')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Date.setYear")}}</div> + +<div id="compat-mobile"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.getFullYear()")}}</li> + <li>{{jsxref("Date.prototype.getUTCFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setFullYear()")}}</li> + <li>{{jsxref("Date.prototype.setUTCFullYear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html b/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html new file mode 100644 index 0000000000..c36b9f6929 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/todatestring/index.html @@ -0,0 +1,113 @@ +--- +title: Date.prototype.toDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toDateString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toDateString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toDateString()</code></strong> возвращает часть, содержащую только дату объекта {{jsxref("Global_Objects/Date", "Date")}} в виде человеко-читаемой строки на американском английском.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toDateString()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода {{jsxref("Date.prototype.toString()", "toString()")}} вернёт дату, отформатированную в виде человеко-читаемой строки на американском английском. В <a href="/ru/docs/SpiderMonkey">SpiderMonkey</a> она состоит из части, содержищей дату (день, месяц и год) и следующей за ней части, содержащей время (часы, минуты, секунды и часовой пояс). Иногда желательно получить строку, содержащую только часть с датой; этого можно достигнуть использованием метода <code>toDateString()</code>.</p> +<p>Метод <code>toDateString()</code> полезен тем, что совместимые движки, реализующие <a href="/ru/docs/ECMAScript">ECMA-262</a> могут давать разные строки с помощью метода {{jsxref("Date.prototype.toString()", "toString()")}} объекта {{jsxref("Global_Objects/Date", "Date")}}, поскольку формат строки зависит от реализации и простой подход с разрезанием строки на дату и время может не всегда сработать.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_A_basic_usage_of_toDateString" name="Example:_A_basic_usage_of_toDateString">Пример: базовое использование метода <code>toDateString()</code></h3> +<pre class="brush: js">var d = new Date(1993, 6, 28, 14, 39, 7); + +console.log(d.toString()); // напечатает Wed Jul 28 1993 14:39:07 GMT-0600 (PDT) +console.log(d.toDateString()); // напечатает Wed Jul 28 1993 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.3', 'Date.prototype.toDateString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.todatestring', 'Date.prototype.toDateString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html b/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html new file mode 100644 index 0000000000..b10fb90ceb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/togmtstring/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.toGMTString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +tags: + - Date + - Deprecated + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toGMTString +--- +<div>{{JSRef("Global_Objects", "Date")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toGMTString()</code></strong> преобразует дату в строку, используя соглашения Среднего времени по Гринвичу (GMT) в Интернет. Точный формат значения, возвращаемого методом <code>toGMTString()</code> различается на разных платформах и браузерах, можно лишь сказать, что он представляет собой человеко-читаемую строку с датой.</p> +<div class="note"> + <p><strong>Примечание:</strong> метод <code>toGMTString()</code> устарел и не должен использоваться. Он оставлен только для обратной совместимости; пожалуйста, используйте вместо него метод {{jsxref("Date.prototype.toUTCString()", "toUTCString()")}}.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toGMTString()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toGMTString" name="Example:_Using_toGMTString">Пример: использование метода <code>toGMTString()</code></h3> +<p>В этом примере метод <code>toGMTString()</code> преобразует дату в формат GMT (UTC), используя часовой пояс операционной системы и возвращает подобную строку. Точный формат зависит от платформы.</p> +<pre class="brush: js">var today = new Date(); +var str = today.toGMTString(); // устарел! используйте метод toUTCString() + +console.log(str); // Mon, 18 Dec 1995 17:28:35 GMT +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение, но уже определён как устаревший. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-B.2.6', 'Date.prototype.toGMTString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определён в (информативном) приложении по совместимости.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.togmtstring', 'Date.prototype.toGMTString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определён в (нормативном) приложении по дополнительным возможностям веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toUTCString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html b/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html new file mode 100644 index 0000000000..347f326d0b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/toisostring/index.html @@ -0,0 +1,143 @@ +--- +title: Date.prototype.toISOString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toISOString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toISOString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toISOString()</code></strong> возвращает строку в формате ISO (<a href="https://ru.wikipedia.org/wiki/ISO_8601">расширенный формат ISO 8601</a>), который можно описать следующим образом: <strong><code>YYYY-MM-DDTHH:mm:ss.sssZ</code></strong>. Часовой пояс всегда равен UTC, что обозначено суффиксом <code>"Z"</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.toISOString()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toISOString" name="Example:_Using_toISOString">Пример: использование метода <code>toISOString()</code></h3> + +<pre class="brush: js">var today = new Date('05 October 2011 14:48 UTC'); + +console.log(today.toISOString()); // вернёт 2011-10-05T14:48:00.000Z +</pre> + +<p>Пример выше использует разбор нестандартного строкового значения, которое может разобраться некорректно в браузерах, отличных от Firefox.</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был стандартизирован в ECMA-262 5-го издания. Отсутствие этого метода в движках, которые не были обновлены для его поддержки, можно обойти следующей прокладкой:</p> + +<pre class="brush: js">if (!Date.prototype.toISOString) { + (function() { + + function pad(number) { + if (number < 10) { + return '0' + number; + } + return number; + } + + Date.prototype.toISOString = function() { + return this.getUTCFullYear() + + '-' + pad(this.getUTCMonth() + 1) + + '-' + pad(this.getUTCDate()) + + 'T' + pad(this.getUTCHours()) + + ':' + pad(this.getUTCMinutes()) + + ':' + pad(this.getUTCSeconds()) + + '.' + (this.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + + 'Z'; + }; + + }()); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.43', 'Date.prototype.toISOString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.toisostring', 'Date.prototype.toISOString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toUTCString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tojson/index.html b/files/ru/web/javascript/reference/global_objects/date/tojson/index.html new file mode 100644 index 0000000000..75ba90a661 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tojson/index.html @@ -0,0 +1,107 @@ +--- +title: Date.prototype.toJSON() +slug: Web/JavaScript/Reference/Global_Objects/Date/toJSON +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toJSON +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toJSON()</code></strong> возвращает представление объекта {{jsxref("Global_Objects/Date", "Date")}} в виде {{Glossary("JSON")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toJSON()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода <code>toJSON()</code> вернёт строку, отформатированную в JSON (при помощи метода {{jsxref("Date.prototype.toISOString()", "toISOString()")}}), представляющую значение объекта {{jsxref("Global_Objects/Date", "Date")}}. Этот метод, как правило, предназначен для сериализации объектов {{jsxref("Global_Objects/Date", "Date")}} в JSON.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toJSON" name="Example:_Using_toJSON">Пример: использование метода <code>toJSON()</code></h3> +<pre class="brush:js">var jsonDate = (new Date()).toJSON(); +var backToDate = new Date(jsonDate); + +console.log('Сериализованный объект даты: ' + jsonDate); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.44', 'Date.prototype.toJSON')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.tojson', 'Date.prototype.toJSON')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toUTCString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html new file mode 100644 index 0000000000..86c6dd4d0d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaledatestring/index.html @@ -0,0 +1,226 @@ +--- +title: Date.prototype.toLocaleDateString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toLocaleDateString()</code></strong> возвращает строку с языко-зависимым представлением части с датой в этой дате. Новые аргументы <code>locales</code> и <code>options</code> позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы <code>locales</code> и <code>options</code>, используемая локаль и форма возвращённой строки целиком зависит от реализации.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.toLocaleDateString([<var>locales</var> [, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Проверьте раздел <a href="#Browser_compatibility">Совместимость с браузерами</a>, чтобы увидеть, какие браузеры поддерживают аргументы <code>locales</code> и <code>options</code>, и <a href="#Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></a> для определения этой возможности.</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}</div> + +<p>Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства <code>weekday</code>, <code>year</code>, <code>month</code> и <code>day</code> равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными <code>"numeric"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleDateString" name="Example:_Using_toLocaleDateString">Пример: использование метода <code>toLocaleDateString()</code></h3> + +<p>При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0)); + +// Вывод toLocaleDateString() без аргументов зависит от реализации, +// локали по умолчанию и часового пояса по умолчанию +console.log(date.toLocaleDateString()); +// → "12/11/2012", если код запущен с локалью en-US и часовым поясом America/Los_Angeles +</pre> + +<h3 id="Example:_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></h3> + +<p>Аргументы <code>locales</code> и <code>options</code> поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p> + +<pre class="brush: js">function toLocaleDateStringSupportsLocales() { + try { + new Date().toLocaleDateString('i'); + } catch (e) { + return e.name === 'RangeError'; + } + return false; +} +</pre> + +<h3 id="Example:_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Этот пример показывает некоторые локализованные форматы даты. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Форматирование ниже предполагает, что местный часовой пояс равен +// America/Los_Angeles для локали США + +// В америкаском английском используется порядок месяц-день-год +console.log(date.toLocaleDateString('en-US')); +// → "12/19/2012" + +// В британском английском используется порядок день-месяц-год +console.log(date.toLocaleDateString('en-GB')); +// → "20/12/2012" + +// В корейском используется порядок год-месяц-день +console.log(date.toLocaleDateString('ko-KR')); +// → "2012. 12. 20." + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(date.toLocaleDateString('ar-EG')); +// → "<span dir="rtl">٢٠/١٢/٢٠١٢</span>" + +// В Японии приложения могут захотеть использовать японский календарь, +// в котором 2012 год являеся 24-м годом эры Хейсей +console.log(date.toLocaleDateString('ja-JP-u-ca-japanese')); +// → "24/12/20" + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(date.toLocaleDateString(['ban', 'id'])); +// → "20/12/2012" +</pre> + +<h3 id="Example:_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Результат, предоставляемый методом <code>toLocaleDateString()</code>, может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Запрашиваем день недели вместе с длинным форматом даты +var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; +console.log(date.toLocaleDateString('de-DE', options)); +// → "Donnerstag, 20. Dezember 2012" + +// Приложение может захотеть использовать UTC и показать это +options.timeZone = 'UTC'; +options.timeZoneName = 'short'; +console.log(date.toLocaleDateString('en-US', options)); +// → "Thursday, December 20, 2012, GMT" +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> + +<p>При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', 'sec-15.9.5.6', 'Date.prototype.toLocaleDateString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.tolocaledatestring', 'Date.prototype.toLocaleDateString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-13.3.2', 'Date.prototype.toLocaleDateString')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Определяет аргументы <code>locales</code> и <code>options</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatChrome("24")}} + поддержка временных зон, отличных от UTC</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td>{{CompatNo}}<br> + {{bug(864843)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html new file mode 100644 index 0000000000..af33b9da2f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaleformat/index.html @@ -0,0 +1,73 @@ +--- +title: Date.prototype.toLocaleFormat() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleFormat +tags: + - Date + - JavaScript + - Method + - Non-standard + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Date.toLocaleFormat +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Нестандартный метод <strong><code>toLocaleFormat()</code></strong> преобразует дату в строку, используя указанное форматирование. Объект {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} является совместимой со стандартами альтернативой при форматировании дат. Так же смотрите новую версию метода {{jsxref("Date.prototype.toLocaleDateString()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.toLocaleFormat(<var>formatString</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>formatString</code></dt> + <dd>Строка формата в той же форме, что ожидается функцией C <a class="external" href="http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html"><code>strftime()</code></a>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>toLocaleFormat()</code> обеспечивает больший контроль программного обеспечения над форматированием генерируемых даты и/или времени. Названия месяцев и дней недели локализуются с помощью локали операционной системы. Однако, порядок дней и месяцев и другие задачи локализации автоматически не обрабатываются, так как эти аспекты контролируете вы. Вы должны позаботиться о том, что строка формата была правильно локализована в соответствии с настройками системы пользователя. Знайте, что используемая локаль не обязательно совпадает с локалью браузера.</p> + +<p>Разработчики расширений и XULRunner должны знать, что загрузку строки формата их файлов <code>.dtd</code> или <code>.properties</code> через URI <code>chrome://<em>somedomain</em>/locale/<em>somefile.ext</em></code> нужно <strong>избегать</strong>, поскольку файлы <code>.dtd</code>/<code>.properties</code> и метод <code>toLocaleFormat()</code> не обязательно используют одну и ту же локаль, из-за чего результат может выглядеть странно, неоднозначно или даже нечитаемо.</p> + +<p>Также обратите внимание, что поведение локали зависит от платформы и пользователь может настроить эту локаль, так что использование системной локали для выбора строки формата в некоторых случаях может быть даже неадекватным. Вы можете рассмотреть возможность использования более общих методов <code>toLocale*</code> объекта {{jsxref("Global_Objects/Date", "Date")}}, либо написать свою собственную локализацию даты, используя для её отображения методы <code>get*</code> объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_toLocaleFormat" name="Example:_Using_toLocaleFormat">Пример: использование метода <code>toLocaleFormat()</code></h3> + +<pre class="brush: js">var today = new Date(); +var date = today.toLocaleFormat('%A, %B %e, %Y'); // плохой пример +</pre> + +<p>В примере выше метод <code>toLocaleFormat()</code> возвращает строку вида "Wednesday, October 3, 2007". обратите внимание, что строка формата в данном примере не локализуется должным образом, что приводит к проблемам, описанным выше.</p> + +<h2 id="Specifications" name="Specifications">Библиотеки</h2> + +<p>Вы можете использовать библиотеку <a href="https://github.com/abritinthebay/datejs/wiki/Format-Specifiers">DateJS</a>, если {{jsxref("Date.prototype.toLocaleDateString","Date.prototype.toLocaleDateString()")}} недоступен:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span><span class="class-name token">Date</span><span class="punctuation token">.</span>prototype<span class="punctuation token">.</span>toLocaleFormat<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="class-name token">Date</span><span class="punctuation token">.</span>prototype<span class="punctuation token">.</span><span class="function function-variable token">toLocaleFormat</span> <span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="parameter token">formatString</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span> <span class="keyword token">this</span><span class="punctuation token">.</span><span class="function token">format</span><span class="punctuation token">(</span>formatString<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span></code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какой-либо спецификации. Реализована в JavaScript 1.6.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Date.toLocaleFormat")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html new file mode 100644 index 0000000000..aff9e18a0a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocalestring/index.html @@ -0,0 +1,233 @@ +--- +title: Date.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toLocaleString()</code></strong> возвращает строку с языко-зависимым представлением даты. Новые аргументы <code>locales</code> и <code>options</code> позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы <code>locales</code> и <code>options</code>, используемая локаль и форма возвращённой строки целиком зависит от реализации.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.toLocaleString([<var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Проверьте раздел <a href="#Browser_compatibility">Совместимость с браузерами</a>, чтобы увидеть, какие браузеры поддерживают аргументы <code>locales</code> и <code>options</code>, и <a href="#Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></a> для определения этой возможности.</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}</div> + +<p>Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства <code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code>, <code>hour</code>, <code>minute</code> и <code>second</code> равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными <code>"numeric"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleString" name="Example:_Using_toLocaleString">Пример: использование метода <code>toLocaleString()</code></h3> + +<p>При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0)); + +// Вывод toLocaleString() без аргументов зависит от реализации, +// локали по умолчанию и часового пояса по умолчанию +console.log(date.toLocaleString()); +// → "12/11/2012, 7:00:00 PM", если код запущен с локалью en-US и часовым поясом America/Los_Angeles +</pre> + +<h3 id="Example:_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></h3> + +<p>Аргументы <code>locales</code> и <code>options</code> поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p> + +<pre class="brush: js">function toLocaleStringSupportsLocales() { + try { + new Date().toLocaleString('i'); + } catch (e) { + return e.name === 'RangeError'; + } + return false; +} +</pre> + +<h3 id="Example:_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Этот пример показывает некоторые локализованные форматы даты и времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Форматирование ниже предполагает, что местный часовой пояс равен +// America/Los_Angeles для локали США + +// В американском английском используется порядок месяц-день-год +// и 12-часовой формат времени +console.log(date.toLocaleString('en-US')); +// → "12/19/2012, 7:00:00 PM" + +// В британском английском используется порядок день-месяц-год +// и 24-часовой формат времени +console.log(date.toLocaleString('en-GB')); +// → "20/12/2012 03:00:00" + +// В корейском используется порядок год-месяц-день +// и 12-часовой формат времени +console.log(date.toLocaleString('ko-KR')); +// → "2012. 12. 20. 오후 12:00:00" + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(date.toLocaleString('ar-EG')); +// → "<span dir="rtl">٢٠/١٢/٢٠١٢ ٥:٠٠:٠٠ ص</span>" + +// В Японии приложения могут захотеть использовать японский календарь, +// в котором 2012 год являеся 24-м годом эры Хейсей +console.log(date.toLocaleString('ja-JP-u-ca-japanese')); +// → "24/12/20 12:00:00" + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(date.toLocaleString(['ban', 'id'])); +// → "20/12/2012 11.00.00" +</pre> + +<h3 id="Example:_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Результат, предоставляемый методом <code>toLocaleString()</code>, может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Запрашиваем день недели вместе с длинным форматом даты +var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; +console.log(date.toLocaleString('de-DE', options)); +// → "Donnerstag, 20. Dezember 2012" + +// Приложение может захотеть использовать UTC и показать это +options.timeZone = 'UTC'; +options.timeZoneName = 'short'; +console.log(date.toLocaleString('en-US', options)); +// → "Thursday, December 20, 2012, GMT" + +// Иногда даже в США нужен 24-х часовой формат времени +console.log(date.toLocaleString('en-US', { hour12: false })); +// → "12/19/2012, 19:00:00" +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> + +<p>При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', 'sec-15.9.5.5', 'Date.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-13.3.1', 'Date.prototype.toLocaleDateString')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Определяет аргументы <code>locales</code> и <code>options</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td>{{CompatNo}}<br> + {{bug(864843)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html b/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html new file mode 100644 index 0000000000..733b0fb49c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tolocaletimestring/index.html @@ -0,0 +1,203 @@ +--- +title: Date.prototype.toLocaleTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +tags: + - Date + - Internationalization + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toLocaleTimeString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toLocaleTimeString()</code></strong> возвращает строку с языко-зависимым представлением части со временем в этой дате. Новые аргументы <code>locales</code> и <code>options</code> позволяют приложениям определять язык, чьи соглашения по форматированию должны использоваться, а также менять поведение этого метода. В старых реализациях, игнорирующих аргументы <code>locales</code> и <code>options</code>, используемая локаль и форма возвращённой строки целиком зависит от реализации.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toLocaleTimeString([<var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Проверьте раздел <a href="#Browser_compatibility">Совместимость с браузерами</a>, чтобы увидеть, какие браузеры поддерживают аргументы <code>locales</code> и <code>options</code>, и <a href="#Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></a> для определения этой возможности.</p> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat', 'Parameters')}}</div> +<p>Значением по умолчанию для каждой компоненты даты-времени является {{jsxref("Global_Objects/undefined", "undefined")}}, однако, если все свойства <code>hour</code>, <code>minute</code> и <code>second</code> равны {{jsxref("Global_Objects/undefined", "undefined")}}, то их значения предполагаются равными <code>"numeric"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleTimeString" name="Example:_Using_toLocaleTimeString">Пример: использование метода <code>toLocaleTimeString()</code></h3> +<p>При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.</p> +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0)); + +// Вывод toLocaleTimeString() без аргументов зависит от реализации, +// локали по умолчанию и часового пояса по умолчанию +console.log(date.toLocaleTimeString()); +// → "7:00:00 PM", если код запущен с локалью en-US и часовым поясом America/Los_Angeles +</pre> + +<h3 id="Example:_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></h3> +<p>Аргументы <code>locales</code> и <code>options</code> поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p> +<pre class="brush: js">function toLocaleTimeStringSupportsLocales() { + try { + new Date().toLocaleTimeString('i'); + } catch (e) { + return e.name === 'RangeError'; + } + return false; +} +</pre> + +<h3 id="Example:_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> +<p>Этот пример показывает некоторые локализованные форматы времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Форматирование ниже предполагает, что местный часовой пояс равен +// America/Los_Angeles для локали США + +// В америкаском английском используется 12-часовой формат времени +console.log(date.toLocaleTimeString('en-US')); +// → "7:00:00 PM" + +// В британском английском используется 24-часовой формат времени +console.log(date.toLocaleTimeString('en-GB')); +// → "03:00:00" + +// В корейском используется 12-часовой формат времени +console.log(date.toLocaleTimeString('ko-KR')); +// → "오후 12:00:00" + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(date.toLocaleTimeString('ar-EG')); +// → "<span dir="rtl">٧:٠٠:٠٠ م</span>" + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(date.toLocaleTimeString(['ban', 'id'])); +// → "11.00.00" +</pre> + +<h3 id="Example:_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> +<p>Результат, предоставляемый методом <code>toLocaleTimeString()</code>, может быть настроен с помощью аргумента <code>options</code>:</p> +<pre class="brush: js">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Приложение может захотеть использовать UTC и показать это +var options = { timeZone: 'UTC', timeZoneName: 'short' }; +console.log(date.toLocaleTimeString('en-US', options)); +// → "3:00:00 AM GMT" + +// Иногда даже в США нужен 24-х часовой формат времени +console.log(date.toLocaleTimeString('en-US', { hour12: false })); +// → "19:00:00" +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> +<p>При форматировании большого количества дат лучшим вариантом будет создание объекта {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} и использование функции, предоставляемой его свойством {{jsxref("DateTimeFormat.prototype.format", "format")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.7', 'Date.prototype.toLocaleTimeString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.tolocalestring', 'Date.prototype.toLocaleTimeString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-13.3.3', 'Date.prototype.toLocaleDateString')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Определяет аргументы <code>locales</code> и <code>options</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug(864843)}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tosource/index.html b/files/ru/web/javascript/reference/global_objects/date/tosource/index.html new file mode 100644 index 0000000000..34f9182296 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tosource/index.html @@ -0,0 +1,93 @@ +--- +title: Date.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Date/toSource +tags: + - Date + - JavaScript + - Method + - Non-standard + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toSource +--- +<div>{{JSRef("Global_Objects", "Date")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toSource()</code></strong> возвращает строковое представление исходного кода объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toSource() +Date.toSource()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toSource()</code> возвращает следующие значения:</p> +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Date", "Date")}} метод <code>toSource()</code> возвращает следующую строку, указывающую, что исходный код объекта недоступен: +<pre class="brush: js">function Date() { + [native code] +} +</pre> + </li> + <li>Для экземпляров {{jsxref("Global_Objects/Date", "Date")}}, метод <code>toSource()</code> возвращает строку, представляющую их исходный код.</li> +</ul> +<p>Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/tostring/index.html b/files/ru/web/javascript/reference/global_objects/date/tostring/index.html new file mode 100644 index 0000000000..321a941ea9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/tostring/index.html @@ -0,0 +1,118 @@ +--- +title: Date.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toString()</code></strong> возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toString()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Global_Objects/Date", "Date")}} переопределяет метод <code>toString()</code>, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/Date", "Date")}} метод <code>toString()</code> возвращает строковое представление объекта.</p> +<p>Метод <code>toString()</code> всегда возвращает строковое представление даты на американском английском.</p> +<p>JavaScript вызывает метод <code>toString()</code> автоматически, когда дата представляется как текст, или когда дата участвует в конкатенации строк.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toString" name="Example:_Using_toString">Пример: использование метода <code>toString()</code></h3> +<p>В следующем примере переменной <code>myVar</code> присваевается значение, возвращённое методом <code>toString()</code> объекта {{jsxref("Global_Objects/Date", "Date")}}:</p> +<pre class="brush: js">var x = new Date(); +myVar = x.toString(); // присваивает переменной myVar значение вроде: +// Mon Sep 28 1998 14:36:22 GMT-0700 (Pacific Daylight Time) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.2', 'Date.prototype.toLocaleTimeString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.tostring', 'Date.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> + <li>{{jsxref("Date.prototype.toDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toTimeString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html b/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html new file mode 100644 index 0000000000..f101bc29dc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/totimestring/index.html @@ -0,0 +1,77 @@ +--- +title: Date.prototype.toTimeString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toTimeString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toTimeString()</code></strong> возвращает часть, содержащую только время объекта {{jsxref("Global_Objects/Date", "Date")}} в виде человеко-читаемой строки на американском английском.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>dateObj</var>.toTimeString()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Экземпляры объекта {{jsxref("Global_Objects/Date", "Date")}} ссылаются на определённый момент времени. Вызов метода {{jsxref("Date.prototype.toString()", "toString()")}} вернёт дату, отформатированную в виде человеко-читаемой строки на американском английском. В <a href="/ru/docs/SpiderMonkey">SpiderMonkey</a> она состоит из части, содержищей дату (день, месяц и год) и следующей за ней части, содержащей время (часы, минуты, секунды и часовой пояс). Иногда желательно получить строку, содержащую только часть со временем; этого можно достигнуть использованием метода <code>toTimeString()</code>.</p> + +<p>Метод <code>toTimeString()</code> полезен тем, что совместимые движки, реализующие <a href="/ru/docs/ECMAScript">ECMA-262</a> могут давать разные строки с помощью метода {{jsxref("Date.prototype.toString()", "toString()")}} объекта {{jsxref("Global_Objects/Date", "Date")}}, поскольку формат строки зависит от реализации и простой подход с разрезанием строки на дату и время может не всегда сработать.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_A_basic_usage_of_toTimeString" name="Example:_A_basic_usage_of_toTimeString">Пример: базовое использование метода <code>toTimeString()</code></h3> + +<pre class="brush: js">var d = new Date(1993, 6, 28, 14, 39, 7); + +console.log(d.toString()); // напечатает Wed Jul 28 1993 14:39:07 GMT-0600 (PDT) +console.log(d.toTimeString()); // напечатает 14:39:07 GMT-0600 (PDT) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.4', 'Date.prototype.toTimeString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.totimestring', 'Date.prototype.toTimeString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Date.toTimeString")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> + <li>{{jsxref("Date.prototype.toDateString()")}}</li> + <li>{{jsxref("Date.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html new file mode 100644 index 0000000000..60aecd9ece --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/toutcstring/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.toUTCString() +slug: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/toUTCString +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toUTCString()</code></strong> преобразует дату в строку, используя часовой пояс UTC.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.toUTCString()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение, возвращаемое методом <code>toUTCString()</code>, является человеко-читаемой строкой в часовом поясе <abbr title="Всемирное координированное время">UTC</abbr>. Формат возвращаемого значения зависит от платформы. Наиболее растпространённым значением является форматированная по RFC-1123 временная метка, которая является немного обновлённой версией временной метки RFC-822.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toUTCString" name="Example:_Using_toUTCString">Пример: использование метода <code>toUTCString()</code></h3> +<pre class="brush: js">var today = new Date(); +var UTCstring = today.toUTCString(); +// Mon, 03 Jul 2006 21:44:38 GMT +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.42', 'Date.prototype.toUTCString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.toutcstring', 'Date.prototype.toUTCString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toDateString()")}}</li> + <li>{{jsxref("Date.prototype.toISOString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/utc/index.html b/files/ru/web/javascript/reference/global_objects/date/utc/index.html new file mode 100644 index 0000000000..e05d187b79 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/utc/index.html @@ -0,0 +1,123 @@ +--- +title: Date.UTC() +slug: Web/JavaScript/Reference/Global_Objects/Date/UTC +tags: + - Date + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/UTC +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<p>Метод <strong><code>Date.UTC()</code></strong> принимает те же самые параметры, что и самая длинная форма конструктора {{jsxref("Global_Objects/Date", "Date")}} и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.</p> + +<div>{{EmbedInteractiveExample("pages/js/date-utc.html")}}</div> + + + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<p> <strong>Начиная с ECMAScript 2017:</strong></p> + +<pre class="syntaxbox">Date.UTC(<var>year</var>[, <var>month</var>[, <var>day</var>[, <var>hour</var>[, <var>minute</var>[, <var>second</var>[, <var>millisecond</var>]]]]]])</pre> + +<p><strong>ECMAScript 2016 и ранее: </strong>(<em>использование <code>month</code> обязательно</em>)</p> + +<pre class="syntaxbox"><code>Date.UTC(<var>year</var>, <var>month</var>[, <var>day</var>[, <var>hour</var>[, <var>minute</var>[, <var>second</var>[, <var>millisecond</var>]]]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>year</code></dt> + <dd>Год, полностью.</dd> + <dt><code>month</code></dt> + <dd>Целое число между <code>0</code> и <code>11</code>, представляющее месяц. (начиная с ES2017 необязательный параметр)</dd> + <dt><code>day</code> {{optional_inline}}</dt> + <dd>Целое число между <code>1</code> и <code>31</code>, представляющее дни месяца.</dd> + <dt><code>hour</code> {{optional_inline}}</dt> + <dd>Целое число между <code>0</code> и <code>23</code>, представляющее часы.</dd> + <dt><code>minute</code> {{optional_inline}}</dt> + <dd>Целое число между <code>0</code> и <code>59</code>, представляющее минуты.</dd> + <dt><code>second</code> {{optional_inline}}</dt> + <dd>Целое число между <code>0</code> и <code>59</code>, представляющее секунды.</dd> + <dt><code>millisecond</code> {{optional_inline}}</dt> + <dd>Целое число между <code>0</code> и <code>999</code>, представляющее миллисекунды.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Число, представляющее собой количество миллисекунд, прошедших с 1-ого Января 1970 года 00:00:00 UTC.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>UTC()</code> принимает параметры даты, разделённые запятыми и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC и указанным вами временем.</p> + +<p>Для параметра <code>year</code> вы должны указать полный год; например, 1998. Если указан год между <code>0</code> и <code>99</code>, метод преобразует год в год в 20-м веке <code>(1900 + year)</code>; например, если вы указали <code>95</code>, будет использоваться <code>1995</code> год.</p> + +<p>Метод <code>UTC()</code> отличается от конструктора {{jsxref("Global_Objects/Date", "Date")}} двумя вещами.</p> + +<ul> + <li>Метод <code>Date.UTC()</code> использует всемирное время вместо местного времени.</li> + <li>Метод <code>Date.UTC()</code> возвращает значение времени как число вместо создания объекта {{jsxref("Global_Objects/Date", "Date")}}.</li> +</ul> + +<p>Если определённый вами параметр выходит за пределы ожидаемого диапазона, метод <code>UTC()</code> обновит другие параметры чтобы привести это число в ожидаемый диапазон. Например, если вы используете в качестве месяца число 15, год будет увеличен на 1 <code>(year + 1)</code>, и в качестве месяца будет использоваться значение 3.</p> + +<p>Поскольку метод <code>UTC()</code> является статическим методом объекта {{jsxref("Global_Objects/Date", "Date")}}, вы всегда должны использовать его как <code>Date.UTC()</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Date.UTC" name="Example:_Using_Date.UTC">Пример: использование <code>Date.UTC()</code></h3> + +<p>Следующее выражение создаёт объект {{jsxref("Global_Objects/Date", "Date")}}, используя всемирное время вместо местного:</p> + +<pre class="brush:js">var utcDate = new Date(Date.UTC(2018, 11, 1, 0, 0, 0)); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-date.utc', 'Date.UTC')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Date.UTC")}}</p> +</div> + +<h2 id="See_also" name="See_also">Заметка о совместимости</h2> + +<h3 id="Date.UTC_с_менее_чем_двумя_аргументами">Date.UTC() с менее чем двумя аргументами</h3> + +<p>Когда вы предоставляете функции <code>Date.UTC()</code> меньше, чем два аргумента, то по стандартам ECMAScript 2017, она должна вернуть {{jsxref("NaN")}}. Браузерные движки, не поддерживающие подобное поведение, были обновлены (смотрите <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1050755">bug 1050755</a>, <a href="https://github.com/tc39/ecma262/pull/642">ecma-262 #642</a>).</p> + +<pre class="brush: js">Date.UTC(); +Date.UTC(1); + +// Safari: NaN +// Chrome/Opera/V8: NaN + +// Firefox <54: non-NaN +// Firefox 54+: NaN + +// IE: non-NaN +// Edge: NaN +</pre> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Date.parse()")}}</li> + <li>{{jsxref("Date")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/date/valueof/index.html b/files/ru/web/javascript/reference/global_objects/date/valueof/index.html new file mode 100644 index 0000000000..d58f5412a6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/date/valueof/index.html @@ -0,0 +1,114 @@ +--- +title: Date.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Date/valueOf +tags: + - Date + - JavaScript + - Method + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Date/valueOf +--- +<div>{{JSRef("Global_Objects", "Date")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>valueOf()</code></strong> возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateObj</var>.valueOf()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>valueOf()</code> возвращает примитивное значение объекта {{jsxref("Global_Objects/Date", "Date")}} в виде числового типа данных — количества миллисекунд, прошедших с полуночи 01 января 1970 по UTC.</p> +<p>Этот метод полностью функционально эквивалентен методу {{jsxref("Date.prototype.getTime()")}}.</p> +<p>Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_valueOf" name="Example:_Using_valueOf">Пример: использование метода <code>valueOf()</code></h3> +<pre class="brush: js">var x = new Date(56, 6, 17); +var myVar = x.valueOf(); // присваивает -424713600000 переменной myVar +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.8', 'Date.prototype.valueOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-date.prototype.valueof', 'Date.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> + <li>{{jsxref("Date.prototype.getTime()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/decodeuri/index.html b/files/ru/web/javascript/reference/global_objects/decodeuri/index.html new file mode 100644 index 0000000000..5f500a65b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/decodeuri/index.html @@ -0,0 +1,124 @@ +--- +title: decodeURI() +slug: Web/JavaScript/Reference/Global_Objects/decodeURI +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURI +--- +<div>{{jsSidebar("Objects")}}</div> + +<p>Метод <code><strong>decodeURI()</strong></code> декодирует <span class="st">унифицированный идентификатор ресурса</span> (URI), созданный при помощи метода {{jsxref("encodeURI")}} или другой подобной процедуры.</p> + +<p> </p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-decodeuri.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<p> </p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>decodeURI(<em>encodedURI</em>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>encodedURI</code></dt> + <dd>Полный закодированный <span class="st">унифицированный идентификатор ресурса</span>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новая строка, представляющая собой незакодированную версию данного <span class="st">унифицированного идентификатора ресурса</span>.</p> + +<p> </p> + +<h3 id="Exceptions">Exceptions</h3> + +<p>Throws an {{jsxref("URIError")}} ("malformed URI sequence") exception when <code><em>encodedURI</em></code> contains invalid character sequences.</p> + +<p> </p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Заменяет каждую управляющую последовательность в закодированном URI соответствующим символом. Не декодирует последовательности, которые невозможно сформировать с помощью {{jsxref("encodeURI")}}. Символ "#" декодированию не подвергается.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Декодирование_кириллического_URL">Декодирование кириллического URL</h3> + +<pre class="brush: js">decodeURI("https://developer.mozilla.org/ru/docs/JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"); +// "https://developer.mozilla.org/ru/docs/JavaScript_шеллы" +</pre> + +<p> </p> + +<h3 id="Catching_errors">Catching errors</h3> + +<pre><code>try { + var a = decodeURI('%E0%A4%A'); +} catch(e) { + console.error(e); +} + +// URIError: malformed URI sequence</code></pre> + +<p> </p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.3.1', 'decodeURI')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-decodeuri-encodeduri', 'decodeURI')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-decodeuri-encodeduri', 'decodeURI')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.decodeURI")}}</p> + +<p> </p> + +<div id="compat-desktop"> </div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("decodeURIComponent")}}</li> + <li>{{jsxref("encodeURI")}}</li> + <li>{{jsxref("encodeURIComponent")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html new file mode 100644 index 0000000000..8e7562ad05 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/decodeuricomponent/index.html @@ -0,0 +1,107 @@ +--- +title: decodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/decodeURIComponent +--- +<div>{{jsSidebar("Objects")}}</div> + +<p>Метод <code><strong>decodeURIComponent()</strong></code> декодирует управляющие последовательности символов в компоненте Uniform Resource Identifier (URI), созданные с помощью метода {{jsxref("encodeURIComponent")}} или другой подобной процедуры.</p> + +<div>{{EmbedInteractiveExample("pages/js/globalprops-decodeuricomponent.html")}}</div> + +<div> </div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request. + +<p> </p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>decodeURIComponent(<em>encodedURI</em>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>encodedURI</code></dt> + <dd>Строка, содержащая закодированный компонент Uniform Resource Identifier.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новая строка, представляющая собой декодированную версию компонента Uniform Resource Identifier (URI), переданного в качестве параметра.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>При неправильном использовании выдает исключение {{jsxref("URIError")}} ("неверный формат последовательности URI").</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Заменяет каждую управляющую последовательность в закодированном компоненте URI соответствующим ей символом.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Декодирование_компонента_кириллического_URL">Декодирование компонента кириллического URL</h3> + +<pre class="brush: js">decodeURIComponent("JavaScript_%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"); +// "JavaScript_шеллы" +</pre> + +<h3 id="Перехват_ошибок">Перехват ошибок</h3> + +<pre class="brush: js">try { + var a = decodeURIComponent('%E0%A4%A'); +} catch(e) { + console.error(e); +} + +// URIError: malformed URI sequence</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.3.2', 'decodeURIComponent')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-decodeuricomponent-encodeduricomponent', 'decodeURIComponent')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.decodeURIComponent")}}</p> + +<h2 id="See_Also" name="See_Also">Смотрите также</h2> + +<ul> + <li>{{jsxref("decodeURI")}}</li> + <li>{{jsxref("encodeURI")}}</li> + <li>{{jsxref("encodeURIComponent")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/encodeuri/index.html b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html new file mode 100644 index 0000000000..9b6c6d7382 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/encodeuri/index.html @@ -0,0 +1,139 @@ +--- +title: encodeURI() +slug: Web/JavaScript/Reference/Global_Objects/encodeURI +tags: + - JavaScript + - NeedsUpdate + - Reference + - URI +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURI +--- +<div> +<div> +<div>{{jsSidebar("Objects")}}</div> +</div> +</div> + +<p>Метод <strong>encodeURI ()</strong> кодирует универсальный идентификатор ресурса (URI), замещая некоторые символы на одну, две, три или четыре управляющие последовательности, представляющие UTF-8 кодировку символа (четыре управляющие последовательности будут использованы только для символов, состоящих из двух «суррогатных» символов).</p> + + + +<p>{{EmbedInteractiveExample("pages/js/globalprops-encodeuri.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + + + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>encodeURI(<em>URI</em>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code><font face="Consolas, Liberation Mono, Courier, monospace">URI</font></code></dt> + <dd>Полный {{Glossary("URI")}}.</dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + + <p>Новая строка, представляющая собой строку-параметр, закодированную в виде универсального идентификатора ресурса (URI).</p> + </dt> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Предполагается, что URI является полным URI, поэтому метод не кодирует зарезервированные символы, имеющие особое значение в URI.</p> + +<p>encodeURI заменяет все символы, <strong>кроме</strong> следующих с соответствующими UTF-8 управляющими последовательностями:</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Тип</td> + <td class="header">Включения</td> + </tr> + <tr> + <td>Зарезервированные символы</td> + <td><code>;</code> <code>,</code> <code>/</code> <code>?</code> <code>:</code> <code>@</code> <code>&</code> <code>=</code> <code>+</code> <code>$</code></td> + </tr> + <tr> + <td>Неэкранируемые символы</td> + <td>латинские буквы, десятичные цифры, <code>-</code> <code>_</code> <code>.</code> <code>!</code> <code>~</code> <code>*</code> <code>'</code> <code>(</code> <code>)</code></td> + </tr> + <tr> + <td>Score</td> + <td><code>#</code></td> + </tr> + </tbody> +</table> + +<p>Заметим, что <code>encodeURI</code> сам по себе не может сформировать правильные HTTP GET и POST запросы, такие как XMLHTTPRequests, потому, что "&", "+", и "=" не закодированы, которые воспринимаются как специальные символы в GET и POST запросах. {{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent")}}, однако, кодирует эти символы</p> + +<p>Замечание: {{jsxref("Global_Objects/URIError", "URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:</p> + +<pre class="brush: js"><code>// низко-высокая пара - нормально +console.log(encodeURIComponent('\uD800\uDFFF')); + +// один высокий суррогат бросит "URIError: malformed URI sequence" +console.log(encodeURIComponent('\uD800')); + +// один низкий суррогат бросит "URIError: malformed URI sequence" +console.log(encodeURIComponent('\uDFFF'));</code></pre> + +<p>Также заметим, что следуя наиболее свежей <a href="http://tools.ietf.org/html/rfc3986">RFC3986</a> для URL, которая делает квадратные скобки защищенными (для IPv6) и таким образом не кодирует, когда формирование чего-либо, не являющегося частью URL (такое как домен), следующий сниппет поможет:</p> + +<pre class="brush: js">function fixedEncodeURI (str) { + return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']'); +}</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 3rd Edition.</td> + <td>Standard</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.3.3', 'encodeURI')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-encodeuri-uri', 'encodeURI')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + + + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.encodeURI")}}</p> + + + + + +<h2 id="See_Also" name="See_Also">Смотрите также</h2> + +<ul> + <li>{{jsxref("decodeURI", "decodeURI()")}}</li> + <li>{{jsxref("encodeURIComponent", "encodeURIComponent()")}}</li> + <li>{{jsxref("decodeURIComponent", "decodeURIComponent()")}}</li> + <li>Base62x</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html new file mode 100644 index 0000000000..73420f234c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/encodeuricomponent/index.html @@ -0,0 +1,157 @@ +--- +title: encodeURIComponent() +slug: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +translation_of: Web/JavaScript/Reference/Global_Objects/encodeURIComponent +--- +<div>{{jsSidebar("Objects")}}</div> + +<p><code><strong>encodeURIComponent()</strong></code> - метод, кодирующий компонент универсального идентификатора ресурса (URI) заменой каждой определенной последовательности символов одной, двумя, тремя или четырьмя последовательностями символов, представленных в кодировке UTF-8 (будет только 4 управляющих последовательности для символов, состоящих из 2 "суррогатных" символов).</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">encodeURIComponent(str);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Строка. Компонент URI.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p><code>encodeURIComponent</code> изменяет все символы, за исключением следующих: латинские буквы, десятичные цифры, <code>- _ . ! ~ * ' ( )</code></p> + +<p>Замечание: {{jsxref("URIError")}} будет брошена, если попытаться закодировать суррогат, который не является частью высоко-низкой пары, например:</p> + +<pre class="brush: js">// низко-высокая пара - нормально +console.log(encodeURIComponent('\uD800\uDFFF')); + +// один высокий суррогат бросит "URIError: malformed URI sequence" +console.log(encodeURIComponent('\uD800')); + +// один низкий суррогат бросит "URIError: malformed URI sequence" +console.log(encodeURIComponent('\uDFFF')); +</pre> + +<p>Чтоб избежать неожиданных запросов к серверу, вам следует вызывать <code>encodeURIComponent</code> для любых вводимых пользователем параметров, используемых как часть URI. Например, он мог написать "<code>Thyme &time=again</code>" для переменной <code>comment</code>. Неиспользование <code>encodeURIComponent</code> для неё даст <code>comment=Thyme%20&time=again</code>. Заметьте, что амперсанд и знак равно выделяют новую пару ключ-значение. Так что вместо комментария "<code>Thyme &time=again</code>", вы получите два POST параметра, один - "<code>Thyme </code>", а другой (<code>time</code>) равный "<code>again"</code>.</p> + +<p><code>Для <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#application/x-www-form-urlencoded-encoding-algorithm">application/x-www-form-urlencoded</a></code> пробелы должны быть заменены на "+", поэтому вам может понадобиться <code>encodeURIComponent</code> с дополнительной заменой "%20" на "+".</p> + +<p>Чтобы строго соблюдать <a class="external" href="http://tools.ietf.org/html/rfc3986">RFC 3986</a> (который резервирует !, ', (, ), и *), даже не смотря на то, что символы не используют сформированных URI разделителей, можно безопасно использовать следущее:</p> + +<pre class="brush: js">function fixedEncodeURIComponent (str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { + return '%' + c.charCodeAt(0).toString(16); + }); +} +</pre> + +<h2 id="Примеры">Примеры</h2> + +<p>Пример представляет специальное кодирование, требуемое для заголовков сервера в UTF-8: <code>Content-Disposition</code> и <code>Link </code>(к примеру, имена файлов в UTF-8):</p> + +<pre class="brush: js">var fileName = 'my file(2).txt'; +var header = "Content-Disposition: attachment; filename*=UTF-8''" + + encodeRFC5987ValueChars(fileName); + +console.log(header); +// логирует "Content-Disposition: attachment; filename*=UTF-8''my%20file%282%29.txt" + + +function encodeRFC5987ValueChars (str) { + return encodeURIComponent(str). + // Замечание: хотя RFC3986 резервирует "!", RFC5987 это не делает, так что нам не нужно избегать этого + replace(/['()]/g, escape). // i.e., %27 %28 %29 + replace(/\*/g, '%2A'). + // Следующее не требуется для кодирования процентов для RFC5987, так что мы можем разрешить немного больше читаемости через провод: |`^ + replace(/%(?:7C|60|5E)/g, unescape); +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.3.4', 'encodeURIComponent')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-encodeuricomponent-uricomponent', 'encodeURIComponent')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("decodeURI")}}</li> + <li>{{jsxref("encodeURI")}}</li> + <li>{{jsxref("decodeURIComponent")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html new file mode 100644 index 0000000000..8138b26a29 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/columnnumber/index.html @@ -0,0 +1,78 @@ +--- +title: Error.prototype.columnNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/columnNumber +--- +<div> + {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>columnNumber</strong></code> содержит номер колонки в строке файла, в котором возникла эта ошибка.</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<h3 id="Example:_Throwing_a_custom_error" name="Example:_Throwing_a_custom_error">Пример: использование <code>columnNumber</code></h3> +<pre class="brush: js">var e = new Error('Невозможно разобрать входные данные'); +throw e; +console.log(e.columnNumber) // 0 +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является чаcтью какой-либо спецификации. Не стандартно.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/filename/index.html b/files/ru/web/javascript/reference/global_objects/error/filename/index.html new file mode 100644 index 0000000000..c2f2affeb0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/filename/index.html @@ -0,0 +1,80 @@ +--- +title: Error.prototype.fileName +slug: Web/JavaScript/Reference/Global_Objects/Error/fileName +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/fileName +--- +<div> + {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>fileName</strong></code> содержит путь к файлу, в котором возникла эта ошибка.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Это нестандартное свойство содержит путь к файлу, в котором возникла эта ошибка. Если доступ к нему получен в контексте отладчика, например, Инструментов разработчика Firefox, вернётся строка «debugger eval code».</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<h3 id="Example:_Throwing_a_custom_error" name="Example:_Throwing_a_custom_error">Пример: использование <code>fileName</code></h3> +<pre class="brush: js">var e = new Error('Невозможно разобрать входные данные'); +throw e; +// e.fileName может выглядеть так "file:///C:/example.html" +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является чаcтью какой-либо спецификации. Не стандартно.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/index.html b/files/ru/web/javascript/reference/global_objects/error/index.html new file mode 100644 index 0000000000..95fd8918a1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/index.html @@ -0,0 +1,208 @@ +--- +title: Error +slug: Web/JavaScript/Reference/Global_Objects/Error +tags: + - Error + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +<div>{{JSRef}}</div> + +<p>Конструктор <strong><code>Error</code></strong> создаёт объект ошибки. Экземпляры объекта <code>Error</code> выбрасываются при возникновении ошибок во время выполнения. Объект <code>Error</code> также может использоваться в качестве базового для пользовательских исключений. Смотрите ниже стандартные встроенные типы ошибок.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox">new Error([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>message </code> <code>{{optional_inline()}}</code></dt> + <dd>Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}} <code>{{optional_inline()}}</code></dt> + <dd>Значение свойства <code>fileName</code> созданного объекта <code>Error</code>. Значением по умолчанию является имя файла, содержащего код, вызвавший конструктор <code>Error()</code>.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}} <code>{{optional_inline()}}</code></dt> + <dd>Значение свойства <code>lineNumber</code> созданного объекта <code>Error</code>. Значением по умолчанию является номер строки, содержащей вызов конструктора <code>Error()</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Во время выполения кода ошибки приводят к созданию и выбрасыванию новых объектов <code>Error</code>.</p> + +<p>Данная страница документирует использование объекта <code>Error</code> как самого по себе, так и при использовании в качестве функции-конструктора. Список свойств и методов, унаследованых экземплярами объекта <code>Error</code>, смотрите в разделе {{jsxref("Error.prototype")}}.</p> + +<p> </p> + +<h3 id="Использование_как_функции">Использование как функции</h3> + +<p>Когда <code>Error</code> используется как функции-- без {{jsxref("Operators/new", "new")}}, она возвращает <code>Error</code> объект. Следовательно простой вызов <code>Error</code> произведет тот же результат, что и конструктор <code>Error</code> объявленный через <code>new</code>.</p> + +<pre><code>// this: +const x = Error('I was created using a function call!'); +// Такая же </code>функциональность<code>: +const y = new Error('I was constructed via the "new" keyword!');</code></pre> + +<p> </p> + +<h3 id="Error_types" name="Error_types"><a id="Error_types" name="Error_types">Типы ошибок</a></h3> + +<p>Кроме общего конструктора <code>Error</code>, в JavaScript существует ещё семь других основных конструкторов ошибок. По обработке исключений смотрите раздел <a href="/ru/docs/Web/JavaScript/Guide/Statements#Exception_Handling_Statements">Выражения обработки исключений</a>.</p> + +<dl> + <dt>{{jsxref("EvalError")}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую в глобальной функции {{jsxref("Global_Objects/eval", "eval()")}}.</dd> + <dt>{{jsxref("InternalError")}} {{non-standard_inline}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую при выбрасывании внутренней ошибки в движке JavaScript. К примеру, ошибки «слишком глубокая рекурсия» («too much recursion»).</dd> + <dt>{{jsxref("RangeError")}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую при выходе числовой переменной или параметра за пределы допустимого диапазона.</dd> + <dt>{{jsxref("ReferenceError")}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую при разыменовывании недопустимой ссылки.</dd> + <dt>{{jsxref("SyntaxError")}}</dt> + <dd>Создаёт экземпляр, представляющий синтаксическую ошибку, возникающую при разборе исходного кода в функции {{jsxref("Global_Objects/eval", "eval()")}}.</dd> + <dt>{{jsxref("TypeError")}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую при недопустимом типе для переменной или параметра.</dd> + <dt>{{jsxref("URIError")}}</dt> + <dd>Создаёт экземпляр, представляющий ошибку, возникающую при передаче в функции {{jsxref("Global_Objects/encodeURI", "encodeURI()")}} или {{jsxref("Global_Objects/decodeURI", "decodeURI()")}} недопустимых параметров.</dd> +</dl> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Error.prototype")}}</dt> + <dd>Позволяет добавлять свойства в экземпляры объекта <code>Error</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<p>Глобальный объект <code>Error</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="Error_instances" name="Error_instances">Экземпляры объекта <code>Error</code></h2> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Description')}}</div> + +<h3 id="Properties_2" name="Properties_2">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Properties')}}</div> + +<h3 id="Methods_2" name="Methods_2">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Error/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Throwing_a_generic_error" name="Example:_Throwing_a_generic_error">Пример: выбрасывание обычной ошибки</h3> + +<p>Обычно, вы создаёте объект <code>Error</code> с намерением возбудить ошибку с помощью ключевого слова {{jsxref("Statements/throw", "throw")}}. Вы можете обработать ошибку с помощью конструкции {{jsxref("Statements/try...catch", "try...catch")}}:</p> + +<pre class="brush: js">try { + throw new Error('Уупс!'); +} catch (e) { + console.log(e.name + ': ' + e.message); +} +</pre> + +<h3 id="Example:_Handling_a_specific_error" name="Example:_Handling_a_specific_error">Пример: обработка ошибки конкретного типа</h3> + +<p><span class="comment">Возможно, это следует удалить</span> Вы можете обрабатывать только какой-то определённый вид ошибок, проверяя тип ошибки в свойстве {{jsxref("Object.prototype.constructor", "constructor")}} или, если вы пишете для современных движков JavaScript, с помощью ключевого слова {{jsxref("Operators/instanceof", "instanceof")}}:</p> + +<pre class="brush: js">try { + foo.bar(); +} catch (e) { + if (e instanceof EvalError) { + console.log(e.name + ': ' + e.message); + } else if (e instanceof RangeError) { + console.log(e.name + ': ' + e.message); + } + // ... и т.д. +} +</pre> + +<h3 id="Example:_Custom_Error_Types" name="Example:_Custom_Error_Types">Пример: пользовательские типы ошибок</h3> + +<p>Вы можете захотеть определить свои собственные типы ошибок, унаследованные от <code>Error</code>, что бы иметь возможноть писать <code>throw new MyError()</code> и использовать <code>instanceof MyError</code> для проверки вида ошибки в обработчике исключений. Ниже продемонстрирован общий подход к выполнению этой задачи.</p> + +<div class="warning"> +<p><strong>Предупреждение:</strong> обратите внимание, что выбрасывание <code>MyError</code> будет сообщать неправильные номер строки <code>lineNumber</code> и имя файла <code>fileName</code> как минимум, в Firefox.</p> +</div> + +<p>Также смотрите <a href="http://stackoverflow.com/questions/1382107/whats-a-good-way-to-extend-error-in-javascript">обсуждение «Какой способ расширения Error в JavaScript более предпочтителен?» на Stackoverflow</a>.</p> + +<pre class="brush: js">// Создаём новый объект, затем через прототип делаем его наследником конструктора Error. +function MyError(message) { + this.name = 'MyError'; + this.message = message || 'Сообщение по умолчанию'; + this.stack = (new Error()).stack; +} +MyError.prototype = Object.create(Error.prototype); +MyError.prototype.constructor = MyError; + +try { + throw new MyError(); +} catch (e) { + console.log(e.name); // 'MyError' + console.log(e.message); // 'Сообщение по умолчанию' +} + +try { + throw new MyError('пользовательское сообщение'); +} catch (e) { + console.log(e.name); // 'MyError' + console.log(e.message); // 'пользовательское сообщение' +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11', 'Error')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error-objects', 'Error')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-error-objects', 'Error')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Error")}}</p> + +<p> </p> + +<div> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Statements/throw", "throw")}}</li> + <li>{{jsxref("Statements/try...catch", "try...catch")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html new file mode 100644 index 0000000000..c9f2d5c33e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/linenumber/index.html @@ -0,0 +1,92 @@ +--- +title: Error.prototype.lineNumber +slug: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/lineNumber +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>lineNumber</strong></code> содержит номер строки в файле, в котором возникла эта ошибка.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Throwing_a_custom_error" name="Example:_Throwing_a_custom_error">Пример: использование <code>lineNumber</code></h3> +<pre class="brush: js">var e = new Error('Невозможно разобрать входные данные'); +throw e; +console.log(e.lineNumber) // 2 +</pre> + +<h3 id="Example:_Alternative_example_using_error_event" name="Example:_Alternative_example_using_error_event">Пример: альтернативный пример с использованием события <code>error</code></h3> +<pre class="brush: js">window.addEventListener('error', function(e) { + console.log(e.lineno); // 5 +}); +var e = new Error('Невозможно разобрать входные данные'); +throw e; +</pre> +<p>Это стандарт и он поддерживается в Chrome, Firefox и, вероятно, много где ещё.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является чаcтью какой-либо спецификации. Не стандартно.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>На объекте ошибки в обработчике события <code>error</code></td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.stack")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.columnNumber")}} {{non-standard_inline}}</li> + <li>{{jsxref("Error.prototype.fileName")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/message/index.html b/files/ru/web/javascript/reference/global_objects/error/message/index.html new file mode 100644 index 0000000000..655ce0924b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/message/index.html @@ -0,0 +1,107 @@ +--- +title: Error.prototype.message +slug: Web/JavaScript/Reference/Global_Objects/Error/message +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/message +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>message</strong></code> представляет человеко-читаемое описание ошибки.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Это свойство содержит краткое описание ошибки, если оно доступно или было установлено. <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> широко использует свойство <code>message</code> для исключений. Свойство <code>message</code> в сочетании со свойством {{jsxref("Error.prototype.name", "name")}} используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.</p> +<p>По умолчанию, свойство <code>message</code> является пустой строкой, но это поведение может быть переопределено для экземпляра путём указания сообщения первым аргументом в конструкторе объекта {{jsxref("Global_Objects/Error", "Error")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Throwing_a_custom_error" name="Example:_Throwing_a_custom_error">Пример: выбрасывание собственной ошибки</h3> +<pre class="brush: js">var e = new Error('Невозможно разобрать входные данные'); +// e.message равно 'Невозможно разобрать входные данные' +throw e; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.4.3', 'Error.prototype.message')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error.prototype.message', 'Error.prototype.message')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.name")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/name/index.html b/files/ru/web/javascript/reference/global_objects/error/name/index.html new file mode 100644 index 0000000000..856ded3954 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/name/index.html @@ -0,0 +1,108 @@ +--- +title: Error.prototype.name +slug: Web/JavaScript/Reference/Global_Objects/Error/name +tags: + - Error + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/name +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>name</strong></code> представляет имя типа ошибки. Начальное значение равно строке <code>"Error"</code>.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>По умолчанию, экземпляры {{jsxref("Error")}} имеют имя <code>"Error"</code>. Свойство <code>name</code>, вместе со свойством {{jsxref("Error.prototype.message", "message")}}, используется методом {{jsxref("Error.prototype.toString()")}} для создания строкового представления ошибки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Throwing_a_custom_error" name="Example:_Throwing_a_custom_error">Пример: выбрасывание собственной ошибки</h3> +<pre class="brush: js">var e = new Error('Неверные входные данные'); // e.name равно 'Error' + +e.name = 'ParseError'; +throw e; +// e.toString() вернёт 'ParseError: Неверные входные данные' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.4.2', 'Error.prototype.name')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error.prototype.name', 'Error.prototype.name')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.message")}}</li> + <li>{{jsxref("Error.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/prototype/index.html b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html new file mode 100644 index 0000000000..a31d760836 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/prototype/index.html @@ -0,0 +1,154 @@ +--- +title: Error.prototype +slug: Web/JavaScript/Reference/Global_Objects/Error/prototype +tags: + - Error + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Error +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <code><strong>Error.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("Global_Objects/Error", "Error")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Все экземпляры {{jsxref("Global_Objects/Error", "Error")}} и экземпляры {{jsxref("Global_Objects/Error", "неуниверсальных ошибок", "#Error_types", 1)}} наследуются от <code>Error.prototype</code>. Как и со всеми функциями-конструкторами, вы можете использовать прототип конструктора для добавления свойств и методов ко всем экземплярам, создаваемым этим конструктором.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<h3 id="Standard_properties" name="Standard_properties">Стандартные свойства</h3> + +<dl> + <dt><code>Error.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра ошибки.</dd> + <dt>{{jsxref("Error.prototype.message")}}</dt> + <dd>Сообщение ошибки.</dd> + <dt>{{jsxref("Error.prototype.name")}}</dt> + <dd>Название ошибки.</dd> +</dl> + +<h3 id="Vendor-specific_extensions" name="Vendor-specific_extensions">Расширения вендоров</h3> + +<div>{{non-standard_header}}</div> + +<h4 id="Microsoft" name="Microsoft">Microsoft</h4> + +<dl> + <dt>{{jsxref("Error.prototype.description")}}</dt> + <dd>Описание ошибки. Аналогично свойству {{jsxref("Error.prototype.message", "message")}}.</dd> + <dt>{{jsxref("Error.prototype.number")}}</dt> + <dd>Номер ошибки.</dd> +</dl> + +<h4 id="Mozilla" name="Mozilla">Mozilla</h4> + +<dl> + <dt>{{jsxref("Error.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка.</dd> + <dt>{{jsxref("Error.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка.</dd> + <dt>{{jsxref("Error.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка.</dd> + <dt>{{jsxref("Error.prototype.stack")}}</dt> + <dd>Стек вызовов.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Error.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает строку, содержащую исходный код указанного объекта {{jsxref("Global_Objects/Error", "Error")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Error.prototype.toString()")}}</dt> + <dd>Возвращает строку, представляющую указанный объект. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.3.1', 'Error')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error.prototype', 'Error')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("Object.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/stack/index.html b/files/ru/web/javascript/reference/global_objects/error/stack/index.html new file mode 100644 index 0000000000..de0f95e041 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/stack/index.html @@ -0,0 +1,147 @@ +--- +title: Error.prototype.stack +slug: Web/JavaScript/Reference/Global_Objects/Error/Stack +tags: + - Error + - JavaScript + - Non-standard + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Error/Stack +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Нестандартное свойство <strong><code>stack</code></strong> объекта {{jsxref("Error")}} возвращает трассировку стека вызываемых функций в порядке их выполнения, вместе с номерами строк, именами файлов и аргументами. Строка со стеком заполняется от самых недавних вызовов до вызова из глобальной области видимости.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Каждый шаг находится на отдельной строке; первая часть строки содержит имя функции (если это не вызов из глобальной области видимости), затем знак собаки (<code>@</code>), местоположение файла (кроме случая, когда функция является конструктором ошибки, которую она выбрасывает), двоеточие и, если есть местоположение файла, номер строки. Обратите внимание, что объект {{jsxref("Error")}} также обладает свойствами <code>fileName</code>, <code>lineNumber</code> и <code>columnNumber</code>, позволяющими извлечь имя файла, номер строки и столбца из выброшенной ошибки (но только самой ошибки, а не всего стека вызовов).</p> +<p>Обратите внимание, что такой формат используется в Firefox. Нет никакого «стандартного формата». Однако, Safari 6+ и Opera 12- используют очень похожий формат. С другой стороны, браузеры, использующие движок JavaScript V8 (например, Chrome, Opera 15+, Браузер Android) и IE10+, используют другой формат (смотрите эту статью по <a class="external" href="http://msdn.microsoft.com/ru-ru/library/windows/apps/hh699850.aspx"><code>error.stack</code></a> в MSDN).</p> +<p><strong>Значения аргументов в стеке</strong>: до Firefox 14 ({{bug("744842")}}) за именем функции и прямо перед знаком собаки (<code>@</code>) в круглых скобках следовали значения аргументов, преобразованные в строки. Хотя объекты (или массивы и прочее) преобразовывались в форму <code>"[object Object]"</code>, и, таким образом, невозможно было узнать их содержимое, скалярные значения могли быть извлечены (это всё ещё можно использовать в Firefox 14 — однако проще для получения аргументов использовать <code>arguments.callee.caller.arguments</code>, а для получения имени функции — <code>arguments.callee.caller.name</code>). Значение <code>"undefined"</code> показывалось как <code>"(void 0)"</code>. Обратите внимание, что если строковые аргументы содержали значения, включающие символы <code>"@"</code>, <code>"("</code>, <code>")"</code> (или если они включали имена файлов), вам не так то просто было разбить строку на составные части. Таким образом, в Firefox 14 и более поздних версиях это перестало быть проблемой.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<p>Следующая разметка HTML демонстрирует использование свойства <code>stack</code>.</p> +<pre class="brush: html"><!DOCTYPE HTML> +<meta charset="UTF-8"> +<title>Пример трассировки стека</title> +<body> +<script> +function trace() { + try { + throw new Error('Моя ошибка'); + } + catch(e) { + alert(e.stack); + } +} +function b() { + trace(); +} +function a() { + b(3, 4, '\n\n', undefined, {}); +} +a('первый вызов, первый аргумент'); +</script> +</pre> +<p>Предполагается, что разметка выше сохранена как <code>C:\example.html</code> в файловой системе Windows. Она выводит следующий текст в диалоговом окне:</p> +<p>Начиная с Firefox 30 и более поздних версий, вывод содержит номер колонки ({{bug("762556")}}):</p> +<pre><samp>trace@file:///C:/example.html:9:17 +b@file:///C:/example.html:16:13 +a@file:///C:/example.html:19:13 +@file:///C:/example.html:21:9</samp></pre> +<p>с Firefox 14 по Firefox 29:</p> +<pre><samp>trace@file:///C:/example.html:9 +b@file:///C:/example.html:16 +a@file:///C:/example.html:19 +@file:///C:/example.html:21</samp></pre> +<p>Firefox 13 и более ранние версии выводят следующий текст:</p> +<pre><samp>Error("Моя ошибка")@:0 +trace()@file:///C:/example.html:9 +b(3,4,"\n\n",(void 0),[object Object])@file:///C:/example.html:16 +a("первый вызов, первый аргумент")@file:///C:/example.html:19 +@file:///C:/example.html:21</samp></pre> + +<h3 id="Stack_of_eval'ed_code" name="Stack_of_eval'ed_code">Стек кода в функции <code>eval()</code></h3> +<p>Начиная с Firefox 30 {{geckoRelease("30")}}, стек вызовов кода в вызовах <code>Function()</code> и <code>eval()</code> даёт более подробную информацию о номере строки и колонки внутри этих вызовов. Вызовы <code>Function</code> обозначаются <code>"> Function"</code>, а вызовы <code>eval()</code> обозначаются <code>"> eval"</code>. Смотрите {{bug("332176")}}.</p> +<pre class="brush: js">try { + new Function('throw new Error()')(); +} catch (e) { + console.log(e.stack); +} + +// anonymous@file:///C:/example.html line 7 > Function:1:1 +// @file:///C:/example.html:7:6 + + +try { + eval("eval('FAIL')"); +} catch (x) { + console.log(x.stack); +} + +// @file:///C:/example.html line 7 > eval line 1 > eval:1:1 +// @file:///C:/example.html line 7 > eval:1:1 +// @file:///C:/example.html:7:6 +</pre> +<p>Также для именования исходного кода в функции <code>eval()</code> вы можете использовать директиву <code>//# sourceURL</code>. Смотрите раздел <a href="/ru/docs/Tools/Debugger/How_to/Debug_eval_sources">Отладка исходных кодов в функции <code>eval()</code></a> в документации по <a href="/ru/docs/Tools/Debugger">отладчику</a>, а также эту <a href="http://fitzgeraldnick.com/weblog/59/">запись в блоге</a> (на английском).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является чаcтью какой-либо спецификации. Не стандартно.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("10")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatSafari("6")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>Android 4 (возможно, Android 3, но не Android 2)</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatSafari("6")}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a href="/ru/docs/Components.stack">Components.stack</a></li> + <li>Внешние проекты: <a class="link-https" href="https://github.com/csnover/TraceKit/">TraceKit</a> и <a class="link-https" href="https://github.com/eriwen/javascript-stacktrace">javascript-stacktrace</a></li> + <li>MSDN: документация по <a class="external" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh699850.aspx">error.stack</a></li> + <li><a href="https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi">Обзор API трассировки стека в движке JavaScript V8</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/tosource/index.html b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html new file mode 100644 index 0000000000..7cc274da14 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tosource/index.html @@ -0,0 +1,88 @@ +--- +title: Error.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Error/toSource +tags: + - Error + - JavaScript + - Method + - Non-standard + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toSource +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toSource()</strong></code> возвращает код, вычисление которого приведёт к этой же ошибке.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>e</var>.toSource()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Вызов метода <code>toSource</code> на экземпляре класса {{jsxref("Error")}} (включая <i><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types">родные ошибки</a></i>) вернёт строку, содержащую исходный код ошибки. Эта строка может быть выполнена для создания (приблизительно) эквивалентного объекта. Естественно, строка, содержащая исходный код, следует структуре конструктора объекта {{jsxref("Error")}}. Например:</p> +<pre class="brush: js">(new <i>name</i>(<i>message</i>, <i>fileName</i>, <i>lineNumber</i>)) +</pre> +<p>здесь атрибуты относятся к соответствующим свойствам экземпляра ошибки.</p> +<div class="note"> + <p><strong>Обратите внимание:</strong> имейте в виду, что свойства, используемые методом <code>toSource</code> при создании строки, изменяемы и могут неточно отражать функцию, с помощью которой создан экземпляр ошибки, или имя файла, или номер строки, где возникла ошибка.</p> +</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является чаcтью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.fileName")}}</li> + <li>{{jsxref("Error.prototype.lineNumber")}}</li> + <li>{{jsxref("Error.prototype.message")}}</li> + <li>{{jsxref("Error.prototype.name")}}</li> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/error/tostring/index.html b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html new file mode 100644 index 0000000000..22d4157c81 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/error/tostring/index.html @@ -0,0 +1,136 @@ +--- +title: Error.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Error/toString +tags: + - Error + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Error/toString +--- +<div> + {{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toString()</strong></code> возвращает строку, представляющую указанный объект {{jsxref("Error")}}.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>e</var>.toString()</code></pre> +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Error")}} переопределяет метод {{jsxref("Object.prototype.toString()")}}, унаследованный всеми объектами. Его семантика следующая (предполагается, что объекты {{jsxref("Object")}} и {{jsxref("String")}} имеют свои изначальные значения):</p> +<pre class="brush: js">Error.prototype.toString = function() { + 'use strict'; + + var obj = Object(this); + if (obj !== this) { + throw new TypeError(); + } + + var name = this.name; + name = (name === undefined) ? 'Error' : String(name); + + var msg = this.message; + msg = (msg === undefined) ? '' : String(msg); + + if (name === '') { + return msg; + } + if (msg === '') { + return name; + } + + return name + ': ' + msg; +}; +</pre> +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">var e = new Error('непоправимая ошибка'); +print(e.toString()); // 'Error: непоправимая ошибка' + +e.name = undefined; +print(e.toString()); // 'Error: непоправимая ошибка' + +e.name = ''; +print(e.toString()); // 'непоправимая ошибка' + +e.message = undefined; +print(e.toString()); // 'Error' + +e.name = 'привет'; +print(e.toString()); // 'привет' +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.4.4', 'Error.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-error.prototype.tostring', 'Error.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/escape/index.html b/files/ru/web/javascript/reference/global_objects/escape/index.html new file mode 100644 index 0000000000..faaef7049c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/escape/index.html @@ -0,0 +1,120 @@ +--- +title: escape() +slug: Web/JavaScript/Reference/Global_Objects/escape +translation_of: Web/JavaScript/Reference/Global_Objects/escape +--- +<div>{{jsSidebar("Objects")}} {{deprecated_header}}</div> + +<p>Устаревший метод <code><strong>escape()</strong></code> возвращает новую строку, в которой определенные символы заменены шестнадцаричной управляющей последовательностью. Используйте методы {{jsxref("encodeURI")}} или {{jsxref("encodeURIComponent")}} вместо него.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>escape(str)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Строка для кодирования.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Функция <code>escape() является свойством </code><em>глобального объекта</em>, т.е. относится к глобальным функциям. <span>Эта функция</span> <span>кодирует</span> <span>специальные символы</span>, <span>за исключением</span>: @*_+-./</p> + +<p>The hexadecimal form for characters, whose code unit value is 0xFF or less, is a two-digit escape sequence: %xx. For characters with a greater code unit, the four-digit format %<strong>u</strong>xxxx is used.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">escape("abc123"); // "abc123" +escape("текст"); // "%u0442%u0435%u043A%u0441%u0442" +escape("ć"); // "%u0107" + +/* специальные символы */ +escape("@*_+-./"); // "@*_+-./"</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Начальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-B.2.1', 'escape')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Defined in the (informative) Compatibility Annex B</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-escape-string', 'escape')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Defined in the (normative) Annex B for Additional ECMAScript Features for Web Browsers</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("encodeURI")}}</li> + <li>{{jsxref("encodeURIComponent")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/eval/index.html b/files/ru/web/javascript/reference/global_objects/eval/index.html new file mode 100644 index 0000000000..ee90713bde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/eval/index.html @@ -0,0 +1,213 @@ +--- +title: eval() +slug: Web/JavaScript/Reference/Global_Objects/eval +tags: + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/eval +--- +<div>{{jsSidebar("Objects")}}</div> + +<div class="blockIndicator warning"> +<p><strong>Warning:</strong> <font>Выполнение кода JavaScript с текстовой строки - это невероятный риск для безопасности. </font><font>Злоумышленнику слишком легко запустить какой угодно код, когда вы используете</font> <code>eval()</code>. Смотрите <a href="#Не_используйте_eval_без_необходимости!">Никогда не изпользуте eval()!</a>, ниже.</p> +</div> + +<p>Метод <code><strong>eval()</strong></code> выполняет JavaScript код, представленный строкой.</p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-eval.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>eval(<em>string</em>)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>string</code></dt> + <dd>Строка, представленная JavaScript выражением, оператором или последовательностью операторов. Выражение может содержать переменные и свойства существующих объектов.</dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + </dt> + <dd>Возвращает значение выполнения кода, переданного в функцию в виде строки. Если код не возвращает ничего - будет возвращено значение {{jsxref("undefined")}}.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p><code>eval()</code> - функция глобального объекта.</p> + +<p>Аргумент функции <code>eval()</code> - строка. <code>eval()</code> исполняет содержащееся в строке выражение, один или несколько операторов JavaScript. Не стоит вызывать <code>eval()</code> для определения значения арифметического выражения; JavaScript вычисляет их автоматически.</p> + +<p><code>eval()</code> можно использовать для вычисления значения арифметического выражения, записанного в строковом виде, на более поздней стадии исполнения. Предположим, существует переменная <code>x</code>. Можно отложить вычисление выражения, в котором содержится <code>х</code>, если присвоить переменной это выражение в виде строки (допустим, "<code>3 * x + 2</code>"), а затем вызвать <code>eval()</code> в более поздней точке кода.</p> + +<p>Если аргумент, переданный <code>eval()</code>, не является строкой, <code>eval() </code>возвращает его неизменным. В следующем примере определен конструктор <code>String</code>, и <code>eval()</code> не вычисляет значение выражения, записанного в строковом виде, а возвращает объект типа <code>String</code>.</p> + +<pre class="brush:js notranslate">eval(new String("2 + 2")); // возвращает объект типа String, содержащий "2 + 2" +eval("2 + 2"); // возвращает 4 +</pre> + +<p>Это ограничение легко обойти при помощи <code>toString()</code>.</p> + +<pre class="brush:js notranslate">var expression = new String("2 + 2"); +eval(expression.toString()); +</pre> + +<p>Если вы используете <code>eval</code> косвенно, вызовом его через ссылку, а не просто <code>eval</code>, в<a href="http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.2"> ECMAScript 5</a> это работает в глобальной области видимости, а не в локальной; это значит, что <code>eval</code> будет вызван в глобальной области видимости, а код будет выполнен с отсутвием доступа к локальным переменным в пределах области видимости, где он был вызван.</p> + +<pre class="brush:js notranslate">function test() { + var x = 2, y = 4; + console.log(eval("x + y")); // Прямой вызов, использует локальную области видимости, результат - 6 + var geval = eval; + console.log(geval("x + y")); // Непрямой вызов, использует глобальную область видимости, бросит ReferenceError, т.к. `x` - не определен +} +</pre> + +<h2 id="Не_используйте_eval_без_необходимости!"><a name="dont-use-it"><code><font face="Open Sans, Arial, sans-serif">Н</font>е используйте eval без необходимости!</code></a></h2> + +<p><code>eval()</code> - опасная функция, которая выполняет код, проходящий со всеми привилегиями вызывателя. Если вы запускаете <code>eval()</code> со строкой, на которую могут влиять злоумышленники, то вы можете запустить вредоносный код на устройство пользователя с правами вашей веб-страницы/расширения. Наиболее важно, код третьей стороны может видеть область видимости, в которой был вызван <code>eval()</code>, что может может привести к атакам, похожим на {{jsxref("Global_Objects/Function", "Function")}}.</p> + +<p><code>Также eval(),</code>как правило, медленнее альтернатив, так как вызывает интерпретатор JS, тогда как многие другие конструкции оптимизированы современными JS движками.</p> + +<p>Есть безопасные (и быстрые!) альтернативы <code>eval()</code> для общих случаев использования.</p> + +<h3 id="Доступ_к_свойствам">Доступ к свойствам</h3> + +<p>Вам не следует использовать <code>eval()</code>, чтобы конвертировать имена свойств в свойства. Рассматривая следующий пример, где свойство объекта используемое для доступа неизвестно до выполнения кода. Это можно сделать с eval:</p> + +<pre class="brush:js notranslate">var obj = { a: 20, b: 30 }; +var propname = getPropName(); // возвращает "a" или "b" + +eval( "var result = obj." + propname ); +</pre> + +<p>Однако, <code>eval()</code> здесь не нужен. По факту, использование здесь его удивляет. Вместо него используйте <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors" title="JavaScript/Reference/Operators/Member_Operators">доступ к свойствам</a>, который быстрее и безопаснее:</p> + +<pre class="brush:js notranslate">var obj = { a: 20, b: 30 }; +var propname = getPropName(); // возвращает "a" или "b" +var result = obj[ propname ]; // obj[ "a" ] то же, что и obj.a +</pre> + +<h3 id="Используйте_функции_вместо_исполнения_фрагментов_кода">Используйте функции вместо исполнения фрагментов кода</h3> + +<p>У JavaScript <a class="external" href="http://en.wikipedia.org/wiki/First-class_function" title="http://en.wikipedia.org/wiki/First-class_function">функции первого класса</a>, что значит, что вы можете передавать функции как аргументы, хранить их в переменных или свойвах объектах и так далее. Многие DOM API созданы с учетом этого, так что вы можете (и вам следует) писать:</p> + +<pre class="brush: js notranslate">// вместо setTimeout(" ... ", 1000) : +setTimeout(function() { ... }, 1000); + +// вместо elt.setAttribute("onclick", "...") использовать: +elt.addEventListener("click", function() { ... } , false); </pre> + +<p><a href="/en-US/docs/Web/JavaScript/Closures" title="JavaScript/Guide/Closures">Замыкания</a> также полезны как способ создания функций с параметрами без конкатенации строк.</p> + +<h3 id="Разбор_JSON_конвертирование_строк_в_JavaScript_объекты">Разбор JSON (конвертирование строк в JavaScript объекты)</h3> + +<p>Если строка, переданная в <code>eval()</code>, содержит данные (к примеру, массив: <code>"[1, 2, 3]"</code>), а не код, вам следует рассмотреть <a href="/en-US/docs/Glossary/JSON" title="JSON">JSON</a>, позволяющий строке использовать подмножество JavaScript синтаксиса для представления данных. Смотрите также: <a href="/en-US/docs/Downloading_JSON_and_JavaScript_in_extensions" title="Downloading_JSON_and_JavaScript_in_extensions">Загрузка JSON и JavaScript в расширениях</a>.</p> + +<p>Заметьте, что синтаксис JSON ограничен в сравнении с JavaScript синтаксисом, многие валидные JavaScript литералы не распарсятся в JSON. К примеру, лишние запятые в конце выражений не разрешены в JSON, а имена свойств (ключи) в объектах должны быть в двойных кавычках. Будьте уверены использовать серилизацию JSON для создания строк, которые потом будут разбираться как JSON.</p> + +<h3 id="Передавайте_данные_вместо_кода">Передавайте данные вместо кода</h3> + +<p>К примеру, расширение, созданное изменять содержимое веб-страниц, должно иметь правила, определенные в <a href="/en-US/docs/XPath" title="XPath">XPath</a>, а не JS коде.</p> + +<h3 id="Выполняйте_код_с_ограниченными_правами">Выполняйте код с ограниченными правами</h3> + +<p>Если выполнять код всё-таки необходимо, желательно это делать с уменьшенными привелегиями. Этот совет подходит, главным образом, к расширениям и XUL приложениям, которые могут использовать <a href="/en-US/docs/Components.utils.evalInSandbox" title="Components.utils.evalInSandbox">Components.utils.evalInSandbox</a>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_eval">Использование <code>eval</code></h3> + +<p>В следующем коде оба выражения содержат <code>eval()</code>, возвращающий 42. Первое определяется строкой "<code>x + y + 1</code>"; второе - строкой "<code>42</code>".</p> + +<pre class="brush:js notranslate">var x = 2; +var y = 39; +var z = "42"; +eval("x + y + 1"); // возвращает 42 +eval(z); // вернёт 42 +</pre> + +<h3 id="Использование_eval_для_исполнения_строки_содержащей_операторы_JavaScript">Использование <code>eval</code> для исполнения строки, содержащей операторы JavaScript</h3> + +<p>Следующий пример использует <code>eval()</code> для получения значения выражения <code>str</code>. Эта строка состоит из JavaScript выражений, печатающих в консоль, и, если x равен пяти, присвающих z значение 42, или 0 в противном случае. Когда второе выражение будет исполнено, <code>eval()</code> будет считать выражения выполненными, а также это установит значение выражению переменной z и вернет его.</p> + +<pre class="brush:js notranslate">var x = 5; +var str = "if (x == 5) {console.log('z is 42'); z = 42;} else z = 0; "; + +console.log("z is ", eval(str));</pre> + +<h3 id="Последнее_выражение_выполняется">Последнее выражение выполняется</h3> + +<p><code>eval()</code> вернет значение последнего выполняемого выражения</p> + +<pre class="brush:js notranslate">var str = "if ( a ) { 1+1; } else { 1+2; }"; +var a = true; +var b = eval(str); // вернёт 2 + +console.log("b is : " + b); + +a = false; +b = eval(str); // вернёт 3 + +console.log("b is : " + b);</pre> + +<h3 id="eval_как_строковое_определение_функции_включающее_и_как_префикс_и_суффикс"><code>eval</code> как строковое определение функции, включающее "(" и ")" как префикс и суффикс</h3> + +<pre class="brush:js notranslate">var fctStr1 = "function a() {}" +var fctStr2 = "(function a() {})" +var fct1 = eval(fctStr1) // вернёт undefined +var fct2 = eval(fctStr2) // вернёт функцию +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 1st Edition.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.2.1', 'eval')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-eval-x', 'eval')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div id="compat-mobile"> +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.eval")}}</p> +</div> + +<h3 id="Gecko-специфичные_замечания">Gecko-специфичные замечания</h3> + +<ul> + <li>Исторически <code>eval()</code> имел второй необязательный аргумент, указывающий на то, в контексте какого объекта будет выполняться выражение. Этот аргумент не был стандартизован и был удален из SpiderMonkey в Gecko 1.9.1 (Firefox 3.5). См. {{bug(442333)}}.</li> +</ul> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/uneval", "uneval()")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">Доступ к свойствам</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/evalerror/index.html b/files/ru/web/javascript/reference/global_objects/evalerror/index.html new file mode 100644 index 0000000000..016930c2aa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/evalerror/index.html @@ -0,0 +1,146 @@ +--- +title: EvalError +slug: Web/JavaScript/Reference/Global_Objects/EvalError +tags: + - Error + - EvalError + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Объект <strong><code>EvalError</code></strong> представляет ошибку, возникающую в глобальной функции {{jsxref("Global_objects/eval()", "eval()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>new EvalError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Исключение <code>EvalError</code> выбрасывается при неправильном использовании глобальной функции {{jsxref("Global_objects/eval()", "eval()")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt>{{jsxref("EvalError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>EvalError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Глобальный объект <code>EvalError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="EvalError_instances" name="EvalError_instances">Экземпляры объекта <code>EvalError</code></h2> + +<h3 id="Properties_2" name="Properties_2">Свойства</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Properties')}}</div> + +<h3 id="Methods_2" name="Methods_2">Методы</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/EvalError/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> +<p>Объект <code>EvalError</code> в настоящий момент не используется и он никогда не выбрасывается в процессе выполнения.</p> + +<h3 id="Example:_Create_an_EvalError" name="Example:_Create_an_EvalError">Пример: создание экземпляра объекта <code>EvalError</code></h3> +<pre class="brush: js">try { + throw new EvalError('Привет', 'someFile.js', 10); +} catch (e) { + console.log(e instanceof EvalError); // true + console.log(e.message); // "Привет" + console.log(e.name); // "EvalError" + console.log(e.fileName); // "someFile.js" + console.log(e.lineNumber); // 10 + console.log(e.columnNumber); // 0 + console.log(e.stack); // "@Scratchpad/2:2:9\n" +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.1', 'EvalError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Не используется в этой спецификаци. Присутствует для обратной совместимости.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-evalerror', 'EvalError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Не используется в этой спецификаци. Присутствует для обратной совместимости.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("EvalError.prototype")}}</li> + <li>{{jsxref("Global_objects/eval", "eval()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html new file mode 100644 index 0000000000..d8d02e3709 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/evalerror/prototype/index.html @@ -0,0 +1,121 @@ +--- +title: EvalError.prototype +slug: Web/JavaScript/Reference/Global_Objects/EvalError/prototype +tags: + - Error + - EvalError + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/EvalError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>EvalError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("EvalError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("EvalError")}} наследуются от объекта <code>EvalError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>EvalError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "EvalError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("EvalError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "EvalError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "EvalError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "EvalError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "EvalError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "EvalError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("EvalError")}} не содержит собственных методов, экземпляры {{jsxref("EvalError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/float32array/index.html b/files/ru/web/javascript/reference/global_objects/float32array/index.html new file mode 100644 index 0000000000..dec9a2b937 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/float32array/index.html @@ -0,0 +1,202 @@ +--- +title: Float32Array +slug: Web/JavaScript/Reference/Global_Objects/Float32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float32Array +--- +<div>{{JSRef}}</div> + +<p>Объект<strong><code> Float32Array</code></strong> представляет типизированный массив 32-битных чисел с плавающей запятой (соответствует типу float в языке C) с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте <a class="new" href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/DataView" rel="nofollow" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>DataView</code></a>. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Float32Array</code></strong>, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки).</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new Float32Array(); // new in ES2017 +new Float32Array(length); +new Float32Array(typedArray); +new Float32Array(object); +new Float32Array(buffer [, byteOffset [, length]]);</pre> + +<p>Для более подробной информации о синтаксисе конструктора и его параметрах смотрите <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float32Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Возвращает число, соответствующее размеру элемента массива в байтах. Для <code>Float32Array</code> это <code>4</code>.</dd> + <dt>Float32Array.length</dt> + <dd>Статическое свойство "длина" со значением 0. Если хотите получить актуальную длину массива (число элементов) используйте {{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Float32Array.name")}}</dt> + <dd>Возвращает строковое представление названия конструктора. В данном случае <code>Float32Array</code> вернёт <code>"Float32Array"</code>.</dd> + <dt>{{jsxref("TypedArray.prototype", "Float32Array.prototype")}}</dt> + <dd>Прототип объекта <code>TypedArray</code>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Float32Array.from()")}}</dt> + <dd>Создаёт новый <code>Float32Array</code> из массивоподобного или итерируемого объекта. Смотрите также {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Float32Array.of()")}}</dt> + <dd>Создаёт новый <code>Float32Array</code> с заданным числом элементов. Смотрите также {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Float32Array_prototype"><code>Float32Array</code> prototype</h2> + +<p><code> </code>Любые <code>Float32Array</code> объекты наследуются от {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Свойства_2">Свойства</h3> + +<dl> + <dt><code>Float32Array.prototype.constructor</code></dt> + <dd>Возвращает функцию, которая создаёт экземпляр прототипа. В данном случае это конструктор <code>Float32Array</code>.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Float32Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Возвращает {{jsxref("ArrayBuffer")}}, на который ссылается <code>Float32Array.</code> Автоматически изменяется при операциях над массивом и поэтому доступен <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Float32Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Возвращает длину в байтах для <code>Float32Array</code> с начала его {{jsxref("ArrayBuffer")}}. Автоматически изменяется при операциях над массивом и поэтому доступен <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Float32Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Возвращает смещение (в байтах) <code>Float32Array</code> относительно начала {{jsxref("ArrayBuffer")}}. Автоматически изменяется при операциях над массивом и поэтому доступен <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.length", "Float32Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Возвращает число элементов, хранящихся в <code>Float32Array</code>. Автоматически изменяется при операциях над массивом и поэтому доступен <strong>только для чтения</strong>.</dd> +</dl> + +<h3 id="Методы_2">Методы</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}</dt> + <dd>Копирует последовательность элементов в массив. Смотрите также {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Float32Array.prototype.entries()")}}</dt> + <dd>Возвращает новый объект <code>Array Iterator</code>, который содержит пары ключ-значение для каждого элемента в массиве. Смотрите также {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Float32Array.prototype.every()")}}</dt> + <dd>Проверяет, что все элементы в массиве соответствуют условию. Смотрите также {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Float32Array.prototype.fill()")}}</dt> + <dd>Заполняет весь массив от начального до последнего индекса одинаковыми элементами. Смотрите также {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Float32Array.prototype.filter()")}}</dt> + <dd>Возвращает новый массив со всеми элементами удовлетворяющеми условию. Смотрите также {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Float32Array.prototype.find()")}}</dt> + <dd>Возвращает найденное значение в массиве, если найден элемент соответствуший условию, в противном случае возвращает <code>undefined</code>. Смотрите также {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Float32Array.prototype.findIndex()")}}</dt> + <dd>Возвращает индекс найденного значения в массиве, если найден элемент соответствуеший условию, в противном случае возвращает <font face="Consolas, Liberation Mono, Courier, monospace">-1</font>. Смотрите также {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Float32Array.prototype.forEach()")}}</dt> + <dd>Вызывает функцию для каждого элемента в массиве. Смотрите также {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Float32Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Проверяет что массив включает себя элемент, возвращает соответственно true или false. Смотрите также {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Float32Array.prototype.indexOf()")}}</dt> + <dd>Возвращает индекс элемента соответствующего условию (равен значению), в противном случае возвращает -1. Смотрите также {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Float32Array.prototype.join()")}}</dt> + <dd>Объединяет элементы массива в строку. Смотрите также {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Float32Array.prototype.keys()")}}</dt> + <dd>Возвращает новый <code>Array Iterator,</code> который содержит ключи элементов в массиве. Смотрите также {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Float32Array.prototype.lastIndexOf()")}}</dt> + <dd>Возвращает последний найденный индекс соответствующий искомому значению, в противном случае возвращает - 1. Смотрите также {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Float32Array.prototype.map()")}}</dt> + <dd>Возвращает новый массив с результатом применения функции к каждому элементу в этом массиве. Смотрите также {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Float32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Нестандаризированная версия {{jsxref("TypedArray.copyWithin", "Float32Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Float32Array.prototype.reduce()")}}</dt> + <dd>Применяет функцию к каждому элементу в массиве (слева-направо) и накапливает результат в переменной. Смотрите также {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Float32Array.prototype.reduceRight()")}}</dt> + <dd>Применяет функцию к каждому элементу в массиве (справа-налево) и накапливает результат в переменной. Смотрите также {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Float32Array.prototype.reverse()")}}</dt> + <dd>Переставляет элементы массива в обратном порядке - первый становится последним и так далее. Смотрите также {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Float32Array.prototype.set()")}}</dt> + <dd>Сохраняет значения в массиве.</dd> + <dt>{{jsxref("TypedArray.slice", "Float32Array.prototype.slice()")}}</dt> + <dd>Выделяет часть массива и возвращает новый с этими значениями. Смотрите также {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Float32Array.prototype.some()")}}</dt> + <dd>Возвращает true если хотя бы один элемент удовлетворяет условию. Смотрите также {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Float32Array.prototype.sort()")}}</dt> + <dd>Сортирует элементы массива по порядку и возвращает этот массив. Смотрите также {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Float32Array.prototype.subarray()")}}</dt> + <dd><code>Возваращает новый Float32Array</code> с заданного начального по конечный индекс.</dd> + <dt>{{jsxref("TypedArray.values", "Float32Array.prototype.values()")}}</dt> + <dd>Возвращает новый объект <code>Array Iterator</code> котрый содержит значения всех элементов в массиве. Смотрите также {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Float32Array.prototype.toLocaleString()")}}</dt> + <dd>Возвращает локализированную строку представляющую массив и его элементы. Смотрите также {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Float32Array.prototype.toString()")}}</dt> + <dd>Возвращает строку представляющую массив и его элементы. Смотрите также {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Float32Array.prototype[@@iterator]()")}}</dt> + <dd><code>Возвращает новый объект Array Iterator который содержит значения всех элементов в массиве.</code></dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p>Разные способы создания <code>Float32Array</code>:</p> + +<pre class="brush: js">// Используя указание длины +var float32 = new Float32Array(2); +float32[0] = 42; +console.log(float32[0]); // 42 +console.log(float32.length); // 2 +console.log(float32.BYTES_PER_ELEMENT); // 4 + +// Из массива +var arr = new Float32Array([21,31]); +console.log(arr[1]); // 31 + +// Из другого TypedArray +var x = new Float32Array([21, 31]); +var y = new Float32Array(x); +console.log(y[0]); // 21 + +// Из другого ArrayBuffer +var buffer = new ArrayBuffer(16); +var z = new Float32Array(buffer, 0, 4); + +<code class="language-js"><span class="comment token">// Из итератора </span> +<span class="keyword token">var</span> iterable <span class="operator token">=</span> <span class="keyword token">function</span><span class="operator token">*</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">{</span> <span class="keyword token">yield</span><span class="operator token">*</span> <span class="punctuation token">[</span><span class="number token">1</span><span class="punctuation token">,</span><span class="number token">2</span><span class="punctuation token">,</span><span class="number token">3</span><span class="punctuation token">]</span><span class="punctuation token">;</span> <span class="punctuation token">}</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="keyword token">var</span> float32 <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">Float32Array</span><span class="punctuation token">(</span>iterable<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="comment token">// Float32Array[1, 2, 3]</span></code></pre> + + + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Заменены в ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Первоначальное появление в стандарте ECMA. Показывает что <code>new обязательно</code>.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Float32Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Браузерная_совместимость">Браузерная совместимость</h2> + + + +<p>{{Compat("javascript.builtins.Float32Array")}}</p> + + + +<h2 id="Заметки_по_совместимости">Заметки по совместимости</h2> + +<p>Начиная с ECMAScript 2015 (ES6), <code>Float32Array</code> конструктор обязательно должен вызываться с ключевым словом {{jsxref("Operators/new", "new")}}. Вызов <code>Float32Array</code> конструктора как функцию приведет к исключению {{jsxref("TypeError")}}.</p> + +<pre class="brush: js example-bad">var dv = Float32Array([1, 2, 3]); +// TypeError: calling a builtin Float32Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Float32Array([1, 2, 3]);</pre> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/float64array/index.html b/files/ru/web/javascript/reference/global_objects/float64array/index.html new file mode 100644 index 0000000000..732a6a0667 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/float64array/index.html @@ -0,0 +1,199 @@ +--- +title: Float64Array +slug: Web/JavaScript/Reference/Global_Objects/Float64Array +translation_of: Web/JavaScript/Reference/Global_Objects/Float64Array +--- +<div>{{JSRef}}</div> + +<p>Объект<strong><code> </code></strong><strong><code>Float64Array</code></strong> представляет типизированный массив 64-битных чисел с плавающей запятой (соответствует типу <code>double </code>в языке C) с платформо-зависимым порядком байт.Если необходим контроль за порядком байт, то вместо этого объекта используйте <a class="new" href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/DataView" rel="nofollow" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>DataView</code></a>. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Float64Array</code></strong> , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Float64Array(); // new in ES2017 +new Float64Array(length); +new Float64Array(typedArray); +new Float64Array(object); +new Float64Array(buffer [, byteOffset [, length]]);</pre> + +<p>For more information about the constructor syntax and the parameters, see <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Float64Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Returns a number value of the element size. <code>8</code> in the case of an <code>Float64Array</code>.</dd> + <dt>Float64Array.length</dt> + <dd>Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Float64Array.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Float64Array</code> type: "Float64Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Float64Array.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Float64Array.from()")}}</dt> + <dd>Creates a new <code>Float64Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Float64Array.of()")}}</dt> + <dd>Creates a new <code>Float64Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Float64Array_prototype"><code>Float64Array</code> prototype</h2> + +<p>All <code>Float64Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Float64Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Float64Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Float64Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Float64Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Float64Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Float64Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Float64Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Float64Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Float64Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Float64Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Float64Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Float64Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Float64Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Float64Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Float64Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Float64Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Float64Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Float64Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Float64Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Float64Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Float64Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Float64Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Float64Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Float64Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Float64Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Float64Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Float64Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Float64Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Float64Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Float64Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Float64Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Float64Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Float64Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Float64Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Float64Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Float64Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Float64Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Float64Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create a <code>Float64Array</code>:</p> + +<pre class="brush: js">// From a length +var float64 = new Float64Array(2); +float64[0] = 42; +console.log(float64[0]); // 42 +console.log(float64.length); // 2 +console.log(float64.BYTES_PER_ELEMENT); // 8 + +// From an array +var arr = new Float64Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Float64Array([21, 31]); +var y = new Float64Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(32); +var z = new Float64Array(buffer, 0, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var float64 = new Float64Array(iterable); +// Float64Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Float64Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Float64Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Float64Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Float64Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Float64Array([1, 2, 3]); +// TypeError: calling a builtin Float64Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Float64Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/apply/index.html b/files/ru/web/javascript/reference/global_objects/function/apply/index.html new file mode 100644 index 0000000000..538c25a654 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/apply/index.html @@ -0,0 +1,252 @@ +--- +title: Function.prototype.apply() +slug: Web/JavaScript/Reference/Global_Objects/Function/apply +tags: + - Function + - JavaScript + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Function/apply +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Общие сведения</h2> + +<p>Метод <strong><code>apply()</code></strong> вызывает функцию с указанным значением <code>this</code> и аргументами, предоставленными в виде массива (либо <a href="/ru/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Working_with_Array-like_objects">массивоподобного объекта</a>).</p> + +<div class="note"> +<p><strong>Примечание:</strong> хотя синтаксис этой функции практически полностью идентичен функции {{jsxref("Function.prototype.call()", "call()")}}, фундаментальное различие между ними заключается в том, что функция <code>call()</code> принимает список аргументов, в то время как функция <code>apply()</code> принимает единичный массив аргументов.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>fun</var>.apply(<var>thisArg</var>, [<var>argsArray</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>thisArg</code></dt> + <dd>Опциональный параметр. Значение <code>this</code>, предоставляемое для вызова функции <em><code>fun</code></em>. Обратите внимание, что <code>this</code> может не быть реальным значением, видимым этим методом: если метод является функцией в {{jsxref("Functions_and_function_scope/Strict_mode", "нестрогом режиме", "", 1)}}, значения {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}} будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.</dd> + <dt><code>argsArray</code></dt> + <dd>Опциональный параметр. Массивоподобный объект, определяющий аргументы, с которыми функция <em><code>fun</code></em> должна быть вызвана, либо {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, если в функцию не надо передавать аргументы. Начиная с ECMAScript 5 эти аргументы могут быть обобщёнными массивоподобными объектами, а не только массивом. Смотрите ниже информацию по {{anch("Browser_compatibility", "совместимости с браузерами")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Вы можете присваивать различные объекты <code>this</code> при вызове существующей функции. <code>this</code> ссылается на текущий объект, вызывающий объект. С помощью <code>apply()</code> вы можете написать метод один раз, а затем наследовать его в других объектах без необходимости переписывать метод для каждого нового объекта.</p> + +<p>Метод <code>apply</code> очень похож на метод {{jsxref("Function.prototype.call()", "call()")}}, за исключением поддерживаемого типа аргументов. Вы можете использовать массив аргументов вместо набора именованных параметров. Вместе с <code>apply</code> вы можете использовать литерал массива, например, <code><em>fun</em>.apply(this, ['есть', 'бананы'])</code>, либо объект {{jsxref("Global_Objects/Array", "Array")}}, например, <code><em>fun</em>.apply(this, new Array('есть', 'бананы'))</code>.</p> + +<p>Также вы можете использовать в качестве параметра <code>argsArray</code> псевдомассив {{jsxref("Functions_and_function_scope/arguments", "arguments")}}. <code>arguments</code> является локальной переменной функции. Он может использоваться для всех неопределённых аргументов вызываемого объекта. Таким образом, вы не обязаны знать, сколько и какие аргументы требует вызываемый объект при использовании метода <code>apply()</code>. Вы можете использовать псевдомассив <code>arguments</code> для передачи всех аргументов в вызываемый объект. Вызываемый объект самостоятельно разберётся с обработкой аргументов.</p> + +<p>Начиная с 5-го издания ECMAScript, вы также можете использовать любой вид массивоподобного объекта, что на практике означает, что он должен иметь свойство <code>length</code> и целочисленные свойства в диапазоне <code>(0...length)</code>. В качестве примера, теперь вы можете использовать {{domxref("NodeList")}} или свой собственный объект вида <code>{ 'length': 2, '0': 'есть', '1': 'бананы' }</code>.</p> + +<p>{{note("Большинство браузеров, включая Chrome 14 и Internet Explorer 9, всё ещё не принимают массивоподобные объекты и будут выбрасывать исключение.")}}</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_apply_to_chain_constructors" name="Example:_Using_apply_to_chain_constructors">Пример: использование <code>apply()</code> для связи конструкторов объекта в цепочку</h3> + +<p>Вы можете использовать метод <code>apply()</code> для объединения в цепочку {{jsxref("Operators/new", "конструкторов", "", 1)}} объекта, как в Java. В следующем примере мы создадим в объекте {{jsxref("Global_Objects/Function", "Function")}} глобальный метод <code>construct()</code>, который позволит нам использовать массивоподобные объекты с конструктором вместо списка аргументов.</p> + +<pre class="brush: js">Function.prototype.construct = function (aArgs) { + var oNew = Object.create(this.prototype); + this.apply(oNew, aArgs); + return oNew; +}; +</pre> + +<div class="note"> +<p><strong>Примечание:</strong> метод {{jsxref("Object.create()")}}, использованный в этом примере, относительно новый. В качестве альтернативного способа можно рассмотреть возможность использования замыкания:</p> + +<pre class="brush: js">Function.prototype.construct = function(aArgs) { + var fConstructor = this, fNewConstr = function() { fConstructor.apply(this, aArgs); }; + fNewConstr.prototype = fConstructor.prototype; + return new fNewConstr(); +}; +</pre> +</div> + +<p>Пример использования:</p> + +<pre class="brush: js">function MyConstructor() { + for (var nProp = 0; nProp < arguments.length; nProp++) { + this['property' + nProp] = arguments[nProp]; + } +} + +var myArray = [4, 'Привет, мир!', false]; +var myInstance = MyConstructor.construct(myArray); + +alert(myInstance.property1); // выведет 'Привет, мир!' +alert(myInstance instanceof MyConstructor); // выведет 'true' +alert(myInstance.constructor); // выведет 'MyConstructor' +</pre> + +<div class="note"> +<p><strong>Примечание:</strong> этот неродной метод <code>Function.construct()</code> не будет работать с некоторыми родными конструкторами (вроде конструктора {{jsxref("Global_Objects/Date", "Date")}}, к примеру). В этих случаях вы можете использовать метод {{jsxref("Function.prototype.bind()")}} (например, представьте, что вы имеете следующий массив, который можно использовать с конструктором {{jsxref("Global_Objects/Date", "Date")}}: <code>[2012, 11, 4]</code>; в этом случае вы напишите что-то вроде: <code>new (Function.prototype.bind.apply(Date, [null].concat([2012, 11, 4])))()</code> — так или иначе, это не самый изящный способ и, вероятно, его не стоит использовать в рабочем окружении).</p> +</div> + +<h3 id="Example_Using_apply_and_built-in_functions" name="Example:_Using_apply_and_built-in_functions">Пример: использование <code>apply()</code> и встроенных функций</h3> + +<p>Умное использование метода <code>apply()</code> позволяет вам использовать встроенные функции для некоторых задач, для которых в противном случае пришлось бы писать цикл по массиву значений. В качестве примера давайте используем {{jsxref("Math.max()")}}/{{jsxref("Math.min()")}} для нахождения максимального/минимального значения в массиве.</p> + +<pre class="brush: js">/* мин/макс числа в массиве */ +var numbers = [5, 6, 2, 3, 7]; + +/* используем apply к Math.min/Math.max */ +var max = Math.max.apply(null, numbers); /* Это эквивалентно Math.max(numbers[0], ...) + или Math.max(5, 6, ...) */ +var min = Math.min.apply(null, numbers); + +/* сравним с простым алгоритмом с циклом */ +max = -Infinity, min = +Infinity; + +for (var i = 0; i < numbers.length; i++) { + if (numbers[i] > max) { + max = numbers[i]; + } + if (numbers[i] < min) { + min = numbers[i]; + } +} +</pre> + +<p>Но будьте осторожны: при использовании метода <code>apply()</code> таким образом вы рискуете выйти за пределы ограничения на количество аргументов в движке JavaScript. Последствия применения функции с очень большим количеством аргументов (думается, больше десяти тысяч аргументов) различаются от движка к движку (JavaScriptCore имеет жёстко зашитое <a class="link-https" href="https://bugs.webkit.org/show_bug.cgi?id=80797">ограничение на количество аргументов в 65536</a>), поскольку этот предел (на самом деле, это природа поведения любого чрезвычайно огромного стека) не определён. Некоторые движки будут выкидывать исключение. Хуже того, другие просто отбрасывают реально переданные функции аргументы сверх лимита. (Для иллюстрации последнего случая: если такой движок имеет ограничение в четыре элемента [реальное ограничение, конечно же, гораздо выше], это выглядело бы так, как если бы в примере выше в метод <code>apply()</code> были переданы аргументы <code>5, 6, 2, 3</code>, а не весь массив.) Если ваш масив значений может вырасти до десятков тысяч, используйте смешанный подход: применяйте вашу функцию к порциям массива:</p> + +<pre class="brush: js">function minOfArray(arr) { + var min = Infinity; + var QUANTUM = 32768; + + for (var i = 0, len = arr.length; i < len; i += QUANTUM) { + var submin = Math.min.apply(null, arr.slice(i, Math.min(i + QUANTUM, len))); + min = Math.min(submin, min); + } + + return min; +} + +var min = minOfArray([5, 6, 2, 3, 7]); +</pre> + +<h3 id="Example_Using_apply_in_monkey-patching" name="Example:_Using_apply_in_monkey-patching">Пример: использование <code>apply()</code> в «monkey-патчинге»</h3> + +<p>Метод <code>apply()</code> может быть лучшим вариантом для «monkey-патчинга» встроенных в Firefox функций, либо JS библиотек. Пусть у вас есть функция <code>someobject.foo()</code>, вы можете изменить её таким немного хакерским способом:</p> + +<pre class="brush: js">var originalfoo = someobject.foo; +someobject.foo = function() { + // Делаем что-то до вызова функции + console.log(arguments); + // Вызываем функцию так, как будто бы она была вызвана обычным образом: + originalfoo.apply(this, arguments); + // Делаем что-то после вызова функции. +} +</pre> + +<p>Этот метод особенно удобен, когда вам нужно отладить события, либо интерфейс с чем-то, что не имеет API, вроде различных событий <code>.on([event]...</code>, например, тех что используются в <a href="/ru/docs/Tools/Page_Inspector#Developer_API">Инспекторе инструментов разработчика</a>).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3.4.3', 'Function.prototype.apply')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function.prototype.apply', 'Function.prototype.apply')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Обобщённые массивоподобные объекты ES 5.1, вроде {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoDesktop("2.0")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Обобщённые массивоподобные объекты ES 5.1, вроде {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("2.0")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</li> + <li>{{jsxref("Function.prototype.bind()")}}</li> + <li>{{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Functions_and_function_scope", "Функции и их область видимости", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/arguments/index.html b/files/ru/web/javascript/reference/global_objects/function/arguments/index.html new file mode 100644 index 0000000000..7b089887c4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/arguments/index.html @@ -0,0 +1,116 @@ +--- +title: Function.arguments +slug: Web/JavaScript/Reference/Global_Objects/Function/arguments +tags: + - Deprecated + - Function + - JavaScript + - Property + - arguments +translation_of: Web/JavaScript/Reference/Global_Objects/Function/arguments +--- +<div> + {{JSRef("Global_Objects", "Function")}} {{deprecated_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong><em>function</em>.arguments</strong></code> ссылалось на массивоподобный объект, соответствующий аргументам, переданным в функцию. Используйте вместо него простую переменную {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Синтаксис <code><em>function</em>.arguments</code> устарел. Рекомендуемым способом доступа к объекту {{jsxref("Functions_and_function_scope/arguments", "arguments")}}, доступному внутри функций, являеся простая ссылка на переменную {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.</p> +<p>В случае рекурсии, то есть, если функция <code>f</code> несколько раз появляется в стеке вызовов, значение <code>f.arguments</code> представляет аргументы, соответствующие самому последнему вызову функции.</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">function f(n) { g(n - 1); } + +function g(n) { + console.log('до: ' + g.arguments[0]); + if (n > 0) { f(n); } + console.log('после: ' + g.arguments[0]); +} + +f(2); + + +// Вывод + +// до: 1 +// до: 0 +// после: 0 +// после: 1 +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0. Устарело в связи с объектом {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-10.6', 'объект arguments')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-arguments-object', 'объект arguments')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</td> + </tr> + </tbody> +</table> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}</li> + <li>{{jsxref("Functions_and_function_scope", "Функции и их область видимости", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/arity/index.html b/files/ru/web/javascript/reference/global_objects/function/arity/index.html new file mode 100644 index 0000000000..8bcd00363b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/arity/index.html @@ -0,0 +1,30 @@ +--- +title: Function.arity +slug: Web/JavaScript/Reference/Global_Objects/Function/arity +tags: + - Function + - JavaScript + - Obsolete + - Property + - Unimplemented +translation_of: Archive/Web/JavaScript/Function.arity +--- +<div>{{JSRef}}{{Obsolete_Header}}</div> + +<p class="note">Свойство <code><strong>arity</strong></code> использовалось для возврата количества ожидаемых функцией аргументов, однако, оно больше не существует и было заменено свойством {{JSxRef("Function.prototype.length")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Реализовано в JavaScript 1.2. Устарело в JavaScript 1.4.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на данной странице составлена из структурированных данных. Чтобы поучаствовать в работе над данными, пожалуйста, обратитесь к репозиторию <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на включение изменений.</div> + +<p>{{Compat("javascript.builtins.Function.arity")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{JSxRef("Function.prototype.length")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/bind/index.html b/files/ru/web/javascript/reference/global_objects/function/bind/index.html new file mode 100644 index 0000000000..325c24fa0b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/bind/index.html @@ -0,0 +1,311 @@ +--- +title: Function.prototype.bind() +slug: Web/JavaScript/Reference/Global_Objects/Function/bind +tags: + - ECMAScript5 + - ECMAScript6 + - Function + - JavaScript + - Method + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Function/bind +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>bind()</strong></code> создаёт новую функцию, которая при вызове устанавливает в качестве контекста выполнения <code>this</code> предоставленное значение. В метод также передаётся набор аргументов, которые будут установлены перед переданными в привязанную функцию аргументами при её вызове.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>fun</var>.bind(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>thisArg</code></dt> + <dd>Значение, передаваемое в качестве <code>this</code> в целевую функцию при вызове привязанной функции. Значение игнорируется, если привязанная функция конструируется с помощью оператора {{jsxref("Operators/new", "new")}}.</dd> + <dt><code>arg1, arg2, ...</code></dt> + <dd>Аргументы целевой функции, передаваемые перед аргументами привязанной функции при вызове целевой функции.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>bind()</code> создаёт новую "<strong>привязанную функцию</strong>" (<strong>ПФ</strong>). <strong>ПФ</strong> <span class="translation-chunk">- это "необычный </span> <span class="translation-chunk">функциональный объект" ( термин из </span> <strong>ECMAScript 6</strong> <span class="translation-chunk"> ), который является оберткой над исходным </span> <span class="translation-chunk">функциональным объектом. Вызов </span> <strong>ПФ</strong> <span class="translation-chunk"> приводит к исполнению кода обернутой функции.</span></p> + +<p><strong>ПФ</strong> <span class="translation-chunk"> имеет следующие внутренние ( скрытые ) свойства:</span></p> + +<ul> + <li><span class="translation-chunk"><strong>[[BoundTargetFunction]]</strong> - оборачиваемый (целевой ) </span> <span class="translation-chunk">функциональный </span><span class="translation-chunk">объект</span></li> + <li><span class="translation-chunk"><strong>[[BoundThis]]</strong> - значение, которое всегда передается в качестве значения <strong>this </strong>при вызове обернутой функции.</span></li> + <li><span class="translation-chunk"><strong>[[BoundArguments]] </strong>- список значений, элементы которого используются в качестве первого аргумента при вызове оборачиваемой функции.</span></li> + <li><strong><span class="translation-chunk">[[</span>Call</strong><span class="translation-chunk"><strong>]] </strong>- внутренний метод. Выполняет код (функциональное выражение), связанный с функциональным объектом. </span></li> +</ul> + +<p><span class="translation-chunk">Когда <strong>ПФ </strong>вызывается, исполняется ее внутренний метод </span> <strong>[[Call]]</strong> <span class="translation-chunk"> со следующими аргументами </span> <strong>Call(<em>target</em>, <em>boundThis</em>, <em>args</em>).</strong></p> + +<ul> + <li><strong><em>target</em></strong> <span class="translation-chunk"> - <strong>[[BoundTargetFunction]]</strong>;</span></li> + <li><span class="translation-chunk"><em><strong>boundThis </strong></em></span><em><strong> <span class="translation-chunk"> </span> </strong></em><span class="translation-chunk"><em><strong> </strong></em>- </span><strong> </strong><span class="translation-chunk"><strong>[[BoundThis]]</strong>;</span></li> + <li><em><strong>args </strong></em> - <strong> <span class="translation-chunk">[[BoundArguments]].</span></strong></li> +</ul> + +<p>Привязанная функция также может быть сконструирована с помощью оператора {{jsxref("Operators/new", "new")}}: это работает так, как если бы вместо неё конструировалась целевая функция. Предоставляемое значение <code>this</code> в этом случае игнорируется, хотя ведущие аргументы всё ещё передаются в эмулируемую функцию.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Creating_a_bound_function" name="Example:_Creating_a_bound_function">Пример: создание привязанной функции</h3> + +<p>Простейшим способом использования <code>bind()</code> является создание функции, которая, вне зависимости от способа её вызова, вызывается с определённым значением <code>this</code>. Обычным заблуждением для новичков в JavaScript является извлечение метода из объекта с целью его дальнейшего вызова в качестве функции и ожидание того, что он будет использовать оригинальный объект в качестве своего значения <code>this</code> (например, такое может случиться при использовании метода как функции обратного вызова). Однако, без специальной обработки, оригинальный объект зачастую теряется. Создание привязанной функции из функции, использующей оригинальный объект, изящно решает эту проблему:</p> + +<pre class="brush: js">this.x = 9; +var module = { + x: 81, + getX: function() { return this.x; } +}; + +module.getX(); // 81 + +var getX = module.getX; +getX(); // 9, поскольку в этом случае this ссылается на глобальный объект + +// создаём новую функцию с this, привязанным к module +var boundGetX = getX.bind(module); +boundGetX(); // 81 +</pre> + +<h3 id="Example:_Partial_Functions" name="Example:_Partial_Functions">Пример: частичные функции</h3> + +<p>Следующим простейшим способом использования <code>bind()</code> является создание функции с предопределёнными аргументами. Эти аргументы (если они есть) передаются после значения <code>this</code> и вставляются перед аргументами, передаваемыми в целевую функцию при вызове привязанной функции.</p> + +<pre class="brush: js">function list() { + return Array.prototype.slice.call(arguments); +} + +var list1 = list(1, 2, 3); // [1, 2, 3] + +// Создаём функцию с предустановленным ведущим аргументом +var leadingThirtysevenList = list.bind(undefined, 37); + +var list2 = leadingThirtysevenList(); // [37] +var list3 = leadingThirtysevenList(1, 2, 3); // [37, 1, 2, 3] +</pre> + +<h3 id="Example:_With_setTimeout" name="Example:_With_setTimeout">Пример: с <code>setTimeout</code></h3> + +<p>По умолчанию, внутри {{domxref("window.setTimeout()")}} контекст <code>this</code> устанавливается в объект {{domxref("window")}} (или <code>global</code>). При работе с методами класса, требующими <code>this</code> для ссылки на экземпляры класса, вы можете явно привязать <code>this</code> к функции обратного вызова для сохранения экземпляра.</p> + +<pre class="brush: js">function LateBloomer() { + this.petalCount = Math.ceil(Math.random() * 12) + 1; +} + +// Объявляем цветение с задержкой в 1 секунду +LateBloomer.prototype.bloom = function() { + window.setTimeout(this.declare.bind(this), 1000); +}; + +LateBloomer.prototype.declare = function() { + console.log('Я прекрасный цветок с ' + + this.petalCount + ' лепестками!'); +}; +</pre> + +<h3 id="Example:_Bound_functions_used_as_constructors" name="Example:_Bound_functions_used_as_constructors">Пример: привязывание функций, используемых в качестве конструкторов</h3> + +<div class="warning"> +<p><strong>Предупреждение:</strong> этот раздел демонстрирует возможности JavaScript и документирует некоторые граничные случаи использования метода <code>bind()</code>. Показанные ниже методы не являются лучшей практикой и, вероятно, их не следует использовать в рабочем окружении.</p> +</div> + +<p>Привязанные функции автоматически подходят для использования вместе с оператором {{jsxref("Operators/new", "new")}} для конструирования новых экземпляров, создаваемых целевой функцией. Когда привязанная функция используется для конструирования значения, предоставляемое значение <code>this</code> игнорируется. Однако, предоставляемые аргументы всё так же вставляются перед аргументами конструктора:</p> + +<pre class="brush: js">function Point(x, y) { + this.x = x; + this.y = y; +} + +Point.prototype.toString = function() { + return this.x + ',' + this.y; +}; + +var p = new Point(1, 2); +p.toString(); // '1,2' + + +var emptyObj = {}; +var YAxisPoint = Point.bind(emptyObj, 0/*x*/); +// не поддерживается полифиллом, приведённым ниже, +// но отлично работает с родным bind: +var YAxisPoint = Point.bind(null, 0/*x*/); + +var axisPoint = new YAxisPoint(5); +axisPoint.toString(); // '0,5' + +axisPoint instanceof Point; // true +axisPoint instanceof YAxisPoint; // true +new Point(17, 42) instanceof YAxisPoint; // true +</pre> + +<p>Обратите внимание, что вам не нужно делать ничего особенного для создания привязанной функции, используемой с оператором {{jsxref("Operators/new", "new")}}. В итоге, для создания явно вызываемой привязанной функции, вам тоже не нужно делать ничего особенного, даже если вам требуется, чтобы привязанная функция вызывалась только с помощью оператора {{jsxref("Operators/new", "new")}}.</p> + +<pre class="brush: js">// Пример может быть запущен прямо в вашей консоли JavaScript +// ...продолжение примера выше + +// Всё ещё можно вызывать как нормальную функцию +// (хотя обычно это не предполагается) +YAxisPoint(13); + +emptyObj.x + ',' + emptyObj.y; +// > '0,13' +</pre> + +<p>Если вы хотите поддерживать использование привязанной функции только с помощью оператора {{jsxref("Operators/new", "new")}}, либо только с помощью прямого вызова, целевая функция должна предусматривать такие ограничения.</p> + +<h3 id="Example:_Creating_shortcuts" name="Example:_Creating_shortcuts">Пример: создание сокращений</h3> + +<p>Метод <code>bind()</code> также полезен в случаях, если вы хотите создать сокращение для функции, требующей определёное значение <code>this</code>.</p> + +<p>Возьмём, например, метод {{jsxref("Array.prototype.slice")}}, который вы можете использовать для преобразования массивоподобного объекта в настоящий массив. Вы можете создать подобное сокращение:</p> + +<pre class="brush: js">var slice = Array.prototype.slice; + +// ... + +slice.call(arguments); +</pre> + +<p>С помощью метода <code>bind()</code>, это сокращение может быть упрощено. В следующем куске кода <code>slice</code> является функцией, привязанной к функции {{jsxref("Function.prototype.call()", "call()")}} объекта {{jsxref("Function.prototype")}}, со значением <code>this</code>, установленным в функцию {{jsxref("Array.prototype.slice()", "slice()")}} объекта {{jsxref("Array.prototype")}}. Это означает, что дополнительный вызов <code>call()</code> может быть устранён:</p> + +<pre class="brush: js">// Тоже самое, что и slice в предыдущем примере +var unboundSlice = Array.prototype.slice; +var slice = Function.prototype.call.bind(unboundSlice); + +// ... + +slice(arguments); +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Функция <code>bind</code> является дополнением к стандарту ECMA-262 5-го издания; поэтому она может присутствовать не во всех браузерах. Вы можете частично обойти это ограничение, вставив следующий код в начало ваших скриптов, он позволяет использовать большую часть возможностей <code>bind()</code> в реализациях, не имеющих его родной поддержки.</p> + +<pre class="brush: js">if (!Function.prototype.bind) { + Function.prototype.bind = function(oThis) { + if (typeof this !== 'function') { + // ближайший аналог внутренней функции + // IsCallable в ECMAScript 5 + throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP = function() {}, + fBound = function() { + return fToBind.apply(this instanceof fNOP && oThis + ? this + : oThis, + aArgs.concat(Array.prototype.slice.call(arguments))); + }; + + fNOP.prototype = this.prototype; + fBound.prototype = new fNOP(); + + return fBound; + }; +} +</pre> + +<p>Некоторые из многих отличий (так же могут быть и другие, данный список далеко не исчерпывающий) между этой реализацией и реализацией по умолчанию:</p> + +<ul> + <li>Частичная реализация предполагает, что методы {{jsxref("Array.prototype.slice()")}}, {{jsxref("Array.prototype.concat()")}}, {{jsxref("Function.prototype.call()")}} и {{jsxref("Function.prototype.apply()")}} являются встроенными, имеют своё первоначальное значение.</li> + <li>Частичная реализация создаёт функции, не имеющие неизменяемых свойств «отравленной пилюли» — {{jsxref("Function.caller", "caller")}} и <code>arguments</code> — которые выбрасывают исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} при попытке получить, установить или удалить эти свойства. (Такие свойства могут быть добавлены, если реализация поддерживает {{jsxref("Object.defineProperty")}}, либо частично реализованы [без поведения исключение-при-попытке-удаления], если реализация поддерживает расширения {{jsxref("Object.defineGetter", "__defineGetter__")}} и {{jsxref("Object.defineSetter", "__defineSetter__")}}.)</li> + <li>Частичная реализация создаёт функции, имеющие свойство <code>prototype</code>. (Правильная привязанная функция его не имеет.)</li> + <li>Частичная реализация создаёт привязанные функции, чьё свойство {{jsxref("Function.length", "length")}} не соответствует с определением в ECMA-262; оно равно 0, в то время, как полная реализация, в зависимости от значения свойства <code>length</code> целевой функции и количества предопределённых аргументов, может вернуть значение, отличное от нуля.</li> +</ul> + +<p>Если вы решили использовать частичную реализацию, <strong>не рассчитывайте на корректную работу в тех случаях, когда реализация отклоняется от спецификации ECMA-262 5-го издания!</strong> Однако, в определённых случаях (и, возможно, с дополнительными модификациями для отдельных нужд), применение данной частичной реализации может быть вполне оправданным до тех пор, пока <code>bind()</code> не станет широко реализован в соответствии со спецификацией.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3.4.5', 'Function.prototype.bind')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function.prototype.bind', 'Function.prototype.bind')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("7")}}</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("11.60")}}</td> + <td>{{CompatSafari("5.1.4")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatAndroid("4.0")}}</td> + <td>{{CompatChrome("0.16")}}</td> + <td>{{CompatGeckoMobile("2")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatOperaMobile("11.50")}}</td> + <td>{{CompatSafari("6.0")}}</td> + </tr> + </tbody> +</table> +</div> + +<p>На основе <a href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Function.prototype.apply()")}}</li> + <li>{{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Functions_and_function_scope", "Функции и их область видимости", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/call/index.html b/files/ru/web/javascript/reference/global_objects/function/call/index.html new file mode 100644 index 0000000000..500c4af182 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/call/index.html @@ -0,0 +1,175 @@ +--- +title: Function.prototype.call() +slug: Web/JavaScript/Reference/Global_Objects/Function/call +tags: + - Function + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Function/call +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>call()</strong></code> вызывает функцию с указанным значением <code>this</code> и индивидуально предоставленными аргументами.</p> + +<div class="note"> +<p><strong>Примечание:</strong> хотя синтаксис этой функции практически полностью идентичен функции {{jsxref("Function.prototype.apply", "apply()")}}, фундаментальное различие между ними заключается в том, что функция <code>call()</code> принимает <strong>список аргументов</strong>, в то время, как функция <code>apply()</code> <strong>- одиночный массив аргументов</strong>.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>fun</var>.call(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>thisArg</code></dt> + <dd>Значение <code>this</code>, предоставляемое для вызова функции <em><code>fun</code></em>. Обратите внимание, что <code>this</code> может не быть реальным значением, видимым этим методом: если метод является функцией в {{jsxref("Functions_and_function_scope/Strict_mode", "нестрогом режиме", "", 1)}}, значения {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}} будут заменены глобальным объектом, а примитивные значения будут упакованы в объекты.</dd> + <dt><code>arg1, arg2, ...</code></dt> + <dd>Аргументы для объекта.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Вы можете присваивать различные объекты <code>this</code> при вызове существующей функции. <code>this</code> ссылается на текущий объект, вызвавший объект. С помощью <code>call</code> вы можете написать метод один раз, а затем наследовать его в других объектах, без необходимости переписывать метод для каждого нового объекта.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_call_to_chain_constructors_for_an_object" name="Example:_Using_call_to_chain_constructors_for_an_object">Пример: использование <code>call</code> для связи конструкторов объекта в цепочку</h3> + +<p>Вы можете использовать метод <code>call</code> для объединения в цепочку {{jsxref("Operators/new", "конструкторов", "", 1)}} объекта, как в Java. В следующем примере для объекта продукта <code>Product</code> объявлен конструктор с двумя параметрами, названием <code>name</code> и ценой <code>price</code>. Продукт инициализирует свойства <code>name</code> и <code>price</code>, а специализированные функции определяют ещё категорию <code>category</code>.</p> + +<pre class="brush: js">function Product(name, price) { + this.name = name; + this.price = price; + + if (price < 0) { + throw RangeError('Нельзя создать продукт ' + + this.name + ' с отрицательной ценой'); + } +} + +function Food(name, price) { + Product.call(this, name, price); + this.category = 'еда'; +} + +Food.prototype = Object.create(Product.prototype); + +function Toy(name, price) { + Product.call(this, name, price); + this.category = 'игрушка'; +} + +Toy.prototype = Object.create(Product.prototype); + +var cheese = new Food('фета', 5); +var fun = new Toy('робот', 40); +</pre> + +<h3 id="Example_Using_call_to_invoke_an_anonymous_function" name="Example:_Using_call_to_invoke_an_anonymous_function">Пример: использование <code>call</code> для вызова анонимной функции</h3> + +<p>В этом чисто искусственном примере, мы создаём анонимную функцию и используем <code>call</code> для вызова её на каждом элементе массива. Главная задача анонимной функции здесь — добавить функцию печати в каждый объект, способную напечатать правильный индекс объекта в массиве. Передача объекта в качестве значения <code>this</code> не является острой необходимостью, но мы делаем это в целях объяснения.</p> + +<pre class="brush: js">var animals = [ + { species: 'Лев', name: 'Король' }, + { species: 'Кит', name: 'Фэйл' } +]; + +for (var i = 0; i < animals.length; i++) { + (function(i) { + this.print = function() { + console.log('#' + i + ' ' + this.species + + ': ' + this.name); + } + this.print(); + }).call(animals[i], i); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Function.prototype.bind()")}}</li> + <li>{{jsxref("Function.prototype.apply()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/caller/index.html b/files/ru/web/javascript/reference/global_objects/function/caller/index.html new file mode 100644 index 0000000000..4055eaf092 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/caller/index.html @@ -0,0 +1,131 @@ +--- +title: Function.caller +slug: Web/JavaScript/Reference/Global_Objects/Function/caller +tags: + - Function + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Function/caller +--- +<div>{{JSRef("Global_Objects", "Function")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <code><strong><em>function</em>.caller</strong></code> возвращает функцию, которая вызвала указанную функцию.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если функция <code>f</code> была вызвана из кода самого верхнего уровня, значение <code>f.caller</code> будет равно {{jsxref("Global_Objects/null", "null")}}, в противном случае значение будет равно функции, вызвавшей <code>f</code>.</p> + +<p>Это свойство пришло на замену удалённого свойства {{jsxref("Functions_and_function_scope/arguments/caller", "arguments.caller")}} объекта {{jsxref("Functions_and_function_scope/arguments", "arguments")}}.</p> + +<p>Специальное свойство <code>__caller__</code>, возвращающее объект активации вызывающей функции и, таким образом, позволяющее восстанавливать стек вызовов, было удалено по соображениям безопасности.</p> + +<h3 id="Notes" name="Notes">Примечания</h3> + +<p>Обратите внимание, что в случае рекурсии, вы не сможете воссоздать стек вызовов, используя это свойство. Пусть у нас есть функции:</p> + +<pre class="brush: js">function f(n) { g(n - 1); } +function g(n) { if (n > 0) { f(n); } else { stop(); } } +f(2); +</pre> + +<p>В момент вызова функции <code>stop()</code>, стек вызовов имеет следующий вид:</p> + +<pre class="eval">f(2) -> g(2) -> f(2) -> g(1) -> f(1) -> g(0) -> stop() +</pre> + +<p>Следующее условие верно:</p> + +<pre class="eval">stop.caller === g && f.caller === g && g.caller === f +</pre> + +<p>так что если вы попытаетесь оттрассировать стек в функции <code>stop()</code> подобным образом:</p> + +<pre class="brush: js">var f = stop; +var stack = 'Трассировка стека:'; +while (f) { + stack += '\n' + f.name; + f = f.caller; +} +</pre> + +<p>то этот цикл никогда не остановится.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Checking_the_value_of_a_function.27s_caller_property" name="Example:_Checking_the_value_of_a_function.27s_caller_property">Пример: проверка значения свойства <code>caller</code> функции</h3> + +<p>Следующий код проверяет значение свойства <code>caller</code> функции.</p> + +<pre class="brush: js">function myFunc() { + if (myFunc.caller == null) { + return 'Эта функция была вызвана из верхнего уровня!'; + } else { + return 'Эта функция была вызвана из ' + myFunc.caller; + } +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какой-либо спецификации. Реализована в JavaScript 1.5.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Ошибка реализации в SpiderMonkey: {{bug(65683)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/displayname/index.html b/files/ru/web/javascript/reference/global_objects/function/displayname/index.html new file mode 100644 index 0000000000..11bae88221 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/displayname/index.html @@ -0,0 +1,111 @@ +--- +title: Function.displayName +slug: Web/JavaScript/Reference/Global_Objects/Function/displayName +tags: + - Function + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Function/displayName +--- +<div> + {{JSRef("Global_Objects", "Function")}} {{Non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong><em>function</em>.displayName</strong></code> возвращает отображаемое имя функции.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Если оно определено, свойство <code>displayName</code> возвращает отображаемое имя функции:</p> +<pre class="brush: js">function doSomething() {} + +alert(doSomething.displayName); // "undefined" + +var popup = function(content) { alert(content); }; + +popup.displayName = 'Показать всплывающее окно'; + +alert(popup.displayName); // "Показать всплывающее окно" +</pre> +<p>Вы можете определить функцию с отображаемым именем в {{jsxref("Functions_and_function_scope", "выражении функции", "", 1)}}:</p> +<pre class="brush: js">var object = { + someMethod: function() {} +}; + +object.someMethod.displayName = 'someMethod'; + +alert(object.someMethod.displayName); // выведет "someMethod" + +try { someMethod } catch(e) { alert(e); } +// ReferenceError: someMethod is not defined +</pre> +<p>Вы можете динамически изменять свойство <code>displayName</code> функции:</p> +<pre class="brush: js">var object = { + // анонимная функция + someMethod: function(value) { + this.displayName = 'someMethod (' + value + ')'; + } +}; + +alert(object.someMethod.displayName); // "undefined" + +object.someMethod('123') +alert(object.someMethod.displayName); // "someMethod (123)" +</pre> +<h2 id="Examples" name="Examples">Примеры</h2> +<p>Обычно оно используется консолью и профилировщиком, как обёртка над {{jsxref("Function.name", "func.name")}} для отображения имени функции.</p> +<p>Введя следующий пример в консоль, вы должны увидеть что-то вроде "<code>function Моя функция()</code>":</p> +<pre class="brush: js">var a = function() {}; +a.displayName = 'Моя функция'; + +a +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoDesktop(13)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p> </p> diff --git a/files/ru/web/javascript/reference/global_objects/function/index.html b/files/ru/web/javascript/reference/global_objects/function/index.html new file mode 100644 index 0000000000..63d7e776c0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/index.html @@ -0,0 +1,200 @@ +--- +title: Function +slug: Web/JavaScript/Reference/Global_Objects/Function +tags: + - JavaScript + - Конструктор + - Функция +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<p>{{JSRef}}</p> + +<p><strong><code>Function</code> constructor</strong> создает новый объект <code>Function</code>. Вызов <code>constructor</code> создает функцию динамически, но страдает от проблем безопасности и аналогичных (но гораздо менее значительных) проблем производительности {{jsxref("eval")}}. Однако, в отличие от eval, конструктор функций создает функции, которые выполняются только в глобальной области..</p> + +<p>{{EmbedInteractiveExample("pages/js/function-constructor.html")}}</p> + +<div class="hidden"> +<p>Источник для этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект interactive examples, пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<p>Каждая функция JavaScript на самом деле является объектом функции. Это можно увидеть с помощью кода <code>(function(){}).constructor === Function</code> которая возвращает true.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>new Function([<var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]],] <var>functionBody</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>arg1, arg2, ... arg<em>N</em></code></dt> + <dd>Имена, используемые функцией в качестве имён формальных аргументов. Каждое имя должно быть строкой, представляющий допустимый идентификатор JavaScript, либо списком таких строк, разделённых запятой; например "<code>x</code>", "<code>theValue</code>" или "<code>a,b</code>".</dd> + <dt><code>functionBody</code></dt> + <dd>Строка, содержащая инструкции JavaScript, составляющие определение функции.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объекты <code>Function</code>, созданные констуктором <code>Function</code>, разбираются при создании функции. Это менее эффективно определения функции при помощи <a href="/ru/docs/Web/JavaScript/Reference/Operators/function">выражения <code>function</code></a> или <a href="/ru/docs/Web/JavaScript/Reference/Statements/function">инструкции <code>function</code></a> и вызова её внутри вашего кода, поскольку такие функции разбираются вместе с остальным кодом.</p> + +<p>Все аргументы, переданные в функцию, трактуются как имена идентификаторов параметров создаваемой функции, и имеют тот же порядок следования, что и при их передаче в конструктор функции.</p> + +<div class="note"> +<p><strong>Примечание:</strong> функции, созданные конструктором <code>Function</code>, не создают замыканий на их контексты создания; они всегда создаются в глобальной области видимости. При их вызове, они получат доступ только к своим локальным переменным и переменным из глобальной области видимости, но не к переменным в той области видимости, в которой вызывался конструктор <code>Function</code>. Это поведение отличается от поведения при использовании функции {{jsxref("Global_Objects/eval", "eval")}} с кодом создания функции.</p> +</div> + +<p>Вызов констуктора <code>Function</code> как функции (без использования оператора <code>new</code>) имеет тот же самый эффект, что и вызов его как констуктора.</p> + +<h2 id="Properties_and_Methods_of_Function" name="Properties_and_Methods_of_Function">Свойства и методы объекта <code>Function</code></h2> + +<p>Глобальный объект <code>Function</code> не имеет собственных методов или свойств, однако, поскольку он сам является функцией, он наследует некоторые методы и свойства через цепочку прототипов объекта {{jsxref("Function.prototype")}}.</p> + +<h2 id="Function_prototype_object" name="Function_prototype_object">Прототип объекта <code>Function</code></h2> + +<h3 id="Properties" name="Properties">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype', 'Properties')}}</div> + +<h3 id="Methods" name="Methods">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype', 'Methods')}}</div> + +<h2 id="Function_instances" name="Function_instances">Экземпляры объекта <code>Function</code></h2> + +<p>Экземпляры объекта <code>Function</code> наследуют методы и свойства из объекта {{jsxref("Function.prototype")}}. Как и со всеми другими конструкторами, вы можете изменить объект прототипа констуктора для применения изменений ко всем экземплярам объекта <code>Function</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Specifying_arguments_with_the_Function_constructor" name="Example:_Specifying_arguments_with_the_Function_constructor">Пример: указание аргументов в конструкторе <code>Function</code></h3> + +<p>Следующий код создаёт объект <code>Function</code>, который принимает два аргумента.</p> + +<pre class="brush: js">// Пример может быть запущен непосредственно в вашей консоли JavaScript + +// Создаём функцию, принимающую два аргумента, и возвращающую их сумму +var adder = new Function('a', 'b', 'return a + b'); + +// Вызываем функцию +adder(2, 6); +// > 8 +</pre> + +<p>Аргуметы "<code>a</code>" и "<code>b</code>" являются именами формальных аргументов, которые используются в теле функции, "<code>return a + b</code>".</p> + +<h3 id="Example_A_recursive_shortcut_to_massively_modify_the_DOM" name="Example:_A_recursive_shortcut_to_massively_modify_the_DOM">Пример: рекурсивное сокращение для массового изменения DOM</h3> + +<p>Создание функции через конструктор <code>Function</code> - это один из способов динамического создания из функции неизвестного количества новых объектов с некоторым выполняемым кодом в глобальной области видимости. Следующий пример (a рекурсивное сокращение для массового изменения DOM) был бы невозможен без вызова конструктора <code>Function</code> для каждого нового запроса, если вы хотите избежать использования замыканий.</p> + +<pre class="brush: html"><!doctype html> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<title>Пример MDN - рекурсивное сокращение для массового изменения DOM</title> +<script type="text/javascript"> +var domQuery = (function() { + var aDOMFunc = [ + Element.prototype.removeAttribute, + Element.prototype.setAttribute, + CSSStyleDeclaration.prototype.removeProperty, + CSSStyleDeclaration.prototype.setProperty + ]; + + function setSomething(bStyle, sProp, sVal) { + var bSet = Boolean(sVal), fAction = aDOMFunc[bSet | bStyle << 1], + aArgs = Array.prototype.slice.call(arguments, 1, bSet ? 3 : 2), + aNodeList = bStyle ? this.cssNodes : this.nodes; + + if (bSet && bStyle) { aArgs.push(''); } + for ( + var nItem = 0, nLen = this.nodes.length; + nItem < nLen; + fAction.apply(aNodeList[nItem++], aArgs) + ); + this.follow = setSomething.caller; + return this; + } + + function setStyles(sProp, sVal) { return setSomething.call(this, true, sProp, sVal); } + function setAttribs(sProp, sVal) { return setSomething.call(this, false, sProp, sVal); } + function getSelectors() { return this.selectors; }; + function getNodes() { return this.nodes; }; + + return (function(sSelectors) { + var oQuery = new Function('return arguments.callee.follow.apply(arguments.callee, arguments);'); + oQuery.selectors = sSelectors; + oQuery.nodes = document.querySelectorAll(sSelectors); + oQuery.cssNodes = Array.prototype.map.call(oQuery.nodes, function(oInlineCSS) { return oInlineCSS.style; }); + oQuery.attributes = setAttribs; + oQuery.inlineStyle = setStyles; + oQuery.follow = getNodes; + oQuery.toString = getSelectors; + oQuery.valueOf = getNodes; + return oQuery; + }); +})(); +</script> +</head> + +<body> + +<div class="testClass">Lorem ipsum</div> +<p>Некоторый текст</p> +<div class="testClass">dolor sit amet</div> + +<script type="text/javascript"> +domQuery('.testClass') + .attributes('lang', 'en')('title', 'Risus abundat in ore stultorum') + .inlineStyle('background-color', 'black')('color', 'white')('width', '100px')('height', '50px'); +</script> +</body> + +</html> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3', 'Function')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function-objects', 'Function')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Function")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Functions_and_function_scope", "Функции и их область видимости", "", 1)}}</li> + <li>{{jsxref("Function")}}</li> + <li>{{jsxref("Statements/function", "инструкция function", "", 1)}}</li> + <li>{{jsxref("Operators/function", "выражение function", "", 1)}}</li> + <li>{{jsxref("Statements/function*", "инструкция function*", "", 1)}}</li> + <li>{{jsxref("Operators/function*", "выражение function*", "", 1)}}</li> + <li>{{jsxref("GeneratorFunction")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html b/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html new file mode 100644 index 0000000000..e3a972e9e2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/isgenerator/index.html @@ -0,0 +1,83 @@ +--- +title: Function.prototype.isGenerator() +slug: Web/JavaScript/Reference/Global_Objects/Function/isGenerator +tags: + - Function + - JavaScript + - Method + - Non-standard +translation_of: Archive/Web/JavaScript/Function.isGenerator +--- +<div> + {{JSRef("Global_Objects", "Function")}} {{non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>isGenerator()</strong></code> определяет, является ли функция <a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">генератором</a>.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>fun</var>.isGenerator()</code></pre> +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>isGenerator()</code> определяет, является ли функция <em><code>fun</code></em> <a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators#Generators.3A_a_better_way_to_build_Iterators">генератором</a>. Он является частью раннего предложения Harmony, но не был включён в спецификацию ECMAScript 6.</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">function f() {} + +function g() { + yield 42; +} + +console.log('f.isGenerator() = ' + f.isGenerator()); // f.isGenerator() = false +console.log('g.isGenerator() = ' + g.isGenerator()); // g.isGenerator() = true +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации. Реализована в JavaScript 1.8.6.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("5.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("5.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итераторы и генераторы</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/length/index.html b/files/ru/web/javascript/reference/global_objects/function/length/index.html new file mode 100644 index 0000000000..e65e361f17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/length/index.html @@ -0,0 +1,145 @@ +--- +title: Function.length +slug: Web/JavaScript/Reference/Global_Objects/Function/length +tags: + - Function + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Function/length +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>length</strong></code> определяет количество аргументов, ожидаемых функцией.</p> + +<div>{{js_property_attributes(0, 0, 1)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Свойство <code>length</code> является свойством объекта функции и указывает, сколько аргументов ожидает функция, то есть, количество формальных параметров. Это количество не включает {{jsxref("rest_parameters", "остаточные параметры", "", 1)}}. В отличие от него, свойство {{jsxref("Functions_and_function_scope/arguments/length", "arguments.length")}} является локальным для функции и предоставляет количество аргументов, реально переданных в функцию.</p> + +<h3 id="Data_property_of_the_Function_constructor" name="Data_property_of_the_Function_constructor">Свойство данных конструктора <code>Function</code></h3> +<p>Конструктор {{jsxref("Global_Objects/Function", "Function")}} сам является объектом {{jsxref("Global_Objects/Function", "Function")}}. Его свойство данных <code>length</code> имеет значение 1. Атрибуты свойства: записываемое: <code>false</code>, перечисляемое: <code>false</code>, настраиваемое: <code>true</code>.</p> + +<h3 id="Property_of_the_Function_prototype_object" name="Property_of_the_Function_prototype_object">Свойство объекта прототипа <code>Function</code></h3> +<p>Свойство <code>length</code> объекта прототипа {{jsxref("Global_Objects/Function", "Function")}} имеет значение 0.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">console.log(Function.length); /* 1 */ + +console.log((function() {}).length); /* 0 */ +console.log((function(a) {}).length); /* 1 */ +console.log((function(a, b) {}).length); /* 2 и так далее */ +console.log((function(...args) {}).length); /* 0, остаточные параметры не считаются */ +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td> + Свойство <code>length</code> конструктора {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES5.1', '#sec-15.3.3.2', 'Function.length')}}<br> + Свойство <code>length</code> объекта прототипа {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES5.1', '#sec-properties-of-the-function-prototype-object', 'Function.length')}}<br> + Свойство <code>length</code> экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES5.1', '#sec-15.3.5.1', 'Function.length')}} + </td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td> + Свойство <code>length</code> конструктора {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES6', '#sec-function.length', 'Function.length')}}<br> + Свойство <code>length</code> объекта прототипа {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES6', '#sec-15.3.4', 'Function.length')}}<br> + Свойство <code>length</code> экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES6', '#sec-function-instances-length', 'Function.length')}}<br> + </td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Поддержка настраиваемости</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoDesktop(37)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Поддержка настраиваемости</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile(37)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Function", "Function")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/name/index.html b/files/ru/web/javascript/reference/global_objects/function/name/index.html new file mode 100644 index 0000000000..212b9cb735 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/name/index.html @@ -0,0 +1,219 @@ +--- +title: Function.name +slug: Web/JavaScript/Reference/Global_Objects/Function/name +tags: + - ECMAScript6 + - Function + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Function/name +--- +<p>{{JSRef}}</p> + +<p>Read-only свойство <code><strong>name</strong></code> глобального объекта {{jsxref("Function")}} и его <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Function#Function_instances">экзепляров</a> содержит название функции созданное во время определения функции или присваивания ссылки на функцию переменной, свойству, аргументу и т. п. Для анонимных функций это свойство может иметь значение <code>"anonymous"</code> или пустую строку <code>""</code>.</p> + +<p>{{EmbedInteractiveExample("pages/js/function-name.html")}}</p> + +<p>Интерактивные примеры размещены в GitHub репозитории. Если вы хотите добавить свои примеры, то клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и пришлите пулл реквест.</p> + +<p>{{js_property_attributes(0,0,1)}}<br> + </p> + +<div class="blockIndicator note"> +<p>Заметьте, что в нестандартном, pre-ES2015 релизе <code>configurable</code> свойство было <code>false</code></p> +</div> + +<h2 id="Summary" name="Summary">Примеры</h2> + +<h3 id="Имя_объявленной_функции">Имя объявленной функции</h3> + +<p>Свойство <code>name</code> возвращает имя функции, либо пустую строку для анонимных функций:</p> + +<pre class="brush: js">function doSomething() {} + +alert(doSomething.name); // выведет "doSomething" +</pre> + +<h3 id="Имя_функции-конструктора">Имя функции-конструктора</h3> + +<p>Функции, созданные синтаксисом <code>new Function(...)</code> или просто <code>Function(...)</code> создают {{jsxref("Function")}} и имеют name "anonymous":</p> + +<pre class="brush: js"><code>(new Function).name; // "anonymous"</code> +</pre> + +<h3 id="Предполагаемые_имена_функций">Предполагаемые имена функций</h3> + +<p>Переменные и методы могут предположить название анонимной функции из ее синтаксической позиции (new in ECMAScript 2015).</p> + +<pre class="brush: js">var f = function() {}; +var object = { + someMethod: function() {} +}; + +<code>console.log(f.name); // "f" +console.log(object.someMethod.name); // "someMethod"</code></pre> + +<p>Вы можете определить функцию с именем в {{jsxref("Operators/Function", "function expression", "", 1)}}:</p> + +<pre class="brush: js">var object = { + someMethod: function object_someMethod() {} +}; +console.log(object.someMethod.name); // выведет "object_someMethod" + +try { object_someMethod } catch(e) { console.log(e); } +// ReferenceError: object_someMethod is not defined +</pre> + +<p>Вы не можете изменить имя функции, это свойство только для чтения:</p> + +<pre class="brush: js">var object = { + // анонимная функция + someMethod: function() {} +}; + +object.someMethod.name = 'otherMethod'; +alert(object.someMethod.name); //someMethod + +</pre> + +<p>Для изменения name можно использовать {{jsxref("Object.defineProperty()")}}.</p> + +<h3 id="Сокращенные_имена_методов">Сокращенные имена методов</h3> + +<pre class="brush: js"><code>var o = { + foo(){} +}; +o.foo.name; // "foo";</code></pre> + +<h3 id="Имена_функций_после_байндинга">Имена функций после байндинга</h3> + +<p>{{jsxref("Function.bind()")}} производит функцию, получающую имя "bound и название самой функции.</p> + +<pre class="brush: js"><code>function foo() {}; +foo.bind({}).name; // "bound foo"</code> +</pre> + +<h3 id="Имена_функций_для_getters_и_setters">Имена функций для getters и setters</h3> + +<p>Когда используются <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get">get</a></code> и <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set">set</a>, "get" и "set" появятся в имени функции.</p> + +<pre><code>let o = { + get foo(){}, + set foo(x){} +}; + +var descriptor = Object.getOwnPropertyDescriptor(o, "foo"); +descriptor.get.name; // "get foo" +descriptor.set.name; // "set foo";</code></pre> + +<h3 id="Имена_функций-классов">Имена функций-классов</h3> + +<p>Можно использовать <code>obj.constructor.name</code> чтобы проверить "class" объекта (читайте предупреждение ниже):</p> + +<pre><code>function Foo() {} // ES2015 Syntax: class Foo {} + +var fooInstance = new Foo(); +console.log(fooInstance.constructor.name); // logs "Foo"</code> +</pre> + +<div class="blockIndicator warning"> +<p><strong>Warning:</strong> Интерпретатор объявит встроенное <code>Function.name</code> свойство только если функция не имеет своего собственного свойства <em>name</em> (см. <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-setfunctionname">9.2.11 of the ECMAScript2015 Language Specification</a>). Однако, в ES2015 статичные методы перезаписывают OwnProperty конструкторов класса-функции (ECMAScript2015, <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-runtime-semantics-classdefinitionevaluation">14.5.14.21.b</a> + <a href="https://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer-runtime-semantics-propertydefinitionevaluation">12.2.6.9</a>).</p> +</div> + +<p>Таким образом, нельзя получить доступ к <code>name</code> любого класса со статичным свойством <code>name():</code></p> + +<pre class="brush: js"><code>class Foo { + constructor() {} + static name() {} +} +</code></pre> + +<p>Со <code>static name()</code> методом <code>Foo.name</code> больше не содержит название класса, но отсылает к функции <code>name()</code>. Приведенное выше определение класса в ES2015 будет вести себя в Chrome и Firefx как в ES5:</p> + +<pre><code>function Foo() {} +Object.defineProperty(Foo, 'name', { writable: true }); +Foo.name = function() {};</code></pre> + +<p>Пытаясь получить доступ к <code>fooInstance</code> с помощью <code>fooInstance.constructor.name</code> не даст название класса, но выведет метод <code>name()</code>. Пример:</p> + +<pre><code>let fooInstance = new Foo(); +console.log(fooInstance.constructor.name); // logs function name()</code></pre> + +<p>Из ES5 syntax примера также видно, что в Chrome или Firefox статичное определение <code>Foo.name</code> становится <em>записываемым (writable)</em>. Встроенное определение в отсутствии кастомного статичного метода<em>доступно только для чтения</em>:</p> + +<pre><code>Foo.name = 'Hello'; +console.log(Foo.name); // logs "Hello" if class Foo has a static name() property but "Foo" if not.</code></pre> + +<p>Следовательно не ожидайте, что <code>Function.name</code> свойство будет всегда содержать имя класса.</p> + +<h3 id="Имена_функций-символов">Имена функций-символов</h3> + +<p>Если у {{jsxref("Symbol")}} объявляется имя, то название метода - это имя квадратных скобках.</p> + +<pre class="brush: js"><code>let sym1 = Symbol("foo"); +let sym2 = Symbol(); +let o = { + [sym1]: function(){}, + [sym2]: function(){} +}; + +o[sym1].name; // "[foo]" +o[sym2].name; // ""</code> +</pre> + +<h2 id="JavaScript_минифицированный">JavaScript минифицированный</h2> + +<div class="blockIndicator warning"> +<p><strong>Warning:</strong> Будьте осторожны, используя <code>Function.name</code> и изменения source кода с помощью JavaScript compressors (minifiers) или обфускаторов. Эти инструменты часто используются, как встроенные в JavaScript build pipeline, чтобы сократить размер билда перед деплоем в production. Такие трансформации часто изменяют имена функций.</p> +</div> + +<p>Такой source code:</p> + +<pre><code>function Foo() {}; +let foo = new Foo(); + +if (foo.constructor.name === 'Foo') { + console.log("'foo' is an instance of 'Foo'"); +} else { + console.log('Oops!'); +}</code></pre> + +<p>может быть сжат в:</p> + +<pre><code>function a() {}; +let b = new a(); +if (b.constructor.name === 'Foo') { + console.log("'foo' is an instance of 'Foo'"); +} else { + console.log('Oops!'); +}</code></pre> + +<p>В несжатой версии код выполняется ожидаемо <code>"'foo' is an instance of 'Foo'"</code>. В то время, как в сжатой версии он ведет себя иначе. Если вы полагаетесь на <code>Function.name</code>, как в примере, то убедитесь, что pipeline не меняет код или не ожидайте от функции определенного имени.</p> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col"> + <p>Спецификация</p> + </th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-name', 'name')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Function.name")}}</p> + +<div id="compat-mobile"></div> diff --git a/files/ru/web/javascript/reference/global_objects/function/prototype/index.html b/files/ru/web/javascript/reference/global_objects/function/prototype/index.html new file mode 100644 index 0000000000..66a3ecc18e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/prototype/index.html @@ -0,0 +1,151 @@ +--- +title: Function.prototype +slug: Web/JavaScript/Reference/Global_Objects/Function/prototype +tags: + - Function + - JavaScript + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Function +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <code><strong>Function.prototype</strong></code> представляет прототип объекта {{jsxref("Global_Objects/Function", "Function")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объекты {{jsxref("Global_Objects/Function", "Function")}} наследуются от <code>Function.prototype</code>. Объект <code>Function.prototype</code> не может быть изменён.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Function.arguments")}} {{deprecated_inline}}</dt> + <dd>Массив, соответствующий аргументам, переданным в функцию. Это устаревшее свойство {{jsxref("Global_Objects/Function", "Function")}}, используйте вместо него объект {{jsxref("Functions_and_function_scope/arguments", "arguments")}}, доступный внутри функции.</dd> + <dt><s class="obsoleteElement">{{jsxref("Function.arity")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Использовалось для определения количества аргументов, ожидаемых функцией, но было удалено. Вместо него используйте свойство {{jsxref("Function.length", "length")}}.</s></dd> + <dt>{{jsxref("Function.caller")}} {{non-standard_inline}}</dt> + <dd>Определяет функцию, вызвавшую текущую выполняющуюся функцию.</dd> + <dt>{{jsxref("Function.length")}}</dt> + <dd>Определяет количество аргументов, ожидаемых функцией.</dd> + <dt>{{jsxref("Function.name")}} {{non-standard_inline}}</dt> + <dd>Имя функции.</dd> + <dt>{{jsxref("Function.displayName")}} {{non-standard_inline}}</dt> + <dd>Отображаемое имя функции.</dd> + <dt><code>Function.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип объекта. Смотрите документацию по {{jsxref("Object.prototype.constructor")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Function.prototype.apply()")}}</dt> + <dd>Вызывает функцию и устанавливает <strong><code>this </code></strong>в контекст предоставленного значения; аргументы передаются объектом {{jsxref("Global_Objects/Array", "Array")}}.</dd> + <dt>{{jsxref("Function.prototype.bind()")}}</dt> + <dd>Создаёт новую функцию, которая, при вызове, самостоятельно вызывает эту функцию в контексте предоставленного значения, с данной последовательностью аргументов, предшествующих любым аргументам, переданным в новую функцию при её вызове. Устанавливает <strong><code>this </code></strong>в контекст предоставленного значения.</dd> + <dt>{{jsxref("Function.prototype.call()")}}</dt> + <dd>Вызывает (выполняет) функцию и устанавливает <strong><code>this </code></strong>в контекст предоставленного значения; аргументы передаются как есть.</dd> + <dt>{{jsxref("Function.prototype.isGenerator()")}} {{non-standard_inline}}</dt> + <dd>Возвращает <code>true</code>, если функция является <a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">генератором</a>; в противном случае возвращает <code>false</code>.</dd> + <dt>{{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает строку, представляющую исходный код функции. Переопределяет метод {{jsxref("Object.prototype.toSource")}}.</dd> + <dt>{{jsxref("Function.prototype.toString()")}}</dt> + <dd>Возвращает строку, представляющую исходный код функции. Переопределяет метод {{jsxref("Object.prototype.toString")}}.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3.3.1', 'Function.prototype')}}<br> + Для экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES5.1', '#sec-15.3.5.2', 'Function.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function.prototype', 'Function.prototype')}}<br> + Для экземпляров объекта {{jsxref("Global_Objects/Function", "Function")}}:<br> + {{SpecName('ES6', '#sec-function-instances-prototype', 'Function.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-function-instances-prototype', 'Function.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Function", "Function")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/tosource/index.html b/files/ru/web/javascript/reference/global_objects/function/tosource/index.html new file mode 100644 index 0000000000..335967947b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/tosource/index.html @@ -0,0 +1,87 @@ +--- +title: Function.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Function/toSource +tags: + - Function + - JavaScript + - Method + - Non-standard +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toSource +--- +<div> + {{JSRef("Global_Objects", "Function")}} {{non-standard_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toSource()</strong></code> возвращает строку, представляющую исходный код объекта.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>function</var>.toSource(); +Function.toSource(); +</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toSource</code> возвращает следующие значения:</p> +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Function", "Function")}} метод <code>toSource</code> возвращает следующую строку, указывающую, что исходный код недоступен: + <pre class="brush: js">function Function() { + [native code] +} +</pre> + </li> + <li>Для пользовательских функций, метод <code>toSource</code> возвращает исходный код JavaScript, определяющий объект как строку.</li> +</ul> +<p>Этот метод обычно вызывается внутренними механизмаим движка JavaScript, а не явно в коде. Вы можете вызвать <code>toSource</code> во время отладки для изучения содержимого объекта.</p> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/function/tostring/index.html b/files/ru/web/javascript/reference/global_objects/function/tostring/index.html new file mode 100644 index 0000000000..70b6522ebe --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/function/tostring/index.html @@ -0,0 +1,110 @@ +--- +title: Function.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Function/toString +tags: + - Function + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Function/toString +--- +<div>{{JSRef("Global_Objects", "Function")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toString()</strong></code> возвращает строку, представляющую исходный код функции.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>function</var>.toString(indentation)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>indentation</code> {{non-standard_inline}} {{obsolete_inline(17)}}</dt> + <dd>Количество пробелов для отступов в строковом представлении исходного кода. Если параметр меньше или равен <code>-1</code>, большинство ненужных пробелов будет удалено.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Global_Objects/Function", "Function")}} переопределяет метод {{jsxref("Object.prototype.toString", "toString")}}, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString")}}. Для объектов {{jsxref("Global_Objects/Function", "Function")}} метод <code>toString</code> возвращает строку, представляющую объект в форме объявления функции. То есть, метод <code>toString</code> декомпилирует функцию и возвращает строку, включающую ключевое слово <code>function</code>, список аргументов, фигурные скобки и исходный код тела функции.</p> +<p>JavaScript вызывает метод <code>toString</code> автоматически в случае, когда объект {{jsxref("Global_Objects/Function", "Function")}} представляется в качестве текстового значения, то есть, когда функция соединяется со строкой.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.3.4.2', 'Function.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-function.prototype.tostring', 'Function.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Особый случай с Gecko</h3> +<p>Начиная с Gecko 17.0 {{geckoRelease("17")}}, метод <code>Function.prototype.toString()</code> реализован с сохранением исходного кода функции. Декомпилятор был удалён, так что параметр <code>indentation</code> больше не требуется. Смотрите {{bug("761723")}} для подробностей.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generator/index.html b/files/ru/web/javascript/reference/global_objects/generator/index.html new file mode 100644 index 0000000000..b5fe95a5bf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/index.html @@ -0,0 +1,187 @@ +--- +title: Generator +slug: Web/JavaScript/Reference/Global_Objects/Generator +tags: + - ECMAScript 2015 + - Generator + - JavaScript + - Legacy Generator + - Legacy Iterator + - NeedsTranslation + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Generator +--- +<div>{{JSRef}}</div> + +<p><code><strong>Генератор</strong></code> - это объект, возвращаемый {{jsxref("Statements/function*", "функцией-генератором", "", 1)}} и соответствующий как <a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols#iterable">"Итерируемому" протоколу</a>, так и <a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols#iterator">протоколу "Итератор"</a>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">function* gen() { + yield 1; + yield 2; + yield 3; +} + +var g = gen(); // "Generator { }"</pre> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Generator.prototype.next()")}}</dt> + <dd>Возвращает значение, полученное выражением {{jsxref("Operators/yield", "yield")}}.</dd> + <dt>{{jsxref("Generator.prototype.return()")}}</dt> + <dd>Возвращает заданное значение и заканчивает генератор.</dd> + <dt>{{jsxref("Generator.prototype.throw()")}}</dt> + <dd>Выдает ошибку генератора.</dd> +</dl> + +<h2 id="Пример">Пример</h2> + +<h3 id="Бесконечный_Итератор">Бесконечный Итератор</h3> + +<pre class="brush: js">function* idMaker() { + var index = 0; + while(true) + yield index++; +} + +var gen = idMaker(); // "Generator { }" + +console.log(gen.next().value); // 0 +console.log(gen.next().value); // 1 +console.log(gen.next().value); // 2 +// ...</pre> + +<h2 id="Legacy_generator_objects">Legacy generator objects</h2> + +<p>Firefox (SpiderMonkey) also implements an earlier version of generators in <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7">JavaScript 1.7</a>, where the star (*) in the function declaration was not necessary (you just use the <code>yield</code> keyword in the function body). However, legacy generators are deprecated. Do not use them; they are going to be removed ({{bug(1083482)}}).</p> + +<h3 id="Legacy_generator_methods">Legacy generator methods</h3> + +<dl> + <dt><code>Generator.prototype.next() </code>{{non-standard_inline}}</dt> + <dd>Returns a value yielded by the {{jsxref("Operators/yield", "yield")}} expression. This corresponds to <code>next()</code> in the ES2015 generator object.</dd> + <dt><code>Generator.prototype.close()</code> {{non-standard_inline}}</dt> + <dd>Closes the generator, so that when calling <code>next()</code> an {{jsxref("StopIteration")}} error will be thrown. This corresponds to the <code>return()</code> method in the ES2015 generator object.</dd> + <dt><code>Generator.prototype.send()</code> {{non-standard_inline}}</dt> + <dd>Used to send a value to a generator. The value is returned from the {{jsxref("Operators/yield", "yield")}} expression, and returns a value yielded by the next {{jsxref("Operators/yield", "yield")}} expression. <code>send(x)</code> corresponds to <code>next(x)</code> in the ES2015 generator object.</dd> + <dt><strong><code>Generator.</code></strong><code>prototype.</code><strong><code>throw()</code> </strong> {{non-standard_inline}}</dt> + <dd>Throws an error to a generator. This corresponds to the <code>throw()</code> method in the ES2015 generator object.</dd> +</dl> + +<h3 id="Legacy_generator_example">Legacy generator example</h3> + +<pre class="brush: js">function fibonacci() { + var a = yield 1; + yield a * 2; +} + +var it = fibonacci(); +console.log(it); // "Generator { }" +console.log(it.next()); // 1 +console.log(it.send(10)); // 20 +console.log(it.close()); // undefined +console.log(it.next()); // throws StopIteration (as the generator is now closed) +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generator-objects', 'Generator objects')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatChrome(39.0)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Android Webview</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + <th>Chrome for Android</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome(39.0)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome(39.0)}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<h3 id="Legacy_generators">Legacy generators</h3> + +<ul> + <li>{{jsxref("Statements/Legacy_generator_function", "The legacy generator function", "", 1)}}</li> + <li>{{jsxref("Operators/Legacy_generator_function", "The legacy generator function expression", "", 1)}}</li> + <li>{{jsxref("StopIteration")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol">The legacy Iterator protocol</a></li> +</ul> + +<h3 id="ES2015_generators">ES2015 generators</h3> + +<ul> + <li>{{jsxref("Functions", "Functions", "", 1)}}</li> + <li>{{jsxref("Statements/function", "function")}}</li> + <li>{{jsxref("Operators/function", "function expression")}}</li> + <li>{{jsxref("Function")}}</li> + <li>{{jsxref("Statements/function*", "function*")}}</li> + <li>{{jsxref("Operators/function*", "function* expression")}}</li> + <li>{{jsxref("GeneratorFunction")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">The Iterator protocol</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generator/next/index.html b/files/ru/web/javascript/reference/global_objects/generator/next/index.html new file mode 100644 index 0000000000..5e69003f85 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/next/index.html @@ -0,0 +1,116 @@ +--- +title: Generator.prototype.next() +slug: Web/JavaScript/Reference/Global_Objects/Generator/next +tags: + - ECMAScript6 + - JavaScript + - Reference + - генератор + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/next +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>next</strong></code><strong><code>()</code></strong> возвращает объект с двумя свойствами <code>done</code> и <code>value</code>. Также вы можете задать параметр для метода <code>next</code>, чтобы отправить значение в генератор.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>gen</var>.next(value)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, отправляемое в генератор. Значение будет установлено в виде результата выражения yield, т. е. в [переменная] = yield [выражение] значение, которое было передано в функцию .next будет присвоено [переменной].</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a></code> с двумя свойствами:</p> + +<ul> + <li><code>done</code> (boolean) + + <ul> + <li>Имеет значение <code>true</code>, если итератор находится за окончанием итерируемой последовательности. В этом случае <code>value</code> может указывать <em>возвращаемое значение</em> итератора.</li> + <li>Имеет значение <code>false</code>, если итератор может создать следующее значение в последовательности. Это эквивалентно вообще не указанному свойству <code>done</code>.</li> + </ul> + </li> + <li><code>value</code> - любое JavaScript значение, возвращаемое итератором. Может быть опущено, когда <code>done</code> имеет значение <code>true</code>.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_next">Использование <code>next()</code></h3> + +<p>Следующий пример показывает простой генератор и объект, который возвращает метод <code>next</code>:</p> + +<pre class="brush: js">function* gen() { + yield 1; + yield 2; + yield 3; +} + +var g = gen(); // "Generator { }" +g.next(); // "Object { value: 1, done: false }" +g.next(); // "Object { value: 2, done: false }" +g.next(); // "Object { value: 3, done: false }" +g.next(); // "Object { value: undefined, done: true }" +</pre> + +<h3 id="Отправка_значения_в_генератор">Отправка значения в генератор</h3> + +<p>В этом примере <code>next</code> вызывается со значением. Отметим, что первый вызов ничего не вывел, потому что генератор изначально ничего не получил.</p> + +<pre class="brush: js">function* gen() { + while(true) { + var value = yield null; + console.log(value); + } +} + +var g = gen(); +g.next(1); +// "{ value: null, done: false }" +g.next(2); +// 2 +// "{ value: null, done: false }" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generator.prototype.next', 'Generator.prototype.next')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generator.prototype.next', 'Generator.prototype.next')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совсестимость_с_браузерами">Совсестимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Generator.next")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><code><a href="/ru/docs/Web/JavaScript/Reference/Statements/function*">function*</a></code></li> + <li><a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итераторы и генераторы</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generator/return/index.html b/files/ru/web/javascript/reference/global_objects/generator/return/index.html new file mode 100644 index 0000000000..1e77d8c64a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/return/index.html @@ -0,0 +1,95 @@ +--- +title: Generator.prototype.return() +slug: Web/JavaScript/Reference/Global_Objects/Generator/return +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/return +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>return()</strong></code> возвращает полученное значение и останавливает генератор.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>gen</var>.return(value)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение для возврата.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Значение, которое было передано в виде аргумента.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_return">Использование <code>return()</code></h3> + +<p>Следующий пример показывает простой генератор и метод <code>return</code>.</p> + +<pre class="brush: js">function* gen() { + yield 1; + yield 2; + yield 3; +} + +var g = gen(); + +g.next(); // { value: 1, done: false } +g.return('foo'); // { value: "foo", done: true } +g.next(); // { value: undefined, done: true } +</pre> + +<p>Если <code>return(value)</code> вызывает генератор, который находится в уже "завершённом" состоянии, генератор останется в "завершённом" состоянии. Если аргумент не был передан, свойство <code>value</code> вернёт тот же объект, что и <code>.next()</code>. Если аргумент был передан, он будет установлен как значение свойства <code>value</code> возвращаемого объекта.</p> + +<pre class="brush: js">function* gen() { + yield 1; + yield 2; + yield 3; +} + +var g = gen(); +g.next(); // { value: 1, done: false } +g.next(); // { value: 2, done: false } +g.next(); // { value: 3, done: false } +g.next(); // { value: undefined, done: true } +g.return(); // { value: undefined, done: true } +g.return(1); // { value: 1, done: true } +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generator.prototype.return', 'Generator.prototype.return')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generator.prototype.return', 'Generator.prototype.return')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Generator.return")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><code><a href="/ru/docs/Web/JavaScript/Reference/Statements/function*">function*</a></code></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generator/throw/index.html b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html new file mode 100644 index 0000000000..cfdf5d3bbc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generator/throw/index.html @@ -0,0 +1,140 @@ +--- +title: Generator.prototype.throw() +slug: Web/JavaScript/Reference/Global_Objects/Generator/throw +translation_of: Web/JavaScript/Reference/Global_Objects/Generator/throw +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>throw()</strong></code> возобновляет выполнение тела генератора кидая внутри исключение <code>и возвращает объект со свойствами done и value</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>gen</var>.throw(exception)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>exception</code></dt> + <dd>Исключение, которое будет брошено. Во время отладки бывает полезно сделать его <code>instanceof</code> {{jsxref("Error")}}.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Объект с двумя свойствами:</p> + +<ul> + <li><code>done</code> (boolean) + + <ul> + <li>Имеет значение <code>true</code> если iterator прошел конец итерируемой последовательности. В этом случае <code>value</code> опционально определяется выражением <em>return value</em> внутри итератора .</li> + <li>Имеет значение <code>false</code> если iterator имеет возможность вернуть следующее значение последовательности. Это равносильно когда свойство done не указано.</li> + </ul> + </li> + <li><code>value</code> - любое JavaScript значение, возвращенное итератором. Может быть проигнорировано, когда <em><code>done</code> === <code>true</code></em>.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_throw()">Использование <code>throw()</code></h3> + +<p>В этом примере показан простой генератор и исключение, которое выбрасывается используя метод <code>throw</code>. Исключение может быть поймано, используя, как обычно, блок <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch">try...catch</a></code>.</p> + +<pre class="brush: js">function* gen() { + while(true) { + try { + yield 42; + } catch(e) { + console.log('Error caught!'); + } + } +} + +var g = gen(); +g.next(); +// { value: 42, done: false } +g.throw(new Error('Something went wrong')); +// "Error caught!" +// { value: 42, done: false } +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generator.prototype.throw', 'Generator.prototype.throw')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>13</td> + <td>{{CompatGeckoDesktop(26)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatSafari(10)}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>5.1</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile(26)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>10</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/function*">function*</a></code></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html new file mode 100644 index 0000000000..4cce9504e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generatorfunction/index.html @@ -0,0 +1,108 @@ +--- +title: GeneratorFunction +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +<div>{{JSRef}}</div> + +<p><strong><code>GeneratorFunction</code> constructor</strong> создает новый {{jsxref("Statements/function*", "generator function")}} объект. В JavaScript каждая функция-генератор - это фактически <code>GeneratorFunction</code> объект.</p> + +<p><code>Обратите внимание, что GeneratorFunction</code> - это не глобальный объект. Он может быть получен при выполнении следующего кода.</p> + +<pre class="brush: js">Object.getPrototypeOf(function*(){}).constructor +</pre> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>new GeneratorFunction ([<var>arg1</var>[, <var>arg2</var>[, ...<var>argN</var>]],] <var>functionBody</var>)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>arg1, arg2, ... arg<em>N</em></code></dt> + <dd>Имена, используемые функцией как имена формальных аргументов. Каждый должен быть строкой, которая соответствует правильному JavaScript идентификатору или списком таких строк, разделенных запятыми; например "<code>x</code>", "<code>theValue</code>", или "<code>a,b</code>".</dd> + <dt><code>functionBody</code></dt> + <dd>A string containing the JavaScript statements comprising the function definition.</dd> +</dl> + +<h2 id="Description">Description</h2> + +<p>{{jsxref("Statements/function*", "generator function")}} objects created with the <code>GeneratorFunction</code> constructor are parsed when the function is created. This is less efficient than declaring a generator function with a {{jsxref("Statements/function*", "function* expression")}} and calling it within your code, because such functions are parsed with the rest of the code.</p> + +<p>All arguments passed to the function are treated as the names of the identifiers of the parameters in the function to be created, in the order in which they are passed.</p> + +<div class="note"> +<p><strong>Note:</strong> {{jsxref("Statements/function*", "generator function")}} created with the <code>GeneratorFunction</code> constructor do not create closures to their creation contexts; they always are created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the <code>GeneratorFunction</code> constructor was called. This is different from using {{jsxref("Global_Objects/eval", "eval")}} with code for a generator function expression.</p> +</div> + +<p>Invoking the <code>GeneratorFunction</code> constructor as a function (without using the <code>new</code> operator) has the same effect as invoking it as a constructor.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt><code><strong>GeneratorFunction.length</strong></code></dt> + <dd>The <code>GeneratorFunction</code> constructor's length property whose value is 1.</dd> + <dt>{{jsxref("GeneratorFunction.prototype")}}</dt> + <dd>Allows the addition of properties to all generator function objects.</dd> +</dl> + +<h2 id="GeneratorFunction_prototype_object"><code>GeneratorFunction</code> prototype object</h2> + +<h3 id="Properties_2">Properties</h3> + +<div>{{page('/en-US/docs/Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype', 'Properties')}}</div> + +<h2 id="GeneratorFunction_instances"><code>GeneratorFunction</code> instances</h2> + +<p><code>GeneratorFunction</code> instances inherit methods and properties from {{jsxref("GeneratorFunction.prototype")}}. As with all constructors, you can change the constructor's prototype object to make changes to all <code>GeneratorFunction</code> instances.</p> + +<h2 id="Examples">Examples</h2> + +<h3 id="Creating_a_generator_function_from_a_GeneratorFunction_constructor">Creating a generator function from a <code>GeneratorFunction</code> constructor</h3> + +<pre class="brush: js">var GeneratorFunction = Object.getPrototypeOf(function*(){}).constructor +var g = new GeneratorFunction('a', 'yield a * 2'); +var iterator = g(10); +console.log(iterator.next().value); // 20 +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generatorfunction-objects', 'GeneratorFunction')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generatorfunction-objects', 'GeneratorFunction')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<div> + + +<p>{{Compat("javascript.builtins.GeneratorFunction")}}</p> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Statements/function*", "function* function")}}</li> + <li>{{jsxref("Operators/function*", "function* expression")}}</li> + <li>{{jsxref("Global_Objects/Function", "Function")}}</li> + <li>{{jsxref("Statements/function", "function statement")}}</li> + <li>{{jsxref("Operators/function", "function expression")}}</li> + <li>{{jsxref("Functions_and_function_scope", "Functions and function scope", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html b/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html new file mode 100644 index 0000000000..c451547ad0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/generatorfunction/prototype/index.html @@ -0,0 +1,58 @@ +--- +title: GeneratorFunction.prototype +slug: Web/JavaScript/Reference/Global_Objects/GeneratorFunction/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/GeneratorFunction +--- +<div>{{JSRef}}</div> + +<p>Свойство <code><strong>GeneratorFunction.prototype</strong></code> представляет собой прототип объекта {{jsxref("GeneratorFunction")}} .</p> + +<h2 id="Описание">Описание</h2> + +<p>Объект {{jsxref("GeneratorFunction")}} наследуется из <code>GeneratorFunction.prototype</code>. <code>GeneratorFunction.prototype</code> не может быть изменён.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code><strong>GeneratorFunction.constructor</strong></code></dt> + <dd>Изначальное значение {{jsxref("GeneratorFunction")}}.</dd> + <dt><code><strong>GeneratorFunction.prototype.prototype</strong></code></dt> + <dd>Значение <code>%GeneratorPrototype%</code>.</dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-generatorfunction.prototype', 'GeneratorFunction.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.GeneratorFunction.prototype")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("GeneratorFunction")}}</li> + <li>{{jsxref("Function")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/globalthis/index.html b/files/ru/web/javascript/reference/global_objects/globalthis/index.html new file mode 100644 index 0000000000..ce4cb48419 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/globalthis/index.html @@ -0,0 +1,88 @@ +--- +title: globalThis +slug: Web/JavaScript/Reference/Global_Objects/globalThis +tags: + - JavaScript + - Reference + - global + - globalThis + - this +translation_of: Web/JavaScript/Reference/Global_Objects/globalThis +--- +<div>{{jsSidebar("Objects")}}</div> + +<p>Глобальное свойство <code><strong>globalThis</strong></code> содержит значение глобального <code>this</code>, который является глобальным объектом.</p> + +<div>{{EmbedInteractiveExample("pages/js/globalprops-globalthis.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">globalThis +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Исторически, для доступа к глобальному объекту использовался разный синтаксис в разных средах JavaScript. В вебе вы могли использовать {{domxref("Window.window", "window")}}, {{domxref("Window.self", "self")}} или {{domxref("Window.frames", "frames")}}, но в <a href="/ru/docs/Web/API/Worker">Worker </a>можно использовать только <code>self</code>. В Node.js ничего из этого не работает, поэтому вы должны использовать <code>global</code>.</p> + +<p>Ключевое слово <code>this</code> можно использовать внутри функций в нестрогом режиме. Но в строгом режиме внутри функций и в Модулях <code>this</code> равняется <code>undefined</code>. Вы можете использовать <code>Function('return this')()</code>, но среды, которые отключают {{jsxref("eval", "eval()")}}, такие как {{Glossary('CSP')}} в браузерах, препятствуют использованию {{jsxref("Function")}} таким способом.</p> + +<p>Свойство <code>globalThis</code> даёт возможность стандартного доступа к глобальному значению <code>this</code> (и как следствие, к глобальному объекту) вне зависимости от окружения. В отличии от похожих свойств, таких как <code>window</code> и <code>self</code>, оно гарантирует работу как в среде, где есть <code>window</code>, так и в среде, где его нет. Таким образом вы можете получить доступ к глобальному объекту даже не зная в какой среде будет запущен код. Чтобы помочь запомнить название, просто запомните, что глобальное значение <code>this</code> равно <code>globalThis</code>.</p> + +<h3 id="HTML_и_WindowProxy">HTML и WindowProxy</h3> + +<p>Во многих движках <code>globalThis</code> будет ссылкой на фактический глобальный объект, но в веб-браузерах из-за соображений безопасности iframe и cross-window он ссылается на {{jsxref ("Proxy")}} вокруг фактического глобального объекта (который вы не можете получить прямым доступом). Это различие редко актуально в обычном использовании, но его важно знать.</p> + +<h3 id="Название">Название</h3> + +<p>Некоторые другие популярные имена, такие как <code>self</code> и <code>global</code> были исключены из рассмотрения из-за того, что они могут нарушать совместимость с существующим кодом. Смотрите <a href="https://github.com/tc39/proposal-global/blob/master/NAMING.md">документ по планированию именования</a> для большей информации.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>До <code>globalThis</code> единственным кросс-платформенным путём получения глобального объекта в любой среде было <code>Function('return this')()</code>. Однако, это нарушает <a href="/ru/docs/Web/HTTP/CSP">CSP</a> в некоторых случаях. Например, <a href="https://github.com/paulmillr/es6-shim">es6-shim</a> делает такую проверку:</p> + +<pre class="brush: js">var getGlobal = function () { + if (typeof self !== 'undefined') { return self; } + if (typeof window !== 'undefined') { return window; } + if (typeof global !== 'undefined') { return global; } + throw new Error('unable to locate global object'); +}; + +var globals = getGlobal(); + +if (typeof globals.setTimeout !== 'function') { + // в данном окружении не существует setTimeout! +} +</pre> + +<p>С <code>globalThis</code> дополнительный поиск глобального объекта в разных средах больше не нужен:</p> + +<pre class="brush: js">if (typeof globalThis.setTimeout !== 'function') { +// в данном окружении не существует setTimeout! +}</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table> + <tbody> + <tr> + <th scope="col">Specification</th> + </tr> + <tr> + <td>{{SpecName("ESDraft", "#sec-globalthis", "globalThis")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.globalThis")}}</p> + +<h3 id="Прогресс_реализации">Прогресс реализации</h3> + +<p>В следующей таблице приведено ежедневное состояние реализации этой функции, поскольку эта функция еще не достигла стабильности в разных браузерах. Данные генерируются путем запуска соответствующих тестов функциональности в <a href="https://github.com/tc39/test262">Test262</a>, стандартном наборе тестов JavaScript, в ночной сборке или в последней версии движка JavaScript каждого браузера.</p> + +<p>{{EmbedTest262ReportResultsTable("globalThis")}}</p> diff --git a/files/ru/web/javascript/reference/global_objects/index.html b/files/ru/web/javascript/reference/global_objects/index.html new file mode 100644 index 0000000000..b464ca01b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/index.html @@ -0,0 +1,166 @@ +--- +title: Стандартные встроенные объекты +slug: Web/JavaScript/Reference/Global_Objects +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects +--- +<div>{{jsSidebar("Objects")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Эта глава описывает все стандартные встроенные объекты JavaScript, вместе с их методами и свойствами.</p> + +<div class="onlyinclude"> +<p>Термин «глобальные объекты» (или стандартные встроенные объекты) здесь не следует путать с самим <em>глобальным объектом</em>. Далее в главе под этим обозначением понимаются <em>объекты в глобальном пространстве имён</em> (но только, если не используется строгий режим ECMAScript 5! В противном случае они возвращают <code>undefined</code>). Сам же <em>глобальный объект</em> в глобальном пространстве имён доступен через оператор {{jsxref("Operators/this", "this")}}. На самом деле, глобальное пространство имён <em>состоит из</em> свойств глобального объекта (в том числе включая унаследованные свойства, если они есть).</p> + +<p>Другие объекты в глобальном пространстве имён <a href="/ru/docs/Web/JavaScript/Guide/Working_with_Objects#Creating_new_objects">создаются либо с помощью пользовательских скриптов</a>, либо предоставляются приложением хоста. Объекты хоста, доступные в контекстах браузера, задокументированы в <a href="/ru/docs/Web/API/Reference">справке по API</a>. Для получения дополнительной информации о различии между <a href="/ru/docs/DOM/DOM_Reference">DOM</a> и ядром <a href="/ru/docs/Web/JavaScript">JavaScript</a>, смотрите <a href="/ru/docs/Web/JavaScript/JavaScript_technologies_overview">обзор технологии JavaScript</a>.</p> + +<h2 id="Standard_objects_by_category" name="Standard_objects_(by_category)">Стандартные объекты (по категориям)</h2> + +<h3 id="Value_properties" name="Value_properties">Значения</h3> + +<p>Глобальные свойства, возвращающие простое значение.</p> + +<ul> + <li>{{jsxref("Global_Objects/Infinity", "Infinity")}}</li> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li> + <li>{{jsxref("Global_Objects/undefined", "undefined")}}</li> + <li>литерал {{jsxref("Global_Objects/null", "null")}}</li> +</ul> + +<h3 id="Function_properties" name="Function_properties">Функции</h3> + +<p>Глобальные функции, возвращающие результат определённой подпрограммы.</p> + +<ul> + <li>{{jsxref("Global_Objects/eval", "eval()")}}</li> + <li>{{jsxref("Global_Objects/uneval", "uneval()")}} {{non-standard_inline}}</li> + <li>{{jsxref("Global_Objects/isFinite", "isFinite()")}}</li> + <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li> + <li>{{jsxref("Global_Objects/parseFloat", "parseFloat()")}}</li> + <li>{{jsxref("Global_Objects/parseInt", "parseInt()")}}</li> + <li>{{jsxref("Global_Objects/decodeURI", "decodeURI()")}}</li> + <li>{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li> + <li>{{jsxref("Global_Objects/encodeURI", "encodeURI()")}}</li> + <li>{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li> + <li>{{jsxref("Global_Objects/escape", "escape()")}} {{deprecated_inline}}</li> + <li>{{jsxref("Global_Objects/unescape", "unescape()")}} {{deprecated_inline}}</li> +</ul> + +<h3 id="Fundamental_objects" name="Fundamental_objects">Фундаментальные объекты</h3> + +<p>Общие языковые объекты, функции и ошибки.</p> + +<ul> + <li>{{jsxref("Global_Objects/Object", "Object")}}</li> + <li>{{jsxref("Global_Objects/Function", "Function")}}</li> + <li>{{jsxref("Global_Objects/Boolean", "Boolean")}}</li> + <li>{{jsxref("Global_Objects/Symbol", "Symbol")}}</li> + <li>{{jsxref("Global_Objects/Error", "Error")}}</li> + <li>{{jsxref("Global_Objects/EvalError", "EvalError")}}</li> + <li>{{jsxref("Global_Objects/InternalError", "InternalError")}}</li> + <li>{{jsxref("Global_Objects/RangeError", "RangeError")}}</li> + <li>{{jsxref("Global_Objects/ReferenceError", "ReferenceError")}}</li> + <li>{{jsxref("Global_Objects/SyntaxError", "SyntaxError")}}</li> + <li>{{jsxref("Global_Objects/TypeError", "TypeError")}}</li> + <li>{{jsxref("Global_Objects/URIError", "URIError")}}</li> +</ul> + +<h3 id="Numbers_and_dates" name="Numbers_and_dates">Числа и даты</h3> + +<p>Объекты, имеющие дело с числами, датами и математическими вычислениями.</p> + +<ul> + <li>{{jsxref("Global_Objects/Number", "Number")}}</li> + <li>{{jsxref("Global_Objects/Math", "Math")}}</li> + <li>{{jsxref("Global_Objects/Date", "Date")}}</li> +</ul> + +<h3 id="Text_processing" name="Text_processing">Обработка текста</h3> + +<p>Объекты для манипулирования текстом.</p> + +<ul> + <li>{{jsxref("Global_Objects/String", "String")}}</li> + <li>{{jsxref("Global_Objects/RegExp", "RegExp")}}</li> +</ul> + +<h3 id="Indexed_collections" name="Indexed_collections">Индексированные коллекции</h3> + +<p>Коллекции, упорядоченные по индексам. Массивоподобные объекты.</p> + +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}</li> + <li>{{jsxref("Global_Objects/Int8Array", "Int8Array")}}</li> + <li>{{jsxref("Global_Objects/Uint8Array", "Uint8Array")}}</li> + <li>{{jsxref("Global_Objects/Uint8ClampedArray", "Uint8ClampedArray")}}</li> + <li>{{jsxref("Global_Objects/Int16Array", "Int16Array")}}</li> + <li>{{jsxref("Global_Objects/Uint16Array", "Uint16Array")}}</li> + <li>{{jsxref("Global_Objects/Int32Array", "Int32Array")}}</li> + <li>{{jsxref("Global_Objects/Uint32Array", "Uint32Array")}}</li> + <li>{{jsxref("Global_Objects/Float32Array", "Float32Array")}}</li> + <li>{{jsxref("Global_Objects/Float64Array", "Float64Array")}}</li> +</ul> + +<h3 id="Keyed_collections" name="Keyed_collections">Коллекции по ключу</h3> + +<p>Коллекции объектов по ключу. Элементы обходятся в порядке вставки.</p> + +<ul> + <li>{{jsxref("Global_Objects/Map", "Map")}}</li> + <li>{{jsxref("Global_Objects/Set", "Set")}}</li> + <li>{{jsxref("Global_Objects/WeakMap", "WeakMap")}}</li> + <li>{{jsxref("Global_Objects/WeakSet", "WeakSet")}}</li> +</ul> + +<h3 id="Structured_data" name="Structured_data">Структурированные данные</h3> + +<p>Буферы данных и Объектная нотация JavaScript (<strong>J</strong>ava<strong>S</strong>cript <strong>O</strong>bject <strong>N</strong>otation).</p> + +<ul> + <li><code><a href="/ru/docs/JavaScript_typed_arrays/ArrayBuffer">ArrayBuffer</a></code></li> + <li><code><a href="/ru/docs/JavaScript_typed_arrays/DataView">DataView</a></code></li> + <li>{{jsxref("Global_Objects/JSON", "JSON")}}</li> +</ul> + +<h3 id="Control_abstraction_objects" name="Control_abstraction_objects">Объекты управляющих абстракций</h3> + +<ul> + <li>{{jsxref("Global_Objects/Promise", "Promise")}}</li> +</ul> + +<h3 id="Reflection" name="Reflection">Рефлексия</h3> + +<ul> + <li>{{jsxref("Global_Objects/Reflect", "Reflect")}} {{experimental_inline}}</li> + <li>{{jsxref("Global_Objects/Proxy", "Proxy")}} {{experimental_inline}}</li> +</ul> + +<h3 id="Internationalization" name="Internationalization">Интернационализация</h3> + +<p>Дополнения к ядру ECMAScript, отвечающие за функциональность, чувствительную к языку.</p> + +<ul> + <li>{{jsxref("Global_Objects/Intl", "Intl")}}</li> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}</li> +</ul> + +<h3 id="Non-standard_objects" name="Non-standard_objects">Нестандартные объекты</h3> + +<ul> + <li>{{jsxref("Generator")}} {{non-standard_inline}}</li> + <li>{{jsxref("Iterator")}} {{non-standard_inline}}</li> + <li>{{jsxref("ParallelArray")}} {{non-standard_inline}}</li> + <li>{{jsxref("StopIteration")}} {{non-standard_inline}}</li> +</ul> + +<h3 id="Other" name="Other">Прочее</h3> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Functions/arguments">Аргументы функции (<code>arguments</code>)</a></li> +</ul> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/infinity/index.html b/files/ru/web/javascript/reference/global_objects/infinity/index.html new file mode 100644 index 0000000000..143576e6b7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/infinity/index.html @@ -0,0 +1,98 @@ +--- +title: Infinity +slug: Web/JavaScript/Reference/Global_Objects/Infinity +tags: + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Infinity +--- +<div>{{jsSidebar("Objects")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Глобальное свойство <code><strong>Infinity</strong></code> является числовым значением, представляющим бесконечность.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<div> </div> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-infinity.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>Infinity</code> является свойством <em>глобального объекта</em>, то есть, это переменная в глобальной области видимости.</p> + +<p>Начальным значением <code>Infinity</code> является {{jsxref("Number.POSITIVE_INFINITY")}}. Значение <code>Infinity</code> (положительная бесконечность) больше любого другого числа, включая саму положительную бесконечность. Это значение ведёт себя как математическая бесконечность; например, любое положительное число, умноженное на <code>Infinity</code> даёт <code>Infinity</code>, а любое число, делённое на <code>Infinity</code> даёт 0.</p> + +<p>В спецификации ECMAScript 5 <code>Infinity</code> является свойством только для чтения (реализована в JavaScript 1.8.5 / Firefox 4).</p> + +<p> </p> + +<h2 id="Примеры">Примеры</h2> + +<pre><code>console.log(Infinity ); /* Infinity */ +console.log(Infinity + 1 ); /* Infinity */ +console.log(Math.pow(10, 1000)); /* Infinity */ +console.log(Math.log(0) ); /* -Infinity */ +console.log(1 / Infinity ); /* 0 */</code></pre> + +<p> </p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.1.2', 'Infinity')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-infinity', 'Infinity')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Infinity")}}</p> + +<p> </p> + +<div> </div> + +<div id="compat-mobile"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li> + <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li> + <li>{{jsxref("Number.isFinite")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/int16array/index.html b/files/ru/web/javascript/reference/global_objects/int16array/index.html new file mode 100644 index 0000000000..3178930fc7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int16array/index.html @@ -0,0 +1,201 @@ +--- +title: Int16Array +slug: Web/JavaScript/Reference/Global_Objects/Int16Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int16Array +--- +<div>{{JSRef}}</div> + +<div> </div> + +<p>Объект <strong><code>Int16Array</code></strong> представляет типизированный массив 16-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте {{jsxref("DataView")}}. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Int16Array</code></strong>, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Int16Array(); // new in ES2017 +new Int16Array(length); +new Int16Array(typedArray); +new Int16Array(object); +new Int16Array(buffer [, byteOffset [, length]]);</pre> + +<p>For more information about the constructor syntax and the parameters, see <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int16Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Returns a number value of the element size. <code>2</code> in the case of an <code>Int16Array</code>.</dd> + <dt>Int16Array.length</dt> + <dd>Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Int16Array.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Int16Array</code> type: "Int16Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Int16Array.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Int16Array.from()")}}</dt> + <dd>Creates a new <code>Int16Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Int16Array.of()")}}</dt> + <dd>Creates a new <code>Int16Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Int16Array_prototype"><code>Int16Array</code> prototype</h2> + +<p>All <code>Int16Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Int16Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Int16Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Int16Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Int16Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Int16Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Int16Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int16Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Int16Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Int16Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Int16Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Int16Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Int16Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Int16Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Int16Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Int16Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Int16Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Int16Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Int16Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Int16Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Int16Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Int16Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Int16Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Int16Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Int16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int16Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Int16Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Int16Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Int16Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Int16Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Int16Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Int16Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Int16Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Int16Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Int16Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Int16Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Int16Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Int16Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Int16Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create an <code>Int16Array</code>:</p> + +<pre class="brush: js">// From a length +var int16 = new Int16Array(2); +int16[0] = 42; +console.log(int16[0]); // 42 +console.log(int16.length); // 2 +console.log(int16.BYTES_PER_ELEMENT); // 2 + +// From an array +var arr = new Int16Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Int16Array([21, 31]); +var y = new Int16Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(8); +var z = new Int16Array(buffer, 0, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var int16 = new Int16Array(iterable); +// Int16Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Int16Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Int16Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Int16Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Int16Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Int16Array([1, 2, 3]); +// TypeError: calling a builtin Int16Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Int16Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/int32array/index.html b/files/ru/web/javascript/reference/global_objects/int32array/index.html new file mode 100644 index 0000000000..bcb0ba23a0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int32array/index.html @@ -0,0 +1,199 @@ +--- +title: Int32Array +slug: Web/JavaScript/Reference/Global_Objects/Int32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int32Array +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>Int32Array</code></strong> представляет типизированный массив 32-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте <a class="new" href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/DataView" rel="nofollow" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>DataView</code></a>. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Int32Array</code></strong>, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new Int32Array(); // добавлено в ES2017 +new Int32Array(length); +new Int32Array(typedArray); +new Int32Array(object); +new Int32Array(buffer [, byteOffset [, length]]);</pre> + +<p>Для получения дополнительной информации о синтаксисе конструктора и параметрах <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int32Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Возвращает числовое значение размера элемента. <code>4</code> в случае с <code>Int32Array</code>.</dd> + <dt>Int32Array.length</dt> + <dd>Свойство статического размера, значение которого равно 3. Для актуального размера (колличества элементов), смотрите {{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Int32Array.name")}}</dt> + <dd>Возвращяает строковое значение названия конструктора. В случае с тиопм <code>Int32Array</code>: "Int32Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Int32Array.prototype")}}</dt> + <dd>Прототип для <em>TypedArray</em> объектов.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Int32Array.from()")}}</dt> + <dd>Создаёт новый <code>Int32Array</code> из массивоподобного или итеративного объекта. Смотрите также {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Int32Array.of()")}}</dt> + <dd>Создаёт новый <code>Int32Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Int32Array_прототип"><code>Int32Array</code> прототип</h2> + +<p>All <code>Int32Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Свойства_2">Свойства</h3> + +<dl> + <dt><code>Int32Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Int32Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Int32Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Int32Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Int32Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Int32Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int32Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Int32Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Int32Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Int32Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Методы_2">Методы</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Int32Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Int32Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Int32Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Int32Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Int32Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Int32Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Int32Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Int32Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Int32Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Int32Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Int32Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Int32Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Int32Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Int32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int32Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Int32Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Int32Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Int32Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Int32Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Int32Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Int32Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Int32Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Int32Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Int32Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Int32Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Int32Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Int32Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Int32Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p>Разные способы создания <code>Int32Array</code>:</p> + +<pre class="brush: js">// С указанием размера +var int32 = new Int32Array(2); +int32[0] = 42; +console.log(int32[0]); // 42 +console.log(int32.length); // 2 +console.log(int32.BYTES_PER_ELEMENT); // 4 + +// Из массива (Array) +var arr = new Int32Array([21,31]); +console.log(arr[1]); // 31 + +// Из другого типизированного массива (TypedArray) +var x = new Int32Array([21, 31]); +var y = new Int32Array(x); +console.log(y[0]); // 21 + +// Из ArrayBuffer +var buffer = new ArrayBuffer(16); +var z = new Int32Array(buffer, 0, 4); + +// Из итерируемого объекта (iterable) +var iterable = function*(){ yield* [1,2,3]; }(); +var int32 = new Int32Array(iterable); +// Int32Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Статус</th> + <th scope="col">Коментарии</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Int32Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Int32Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Начиная с ECMAScript 2015, конструкторы <code>Int32Array</code> требуют оператор {{jsxref("Operators/new", "new")}}. Вызов <code>Int32Array</code> коструктора как функцию без оператора <code>new</code>, вызовет ошибку {{jsxref("TypeError")}}.</p> + +<pre class="brush: js example-bad">var dv = Int32Array([1, 2, 3]); +// TypeError: calling a builtin Int32Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Int32Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/int8array/index.html b/files/ru/web/javascript/reference/global_objects/int8array/index.html new file mode 100644 index 0000000000..68ac4ff10c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/int8array/index.html @@ -0,0 +1,199 @@ +--- +title: Int8Array +slug: Web/JavaScript/Reference/Global_Objects/Int8Array +translation_of: Web/JavaScript/Reference/Global_Objects/Int8Array +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>Int8Array</code></strong> представляет типизированный массив 8-разрядных целых значений. Содержимое инициализируется значением 0. Создав экземпляр <strong><code>Int8Array</code></strong>, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Int8Array(); // new in ES2017 +new Int8Array(length); +new Int8Array(typedArray); +new Int8Array(object); +new Int8Array(buffer [, byteOffset [, length]]);</pre> + +<p>Для более детальной информации о синтаксисе конструктора смотрите <em><a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Int8Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Возвращает числовое значение размера элемента массива. <code>1</code> в случае с <code>Int8Array</code>.</dd> + <dt>Int8Array.length</dt> + <dd>Статическая длина конструктора <code>Int8Array</code>, всегда равна <code>3</code> (т.к. конструктор принимает до 3 аргументов). Чтобы узнать длину созданого массива, see {{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Int8Array.name")}}</dt> + <dd>Возращает строчное значение имени конструктора. В случае с <code>Int8Array</code>: "Int8Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Int8Array.prototype")}}</dt> + <dd>Прототип для <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Int8Array.from()")}}</dt> + <dd>Creates a new <code>Int8Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Int8Array.of()")}}</dt> + <dd>Creates a new <code>Int8Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Int8Array_prototype"><code>Int8Array</code> prototype</h2> + +<p>All <code>Int8Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Int8Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Int8Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Int8Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Int8Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Int8Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Int8Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Int8Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Int8Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Int8Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Int8Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Int8Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Int8Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Int8Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Int8Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Int8Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Int8Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Int8Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Int8Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Int8Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Int8Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Int8Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Int8Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Int8Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Int8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Int8Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Int8Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Int8Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Int8Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Int8Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Int8Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Int8Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Int8Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Int8Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Int8Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Int8Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Int8Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Int8Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Int8Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create an <code>Int8Array</code>:</p> + +<pre class="brush: js">// From a length +var int8 = new Int8Array(2); +int8[0] = 42; +console.log(int8[0]); // 42 +console.log(int8.length); // 2 +console.log(int8.BYTES_PER_ELEMENT); // 1 + +// From an array +var arr = new Int8Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Int8Array([21, 31]); +var y = new Int8Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(8); +var z = new Int8Array(buffer, 1, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var int8 = new Int8Array(iterable); +// Int8Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Int8Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Int8Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Int8Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Int8Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Int8Array([1, 2, 3]); +// TypeError: calling a builtin Int8Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Int8Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/internalerror/index.html b/files/ru/web/javascript/reference/global_objects/internalerror/index.html new file mode 100644 index 0000000000..50aa493d12 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/internalerror/index.html @@ -0,0 +1,113 @@ +--- +title: InternalError +slug: Web/JavaScript/Reference/Global_Objects/InternalError +tags: + - Error + - InternalError + - JavaScript + - Non-standard + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Объект <code><strong>InternalError</strong></code> представляет ошибку, возникающую внутри движка JavaScript. Например: "InternalError: too much recursion".</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>new InternalError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Исключение <code>InternalError</code> выбрасывается при возникновении внутренней ошибки в движке JavaScript.</p> +<p>Как правило, эти ошибки связаны с тем, что что-то стало слишком большим, либо чего-то стало слишком много, например:</p> +<ul> + <li>"too many switch cases" — слишком много веток <code>case</code> в операторе <code>switch</code>;</li> + <li>"too many parentheses in regular expression" — слишком много круглых скобок в регулярном выражении;</li> + <li>"array initializer too large" — инициализатор массива слишком большой;</li> + <li>"too much recursion" — слишком глубокая рекурсия.</li> +</ul> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt>{{jsxref("InternalError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>InternalError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Глобальный объект <code>InternalError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="InternalError_instances" name="InternalError_instances">Экземпляры объекта <code>InternalError</code></h2> + +<h3 id="Properties_of_InternalError_instances" name="Properties_of_InternalError_instances">Свойства</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/InternalError/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_InternalError_instances" name="Methods_of_InternalError_instances">Методы</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/InternalError/prototype', 'Methods')}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("InternalError.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html new file mode 100644 index 0000000000..31c8829a90 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/internalerror/prototype/index.html @@ -0,0 +1,99 @@ +--- +title: InternalError.prototype +slug: Web/JavaScript/Reference/Global_Objects/InternalError/prototype +tags: + - Error + - InternalError + - JavaScript + - Non-standard + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/InternalError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>InternalError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("InternalError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("InternalError")}} наследуются от объекта <code>InternalError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>InternalError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "InternalError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "InternalError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "InternalError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "InternalError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "InternalError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "InternalError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("InternalError")}} не содержит собственных методов, экземпляры {{jsxref("InternalError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html new file mode 100644 index 0000000000..bcb34c805e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/compare/index.html @@ -0,0 +1,125 @@ +--- +title: Intl.Collator.prototype.compare +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare +tags: + - Collator + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/compare +--- +<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.Collator.prototype.compare</code></strong> возвращает функцию-геттер, сравнивающую две строки согласно порядку сортировки соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>collator</var>.compare(<var>string1</var>, <var>string2</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>string1</code></dt> + <dt><code>string2</code></dt> + <dd>Сравниваемые друг с другом строки.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Функция, возвращённая гетером <code>compare</code>, возвращает число, указывающее, как строки <code>string1</code> и <code>string2</code> сравниваются друг с другом в соответствии с порядком сортировки объекта {{jsxref("Global_Objects/Collator", "Collator")}}: отрицательное значение, если строка <code>string1</code> предшествует строке <code>string2</code>; положительное значение, если строка <code>string1</code> следует за строкой <code>string2</code>; 0, если строки считаются равными.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_compare_for_sort_array" name="Example:_Using_compare_for_sort_array">Пример: использование функции <code>compare</code> для сортировки массива</h3> +<p>Использование функции, возвращённой геттером <code>compare</code>, для сортировки массивов. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/Collator", "Collator")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.sort()")}} напрямую.</p> +<pre class="brush: js">var a = ['Offenbach', 'Österreich', 'Odenwald']; +var collator = new Intl.Collator('de-u-co-phonebk'); +a.sort(collator.compare); +console.log(a.join(', ')); +// → "Odenwald, Österreich, Offenbach" +</pre> + +<h3 id="Example_Using_compare_for_search_in_array" name="Example:_Using_compare_for_search_in_array">Пример: использование функции <code>compare</code> для поиска в массиве</h3> +<p>Использование функции, возвращённой геттером <code>compare</code>, для поиска совпадающих строк в массиве:</p> +<pre class="brush: js">var a = ['Congrès', 'congres', 'Assemblée', 'poisson']; +var collator = new Intl.Collator('fr', { usage: 'search', sensitivity: 'base' }); +var s = 'congres'; +var matches = a.filter(function(v) { + return collator.compare(v, s) === 0; +}); +console.log(matches.join(', ')); +// → "Congrès, congres" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-10.3.2', 'Intl.Collator.prototype.compare')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> + <li>{{jsxref("String.prototype.localeCompare()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/index.html new file mode 100644 index 0000000000..cf3a3d3e52 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/index.html @@ -0,0 +1,187 @@ +--- +title: Intl.Collator +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator +tags: + - Collator + - Internationalization + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator +--- +<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Объект <strong><code>Intl.Collator</code></strong> является конструктором <dfn>сортировщиков</dfn> — объектов, включающих языко-зависимое сравнение строк.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>new Intl.Collator([<var>locales</var>[, <var>options</var>]]) +Intl.Collator.call(<var>this</var>[, <var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>locales</code></dt> + <dd> + <p>Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:</p> + <dl> + <dt><code>co</code></dt> + <dd>Варианты сортировки для конкретных локалей. Возможные значения включают в себя: <code>"big5han"</code>, <code>"dict"</code>, <code>"direct"</code>, <code>"ducet"</code>, <code>"gb2312"</code>, <code>"phonebk"</code>, <code>"phonetic"</code>, <code>"pinyin"</code>, <code>"reformed"</code>, <code>"searchjl"</code>, <code>"stroke"</code>, <code>"trad"</code> и <code>"unihan"</code>. Значения <code>"standard"</code> и <code>"search"</code> игнорируются; они заменяются свойством <code>usage</code> аргумента <code>options</code> (смотрите ниже).</dd> + <dt><code>kn</code></dt> + <dd>Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются <code>"true"</code> и <code>"false"</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет.</dd> + <dt><code>kf</code></dt> + <dd>Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются <code>"upper"</code>, <code>"lower"</code> и <code>"false"</code> (используется значение по умолчанию из локали). Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет.</dd> + </dl> + </dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:</p> + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + <dt><code>usage</code></dt> + <dd>Определяет, используется ли сравнение для сортировки или для поиска совпадающих строк. Возможными значениями являются <code>"sort"</code> и <code>"search"</code>; значением по умолчанию является <code>"sort"</code>.</dd> + <dt><code>sensitivity</code></dt> + <dd> + <p>Определяет, какие различия в строках должны приводить к ненулевому результату. Возможными значениями являются:</p> + <ul> + <li><code>"base"</code>: считаются различными только строки, отличающиеся базовыми буквами. Примеры: <code>a ≠ b</code>, <code>a = á</code>, <code>a = A</code>.</li> + <li><code>"accent"</code>: считаются различными только строки, отличающиеся базовыми буквами или акцентами и другими диакритическими знаками. Примеры: <code>a ≠ b</code>, <code>a ≠ á</code>, <code>a = A</code>.</li> + <li><code>"case"</code>: считаются различными только строки, отличающиеся базовыми буквами или регистром букв. Примеры: <code>a ≠ b</code>, <code>a = á</code>, <code>a ≠ A</code>.</li> + <li><code>"variant"</code>: считаются различными строки, отличающиеся базовыми буквами, акцентами и другими диакритическими знаками или регистром букв. Также во внимание могут приниматься и другие различия. Примеры: <code>a ≠ b</code>, <code>a ≠ á</code>, <code>a ≠ A</code>.</li> + </ul> + <p>Значением по умолчанию является <code>"variant"</code> при использовании свойства <code>usage</code>, равного <code>"sort"</code>, и зависит от локали при использовании свойства <code>usage</code>, равного <code>"search"</code>.</p> + </dd> + <dt><code>ignorePunctuation</code></dt> + <dd>Определяет, должна ли игнорироваться пунктуация. Возможными значениями являются <code>true</code> и <code>false</code>; значением по умолчанию является <code>false</code>.</dd> + <dt><code>numeric</code></dt> + <dd>Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются <code>true</code> и <code>false</code>; значением по умолчанию является <code>false</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет. Реализации не обязаны поддерживать это свойство.</dd> + <dt><code>caseFirst</code></dt> + <dd>Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются <code>"upper"</code>, <code>"lower"</code> и <code>"false"</code> (используется значение по умолчанию из локали); значением по умолчанию является <code>"false"</code>. Эта опция может быть установлена через свойство аргумента <code>options</code>, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента <code>options</code> имеет приоритет. Реализации не обязаны поддерживать это свойство.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<h3 id="Properties" name="Properties">Свойства</h3> +<dl> + <dt>{{jsxref("Collator.prototype", "Intl.Collator.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}</dt> + <dd>Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.</dd> +</dl> + +<h2 id="Collator_instances" name="Collator_instances">Экземпляры объекта <code>Collator</code></h2> + +<h3 id="Properties_of_Collator_instance" name="Properties_of_Collator_instance">Свойства</h3> +<p>Экземпляры <code>Collator</code> наследуют следующие свойства из своего прототипа:</p> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_Collator_instance" name="Methods_of_Collator_instance">Методы</h3> +<p>Экземпляры <code>Collator</code> наследуют следующие методы из своего прототипа:</p> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Collator" name="Example:_Using_Collator">Пример: использование <code>Collator</code></h3> +<p>Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:</p> +<pre class="brush: js">console.log(new Intl.Collator().compare('a', 'c')); // → отрицательное значение +console.log(new Intl.Collator().compare('c', 'a')); // → положительное значение +console.log(new Intl.Collator().compare('a', 'a')); // → 0 +</pre> +<p>Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только чтобы при следовании строки до значение было отрицательным, а после — положительным.</p> + +<h3 id="Example_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> +<p>Результаты, предоставляемые функцией {{jsxref("Collator.prototype.compare()")}} сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> +<pre class="brush: js">// В немецком буква ä идёт рядом с буквой a +console.log(new Intl.Collator('de').compare('ä', 'z')); +// → отрицательное значение + +// В шведском буква ä следует после буквы z +console.log(new Intl.Collator('sv').compare('ä', 'z')); +// → положительное значение +</pre> + +<h3 id="Example_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> +<p>Результат, предоставляемый функцией {{jsxref("Collator.prototype.compare()")}}, может быть настроен с помощью аргумента <code>options</code>:</p> +<pre class="brush: js">// В немецком буква a является базовой для буквы ä +console.log(new Intl.Collator('de', { sensitivity: 'base' }).compare('ä', 'a')); +// → 0 + +// В шведском буквы ä и a являются двумя разными базовыми буквами +console.log(new Intl.Collator('sv', { sensitivity: 'base' }).compare('ä', 'a')); +// → положительное значение +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}</div> diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html new file mode 100644 index 0000000000..1a9983f373 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.Collator.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/prototype +tags: + - Collator + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator +--- +<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.Collator.prototype</code></strong> представляет объект прототипа конструктора {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Смотрите {{jsxref("Global_Objects/Collator", "Collator")}} для описания экземпляров <code>Intl.NumberFormat</code>.</p> +<p>Экземпляры {{jsxref("Global_Objects/Collator", "Intl.Collator")}} наследуются от <code>Intl.NumberFormat.prototype</code>. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>Intl.Collator.prototype.constructor</code></dt> + <dd>Ссылка на {{jsxref("Global_Objects/Collator", "Intl.Collator")}}.</dd> + <dt>{{jsxref("Collator.compare", "Intl.Collator.prototype.compare")}}</dt> + <dd>Геттер; возвращает функцию, сравнивающую две строки согласно порядку сортировки этого объекта {{jsxref("Global_Objects/Collator", "Collator")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("Collator.resolvedOptions", "Intl.Collator.prototype.resolvedOptions()")}}</dt> + <dd>Возвращает новый объект со свойствами, отражающими локаль и опции сравнения строк, вычисленные при инициализации объекта.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-10.2.1', 'Intl.Collator.prototype')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html new file mode 100644 index 0000000000..001b0a86ed --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/resolvedoptions/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.Collator.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions +tags: + - Collator + - Internationalization + - JavaScript + - Method + - NeedsExample + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/resolvedOptions +--- +<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.Collator.prototype.resolvedOptions()</code></strong> возвращает новый объект со свойствами, отражающими локаль и параметры сравнения строк, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>collator</var>.resolvedOptions()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает новый объект со свойствами, отражающими локаль и параметры сравнения строк, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/Collator", "Collator")}}. Объект содержит следующие свойства:</p> +<dl> + <dt><code>locale</code></dt> + <dd>Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство <code>locale</code>.</dd> + <dt><code>usage</code></dt> + <dt><code>sensitivity</code></dt> + <dt><code>ignorePunctuation</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code>, либо значения по умолчанию.</dd> + <dt><code>collation</code></dt> + <dd>Значение, запрошенное ключом расширения Unicode <code>"co"</code>, если он поддерживается для локали <code>locale</code>, либо значение <code>"default"</code>.</dd> + <dt><code>numeric</code></dt> + <dt><code>caseFirst</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code> или запрошенные ключами расширения Unicode <code>"kn"</code> и <code>"kf"</code>, либо значения по умолчанию. Если реализация не поддерживает эти свойства, они будут опущены.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-10.3.3', 'Intl.Collator.prototype.resolvedOptions')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html new file mode 100644 index 0000000000..5aca430d38 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/collator/supportedlocalesof/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.Collator.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf +tags: + - Collator + - Internationalization + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator/supportedLocalesOf +--- +<div>{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.Collator.supportedLocalesOf()</code></strong> возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при сравнении строк без отката к локали по умолчанию среды выполнения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Intl.Collator.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>locales</code></dt> + <dd>Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.</dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект, который может содержать следующее свойство:</p> + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает массив с подмножеством языковых меток, предоставленных в аргументе <code>locales</code>. Возвращаются те языковые метки, для которых среда выполнения поддерживает сравнение строк без отката к локали по умолчанию; при поиске используется предоставленный алгоритм сопоставления локалей.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_supportedLocalesOf" name="Example:_Using_supportedLocalesOf">Пример: использование <code>supportedLocalesOf</code></h3> +<p>Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское сравнение строк, метод <code>supportedLocalesOf</code> вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка <code>pinyin</code> не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма <code>"lookup"</code> — сопоставление <code>"best fit"</code> может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.</p> +<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID']; +var options = { localeMatcher: 'lookup' }; +console.log(Intl.Collator.supportedLocalesOf(locales, options).join(', ')); +// → "id-u-co-pinyin, de-ID" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-10.2.2', 'Intl.Collator.supportedLocalesOf')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html new file mode 100644 index 0000000000..ff24de6317 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/format/index.html @@ -0,0 +1,123 @@ +--- +title: Intl.DateTimeFormat.prototype.format +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format +tags: + - DateTimeFormat J + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format +--- +<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.DateTimeFormat.prototype.format</code></strong> возвращает функцию-геттер, форматирующую дату согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateTimeFormat</var>.format(<var>date</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>date</code></dt> + <dd>Дата для форматирования.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Функция, возвращённая геттером <code>format</code>, форматирует дату согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_format" name="Example:_Using_format">Пример: использование функции <code>format</code></h3> +<p>Использование функции, возвращённой геттером <code>format</code>, для форматирования одной даты, здесь пример для сербского языка:</p> +<pre class="brush: js">var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; +var dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options); +console.log(dateTimeFormat.format(new Date())); +// → "недеља, 7. април 2013." +</pre> + +<h3 id="Example_Using_format_with_map" name="Example:_Using_format_with_map">Пример: использование функции <code>format</code> вместе с <code>map</code></h3> +<p>Использование функции, возвращённой геттером <code>format</code>, для форматирования всех дат в массиве. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.map()")}} напрямую.</p> +<pre class="brush: js">var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)]; +var options = { year: 'numeric', month: 'long' }; +var dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options); +var formatted = a.map(dateTimeFormat.format); +console.log(formatted.join('; ')); +// → "setembro de 2012; dezembro de 2012; abril de 2012" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-12.3.2', 'Intl.DateTimeFormat.format')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html new file mode 100644 index 0000000000..acfff0a5a2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/formattoparts/index.html @@ -0,0 +1,169 @@ +--- +title: Intl.DateTimeFormat.prototype.formatToParts() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts +tags: + - DateTimeFormat + - Intl + - JavaScript + - Method + - Prototype + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts +--- +<div>{{JSRef}}</div> + +<div>Метод <strong><code>Intl.DateTimeFormat.prototype.formatToParts()</code></strong> позволяет выполнять форматирование строк с учётом форматирования <code>DateTimeFormat</code>.</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Intl.DateTimeFormat.prototype.formatToParts(date)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>date</code> {{optional_inline}}</dt> + <dd>Дата, которую нужно отформатировать.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив объектов {{jsxref("Array")}}, содержащий отформатированную дату по частям.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>formatToParts()</code> полезен для пользовательского форматирования строки даты. Он возвращает массив объектов {{jsxref("Array")}}, содерщащий специфичные для данного места токены, из которых можно выстроить пользовательскую строку, которая сохранит специфичные для данного места части. Структура возвращаемого значения методом <code>formatToParts()</code> выглядит так:</p> + +<pre class="brush: js">[ + { type: 'day', value: '17' }, + { type: 'weekday', value: 'Monday' } +]</pre> + +<p>Возможные типы:</p> + +<dl> + <dt>day</dt> + <dd>Строка, используемая для дня, например, <code>"17"</code>.</dd> + <dt>dayPeriod</dt> + <dd>Строка, используемая для времени суток, например, <code>"AM"</code> или <code>"PM"</code>.</dd> + <dt>era</dt> + <dd>Строка, используемая для эры, например, <code>"BC"</code> или <code>"AD"</code>.</dd> + <dt>hour</dt> + <dd>Строка, используемая для часа, например, <code>"3"</code> или <code>"03"</code>.</dd> + <dt>literal</dt> + <dd>Строка, используемая для разделения значений даты и времени, например, <code>"/"</code>, <code>","</code>, <code>"o'clock"</code>, <code>"de"</code> и другие.</dd> + <dt>minute</dt> + <dd>Строка, используемая для минут, например, <code>"00"</code>.</dd> + <dt>month</dt> + <dd>Строка, используемая для месяца, например, <code>"12"</code>.</dd> + <dt>second</dt> + <dd>Строка, используемая для секунд, например, <code>"07"</code> или <code>"42"</code>.</dd> + <dt>timeZoneName</dt> + <dd>Строка, используемая для названия временной зоны, например, <code>"UTC"</code>.</dd> + <dt>weekday</dt> + <dd>Строка, используемая для дня недели, например, <code>"M"</code>, <code>"Monday"</code> или <code>"Montag"</code>.</dd> + <dt>year</dt> + <dd>Строка, используемая для года, например, <code>"2012"</code> или <code>"96"</code>.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p><code>DateTimeFormat</code> выводит локализированные строки, которые нельзя изменять напрямую:</p> + +<pre class="brush: js">var date = Date.UTC(2012, 11, 17, 3, 0, 42); + +var formatter = new Intl.DateTimeFormat('ru', { + weekday: 'long', + year: 'numeric', + month: 'numeric', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + hour12: true, + timeZone: 'UTC' +}); + +formatter.format(date); +// "понедельник, 17.12.2012 г., 3:00:42 AM" +</pre> + +<p>Однако, во многих пользовательских интерфейсах есть желание настроить форматирование этой строки. Метод <code>formatToParts</code> включает форматирование строки с учётом местности, созданной форматером <code>DateTimeFormat</code>, предоставляя вам строку по частям:</p> + +<pre class="brush: js">formatter.formatToParts(date); + +// возвращаемое значение: +[ + { type: 'weekday', value: 'понедельник'}, + { type: 'literal', value: ', ' }, + { type: 'day', value: '17' }, + { type: 'literal', value: '.' }, + { type: 'month', value: '12' }, + { type: 'literal', value: '.' }, + { type: 'year', value: '2012' }, + { type: 'literal', value: 'г., ' }, + { type: 'hour', value: '3' }, + { type: 'literal', value: ':' }, + { type: 'minute', value: '00' }, + { type: 'literal', value: ':' }, + { type: 'second', value: '42' }, + { type: 'literal', value: ' ' }, + { type: 'dayPeriod', value: 'AM' } +] +</pre> + +<p>Теперь информация доступна по отдельности и может быть отформатирована и объединена снова в пользавотельском порядке. Например, используя {{jsxref("Array.prototype.map()")}}, <a href="/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions">стрелочные функции</a>, <a href="/ru/docs/Web/JavaScript/Reference/Statements/switch">инструкцию switch</a>, <a href="/ru/docs/Web/JavaScript/Reference/template_strings">шаблонные строки</a> и {{jsxref("Array.prototype.reduce()")}}.</p> + +<pre class="brush: js">var dateString = formatter.formatToParts(date).map(({type, value}) => { + switch (type) { + case 'dayPeriod': return `<b>${value}</b>`; + default : return value; + } +}).reduce((string, part) => string + part); +</pre> + +<p>Здесь время суток будет выделено жирным с использованием метода <code>formatToParts()</code>.</p> + +<pre class="brush: js">console.log(formatter.format(date)); +// "понедельник, 17.12.2012 г., 3:00:42 AM" + +console.log(dateString); +// "понедельник, 17.12.2012 г., 3:00:42 <b>AM</b>"</pre> + +<h2 id="Полифилл">Полифилл</h2> + +<p>Полифил для данного метода доступен <a href="https://github.com/zbraniecki/proposal-intl-formatToParts">здесь</a>.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецфикация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES Int Draft', '#sec-Intl.DateTimeFormat.prototype.formatToParts', 'Intl.DateTimeFormat.prototype.formatToParts')}}</td> + <td>{{Spec2('ES Int Draft')}}</td> + <td>Изначальное определение</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Intl.DateTimeFormat.formatToParts")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html new file mode 100644 index 0000000000..2bd44c9522 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/index.html @@ -0,0 +1,276 @@ +--- +title: Intl.DateTimeFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +tags: + - DateTimeFormat + - Internationalization + - JavaScript +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +--- +<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <strong><code>Intl.DateTimeFormat</code></strong> является конструктором объектов, включающих языко-зависимое форматирование даты и времени.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>new Intl.DateTimeFormat([<var>locales</var>[, <var>options</var>]]) +Intl.DateTimeFormat.call(<var>this</var>[, <var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>locales</code></dt> + <dd> + <p>Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:</p> + + <dl> + <dt><code>nu</code></dt> + <dd>Используемая система нумерации. Возможные значения включают в себя: <code>"arab"</code>, <code>"arabext"</code>, <code>"bali"</code>, <code>"beng"</code>, <code>"deva"</code>, <code>"fullwide"</code>, <code>"gujr"</code>, <code>"guru"</code>, <code>"hanidec"</code>, <code>"khmr"</code>, <code>"knda"</code>, <code>"laoo"</code>, <code>"latn"</code>, <code>"limb"</code>, <code>"mlym"</code>, <code>"mong"</code>, <code>"mymr"</code>, <code>"orya"</code>, <code>"tamldec"</code>, <code>"telu"</code>, <code>"thai"</code>, <code>"tibt"</code>.</dd> + <dt><code>ca</code></dt> + <dd>Используемый календарь. Возможные значения включают в себя: <code>"buddhist"</code>, <code>"chinese"</code>, <code>"coptic"</code>, <code>"ethioaa"</code>, <code>"ethiopic"</code>, <code>"gregory"</code>, <code>"hebrew"</code>, <code>"indian"</code>, <code>"islamic"</code>, <code>"islamicc"</code>, <code>"iso8601"</code>, <code>"japanese"</code>, <code>"persian"</code>, <code>"roc"</code>.</dd> + </dl> + </dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:</p> + + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + <dt><code>timeZone</code></dt> + <dd>Используемый часовой пояс. Единственным значением, которые реализации обязаны распознавать, является <code>"UTC"</code>; значением по умолчанию является часовой пояс по умолчанию среды выполнения. Реализации также могут распознавать названия часовых поясов из <a href="https://www.iana.org/time-zones">базы данных часовых поясов IANA</a>, например <code>"Asia/Shanghai"</code>, <code>"Asia/Kolkata"</code> или <code>"America/New_York"</code>.</dd> + <dt><code>hour12</code></dt> + <dd>Определяет, использовать ли 12-часовой формат времени (в противовес 24-часовому). Возможными значениями являются <code>true</code> и <code>false</code>; значение по умолчанию зависит от локали.</dd> + <dt><code>formatMatcher</code></dt> + <dd>Используемый алгоритм сопоставления форматов. Возможными значениями являются <code>"basic"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Смотрите следующий абзац, объясняющий, как использовать это свойство.</dd> + </dl> + + <p>Следующие свойства описывают компоненты даты/времени, используемые в форматированном выводе, и их желаемые представления. Реализации должны поддерживать, как минимум, следующие подмножества:</p> + + <ul> + <li><code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code>, <code>hour</code>, <code>minute</code>, <code>second</code></li> + <li><code>weekday</code>, <code>year</code>, <code>month</code>, <code>day</code></li> + <li><code>year</code>, <code>month</code>, <code>day</code></li> + <li><code>year</code>, <code>month</code></li> + <li><code>month</code>, <code>day</code></li> + <li><code>hour</code>, <code>minute</code>, <code>second</code></li> + <li><code>hour</code>, <code>minute</code></li> + </ul> + + <p>Также реализации могут поддерживать другие подмножества и запросы будут сравниваться со всеми доступными подмножествами представлений для поиска наилучшего соответствия. Для такого сравнения доступно два алгоритма, нужный из которых выбирается свойством <code>formatMatcher</code>: <a href="http://www.ecma-international.org/ecma-402/1.0/#BasicFormatMatcher">чётко определённый алгоритм <code>"basic"</code></a> и зависящий от реализации алгоритм <code>"best fit"</code>.</p> + + <dl> + <dt><code>weekday</code></dt> + <dd>Представление дней недели. Возможными значениями являются <code>"narrow"</code>, <code>"short"</code> и <code>"long"</code>.</dd> + <dt><code>era</code></dt> + <dd>Представление эр. Возможными значениями являются <code>"narrow"</code>, <code>"short"</code> и <code>"long"</code>.</dd> + <dt><code>year</code></dt> + <dd>Представление лет. Возможными значениями являются <code>"numeric"</code> и <code>"2-digit"</code>.</dd> + <dt><code>month</code></dt> + <dd>Представление месяцев. Возможными значениями являются <code>"numeric"</code>, <code>"2-digit"</code>, <code>"narrow"</code>, <code>"short"</code> и <code>"long"</code>.</dd> + <dt><code>day</code></dt> + <dd>Представление дней. Возможными значениями являются <code>"numeric"</code> и <code>"2-digit"</code>.</dd> + <dt><code>hour</code></dt> + <dd>Представление часов. Возможными значениями являются <code>"numeric"</code> и <code>"2-digit"</code>.</dd> + <dt><code>minute</code></dt> + <dd>Представление минут. Возможными значениями являются <code>"numeric"</code> и <code>"2-digit"</code>.</dd> + <dt><code>second</code></dt> + <dd>Представление секунд. Возможными значениями являются <code>"numeric"</code> и <code>"2-digit"</code>.</dd> + <dt><code>timeZoneName</code></dt> + <dd>Представление названий часовых поясов. Возможными значениями являются <code>"short"</code> и <code>"long"</code>.</dd> + </dl> + + <p class="noinclude">Значение по умолчанию для всех свойств компонентов даты/времени является значение {{jsxref("Global_Objects/undefined", "undefined")}},но если все свойства компонентов будут равны {{jsxref("Global_Objects/undefined", "undefined")}}, то будет предполагаться, что значением свойств <code>year</code>, <code>month</code> и <code>day</code> является <code>"numeric"</code>.</p> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<h3 id="Properties" name="Properties">Свойства</h3> + +<dl> + <dt>{{jsxref("DateTimeFormat.prototype", "Intl.DateTimeFormat.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}</dt> + <dd>Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.</dd> +</dl> + +<h2 id="DateTimeFormat_instances" name="DateTimeFormat_instances">Экземпляры объекта <code>DateTimeFormat</code></h2> + +<h3 id="Properties_of_DateTimeFormat_instance" name="Properties_of_DateTimeFormat_instance">Свойства</h3> + +<p>Экземпляры <code>DateTimeFormat</code> наследуют следующие свойства из своего прототипа:</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_DateTimeFormat_instance" name="Methods_of_DateTimeFormat_instance">Методы</h3> + +<p>Экземпляры <code>DateTimeFormat</code> наследуют следующие методы из своего прототипа:</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_DateTimeFormat" name="Example:_Using_DateTimeFormat">Пример: использование <code>DateTimeFormat</code></h3> + +<p>При базовом использовании без определения локали <code>DateTimeFormat</code> использует локаль и опции по умолчанию.</p> + +<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Вывод format без аргументов зависит от реализации, +// локали по умолчанию и часового пояса по умолчанию +console.log(new Intl.DateTimeFormat().format(date)); +// → "12/19/2012", если код запущен с локалью en-US и часовым поясом America/Los_Angeles +</pre> + +<h3 id="Example_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Этот пример показывает некоторые локализованные форматы даты и времени. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Форматирование ниже предполагает, что местный часовой пояс равен +// America/Los_Angeles для локали США + +// В америкаском английском используется порядок месяц-день-год +console.log(new Intl.DateTimeFormat('en-US').format(date)); +// → "12/19/2012" + +// В британском английском используется порядок день-месяц-год +console.log(new Intl.DateTimeFormat('en-GB').format(date)); +// → "20/12/2012" + +// В корейском используется порядок год-месяц-день +console.log(new Intl.DateTimeFormat('ko-KR').format(date)); +// → "2012. 12. 20." + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(new Intl.DateTimeFormat('ar-EG').format(date)); +// → "<span dir="rtl">٢٠/١٢/٢٠١٢</span>" + +// В Японии приложения могут захотеть использовать японский календарь, +// в котором 2012 год являеся 24-м годом эры Хейсей +console.log(new Intl.DateTimeFormat('ja-JP-u-ca-japanese').format(date)); +// → "24/12/20" + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(new Intl.DateTimeFormat(['ban', 'id']).format(date)); +// → "20/12/2012" +</pre> + +<h3 id="Example_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Формат даты и времени может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js notranslate">var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0)); + +// Запрашиваем день недели вместе с длинным форматом даты +var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }; +console.log(new Intl.DateTimeFormat('de-DE', options).format(date)); +// → "Donnerstag, 20. Dezember 2012" + +// Приложение может захотеть использовать UTC и показать это +options.timeZone = 'UTC'; +options.timeZoneName = 'short'; +console.log(new Intl.DateTimeFormat('en-US', options).format(date)); +// → "Thursday, December 20, 2012, GMT" + +// Иногда нам нужна большая точность +options = { + hour: 'numeric', minute: 'numeric', second: 'numeric', + timeZoneName: 'short' +}; +console.log(new Intl.DateTimeFormat('en-AU', options).format(date)); +// → "2:00:00 pm AEDT" + +// Иногда даже в США нужен 24-часовой формат времени +options = { + year: 'numeric', month: 'numeric', day: 'numeric', + hour: 'numeric', minute: 'numeric', second: 'numeric', + hour12: false +}; +console.log(date.toLocaleString('en-US', options)); +// → "12/19/2012, 19:00:00" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-12.1', 'Intl.DateTimeFormat')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td>{{CompatNo}}<br> + {{bug("864843")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}</div> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html new file mode 100644 index 0000000000..dfaf7d5c92 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.DateTimeFormat.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/prototype +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat +--- +<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.DateTimeFormat.prototype</code></strong> представляет объект прототипа конструктора {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Смотрите {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}} для описания экземпляров <code>Intl.NumberFormat</code>.</p> +<p>Экземпляры {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}} наследуются от <code>Intl.NumberFormat.prototype</code>. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>Intl.DateTimeFormat.prototype.constructor</code></dt> + <dd>Ссылка на {{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}.</dd> + <dt>{{jsxref("DateTimeFormat.format", "Intl.DateTimeFormat.prototype.format")}}</dt> + <dd>Геттер; возвращает функцию, форматирующую дату согласно локали и опциям форматирования этого объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("DateTimeFormat.resolvedOptions", "Intl.DateTimeFormat.prototype.resolvedOptions()")}}</dt> + <dd>Возвращает новый объект со свойствами, отражающими локаль и опции форматирования, вычисленные при инициализации объекта.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-12.2.1', 'Intl.DateTimeFormat.prototype')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html new file mode 100644 index 0000000000..a1cb4bff8b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/resolvedoptions/index.html @@ -0,0 +1,116 @@ +--- +title: Intl.DateTimeFormat.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Method + - NeedsExample + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions +--- +<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.DateTimeFormat.prototype.resolvedOptions()</code></strong> возвращает новый объект со свойствами, отражающими локаль и параметры форматирования даты и времени, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>dateTimeFormat</var>.resolvedOptions()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}. Объект содержит следующие свойства:</p> +<dl> + <dt><code>locale</code></dt> + <dd>Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство <code>locale</code>.</dd> + <dt><code>calendar</code></dt> + <dt><code>numberingSystem</code></dt> + <dd>Значения, запрошенные ключами расширения Unicode <code>"ca"</code> и <code>"nu"</code>, либо значения по умолчанию.</dd> + <dt><code>timeZone</code></dt> + <dd>Значение, предоставленное для этого свойства в аргументе <code>options</code>; {{jsxref("Global_Objects/undefined", "undefined")}} (представляет временную зону по умолчанию среды выполнения), если ничего не было предоставлено. Предупреждение: приложения не должны полагаться на возврат {{jsxref("Global_Objects/undefined", "undefined")}}, поскольку будущие версии вместо него могут возвращать строковое значение, идентифицирующее временную зону по умолчанию среды выполнения.</dd> + <dt><code>hour12</code></dt> + <dd>Значение, предоставленное для этого свойства в аргументе <code>options</code>, либо значение по умолчанию.</dd> + <dt><code>weekday</code></dt> + <dt><code>era</code></dt> + <dt><code>year</code></dt> + <dt><code>month</code></dt> + <dt><code>day</code></dt> + <dt><code>hour</code></dt> + <dt><code>minute</code></dt> + <dt><code>second</code></dt> + <dt><code>timeZoneName</code></dt> + <dd>Значения, получившиеся в результате объединения соответствующих свойств в аргументе <code>options</code> и доступных комбинаций и представлений форматирования даты/времени в выбранной локали. Некоторые из этих свойств могут не присутствовать, что означает, что соответствующие компоненты не попадают в форматированный вывод.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-12.3.3', 'Intl.DateTimeFormat.prototype.resolvedOptions')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html new file mode 100644 index 0000000000..54a485d2c1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/datetimeformat/supportedlocalesof/index.html @@ -0,0 +1,118 @@ +--- +title: Intl.DateTimeFormat.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf +tags: + - DateTimeFormat + - Internationalization + - JavaScript + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/supportedLocalesOf +--- +<div>{{JSRef("Global_Objects", "DateTimeFormat", "Intl,Collator,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.DateTimeFormat.supportedLocalesOf()</code></strong> возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при форматировании даты и времени без отката к локали по умолчанию среды выполнения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Intl.DateTimeFormat.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>locales</code></dt> + <dd>Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.</dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект, который может содержать следующее свойство:</p> + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает массив с подмножеством языковых меток, предоставленных в аргументе <code>locales</code>. Возвращаются те языковые метки, для которых среда выполнения поддерживает форматирование даты и времени без отката к локали по умолчанию; при поиске используется предоставленный алгоритм сопоставления локалей.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_supportedLocalesOf" name="Example:_Using_supportedLocalesOf">Пример: использование <code>supportedLocalesOf</code></h3> +<p>Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское форматирование даты и времени, метод <code>supportedLocalesOf</code> вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка <code>pinyin</code> не относится к форматированию даты и времени, не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма <code>"lookup"</code> — сопоставление <code>"best fit"</code> может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.</p> +<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID']; +var options = { localeMatcher: 'lookup' }; +console.log(Intl.DateTimeFormat.supportedLocalesOf(locales, options).join(', ')); +// → "id-u-co-pinyin, de-ID" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-12.2.2', 'Intl.DateTimeFormat.supportedLocalesOf')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html b/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html new file mode 100644 index 0000000000..9a433c2776 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/getcanonicallocales/index.html @@ -0,0 +1,73 @@ +--- +title: Intl.getCanonicalLocales() +slug: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales +tags: + - Intl + - JavaScript + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>Intl.getCanonicalLocales()</code></strong> возвращает массив, содержащий канониченские коды языков. Повторяющиеся значения будут отброшены и элементы будут проверены на соответствие структуры языковых тегов.</p> + +<div>{{EmbedInteractiveExample("pages/js/intl-getcanonicallocales.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Intl.getCanonicalLocales(locales)</pre> + +<h3 id="Парамерты">Парамерты</h3> + +<dl> + <dt><code>locales</code></dt> + <dd>Список {{jsxref("String")}} значений, из которых нужно получить канонические коды языков.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив, содержащий канонические коды языков</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">Intl.getCanonicalLocales('RU-RU'); // ["ru-RU"] +Intl.getCanonicalLocales(['RU-RU', 'Fr']); // ["ru-RU", "fr"] + +Intl.getCanonicalLocales('RU_RU'); +// RangeError:'EN_US' is not a structurally valid language tag +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES Int Draft', '#sec-intl.getcanonicallocales', 'Intl.getCanonicalLocales')}}</td> + <td>{{Spec2('ES Int Draft')}}</td> + <td>Первоначальное определение</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Intl.getCanonicalLocales")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}</li> + <li>{{jsxref("DateTimeFormat.supportedLocalesOf", "Intl.DateTimeFormat.supportedLocalesOf()")}}</li> + <li>{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/index.html b/files/ru/web/javascript/reference/global_objects/intl/index.html new file mode 100644 index 0000000000..cebbeccc60 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/index.html @@ -0,0 +1,117 @@ +--- +title: Intl +slug: Web/JavaScript/Reference/Global_Objects/Intl +tags: + - Internationalization + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Intl +--- +<div>{{JSRef("Global_Objects", "Intl", "Collator,DateTimeFormat,NumberFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <strong><code>Intl</code></strong> является пространством имён для API интернационализации ECMAScript, предосталяющим языко-зависимое сравнение строк, форматирование чисел и дат со временем. Конструкторы объектов {{jsxref("Global_Objects/Collator", "Collator")}}, {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} и {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}} являются свойствами объекта <code>Intl</code>. На этой странице описаны эти свойства, а также общая функциональность конструкторов интернационализации и других языко-зависимых функций.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</dt> + <dd>Конструктор <dfn>сортировщиков</dfn> — объектов, включающих языко-зависимое сравнение строк.</dd> + <dt>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</dt> + <dd>Конструктор объектов, включающих языко-зависимое форматирование даты и времени.</dd> + <dt>{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}</dt> + <dd>Конструктор объектов, включающих языко-зависимое форматирование чисел.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("Intl.getCanonicalLocales()")}}</dt> + <dd>Returns canonical locale names.</dd> +</dl> + +<h2 id="Locale_identification_and_negotiation" name="Locale_identification_and_negotiation">Идентификация и согласование локали</h2> + +<p>Конструкторы интернационализации, а также некоторые языко-зависимые методы других конструкторов (перечисленные в разделе {{anch("See_also", "Смотрите также")}}) используют общий шаблон для идентификации локалей и определения используемой локали: они все принимают аргументы <code>locales</code> и <code>options</code> и согласовывают запрошенную локаль (локали) с поддерживаемыми локалями согласно алгоритму, определённому свойством <code>options.localeMatcher</code>.</p> + +<h3 id="locales_argument" name="locales_argument">Аргумент <code>locales</code></h3> + +<p>Аргумет <code>locales</code> должен быть либо строкой, содержащей <a href="http://tools.ietf.org/html/rfc5646">языковую метку BCP 47</a>, либо массивом таких языковых меток. Если аргумент <code>locales</code> не предоставлен или не определён, используется локаль по умолчанию среды выполнения.</p> + +<p>Языковая метка BCP 47 однозначно определяет язык или локаль (разница между ними весьма расплывчата). В своей самой общей форме она может содержать в следующем порядке: код языка, код письменности и код страны, разделённые символами дефиса. Примеры:</p> + +<ul> + <li><code>"hi"</code>: хинди.</li> + <li><code>"de-AT"</code>: немецкий, используемый в Австрии.</li> + <li><code>"zh-Hans-CN"</code>: упрощённый китайский, используемый в Китае.</li> +</ul> + +<p>Подметки, определяющие языки, письменности, страны (регионы) и (используется не часто) варианты в языковых метках BCP 47 могут быть найдены в <a href="http://www.iana.org/assignments/language-subtag-registry">Реестре языковых подметок IANA</a>.</p> + +<p>BCP 47 также позволяет использовать расширения, и одно из них имеет значение для функций интернационализации JavaScript: это расширение <code>"u"</code> (Unicode). Оно может использоваться для запрашивания настраиваемого языко-зависимого поведения объектов {{jsxref("Global_Objects/Collator", "Collator")}}, {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} или {{jsxref("Global_Objects/DateTimeFormat", "DateTimeFormat")}}. Примеры:</p> + +<ul> + <li><code>"de-DE-u-co-phonebk"</code>: использовать вариант телефонной книги немецкого порядка сортировки, который расширяет гласные с умляутами до пар символов: ä → ae, ö → oe, ü → ue.</li> + <li><code>"th-TH-u-nu-thai"</code>: использовать тайские цифры (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) при форматировании чисел.</li> + <li><code>"ja-JP-u-ca-japanese"</code>: использовать японский календарь при форматировании даты и времени, так что 2013 год выражается 25-м годом периода Хэйсей или 平成25.</li> +</ul> + +<h3 id="Locale_negotiation" name="Locale_negotiation">Согласование локали</h3> + +<p>Аргумент <code>locales</code>, после вырезания всех расширений Unicode, интерпретируется как приоритетный запрос из приложения. Среда выполнения сравнивает его с доступными локалями в выбирает наилучшую из имеющихся. Существует два алгоритма сравнения: сопоставление <code>"lookup"</code> (поиск) следует алгоритму поиска, определённому в <a href="http://tools.ietf.org/html/rfc4647#section-3.4">BCP 47</a>; сопоставление <code>"best fit"</code> (наилучший подходящий) позволяет среде выполнения предоставлять локаль, которая, как минимум, но возможно и лучше, подходит для запроса, нежели локаль, найденная с помощью алгоритма поиска. Если приложение не предоставляет аргумент <code>locales</code> или среда выполнения не имеет локали, соответствующей запросу, то используется локаль по умолчанию для среды выполнения. Метод сопоставления можно выбрать с помощью свойства аргумента <code>options</code> (смотрите ниже).</p> + +<p>Если выбранная языковая метка содержит подстроку расширения Unicode, это расширение будет использоваться для настройки сконструированного объекта или поведения функции. Каждый конструктор или функция поддерживают только определённое подмножество ключей, определённых расширением Unicode, и поддерживаемые значения часто зависят от языковой метки. Например, ключ <code>"co"</code> (сравнение) поддерживается только объектом {{jsxref("Global_Objects/Collator", "Collator")}}, а его значение <code>"phonebk"</code> поддерживается только для немецкого языка.</p> + +<h3 id="options_argument" name="options_argument">Аргумент <code>options</code></h3> + +<p>Аргумент <code>options</code> должен быть объектом со свойствами, которые различаются для конструкторов и функций. Если аргумент <code>options</code> не предоставлен или не определён, для всех свойств используются значения по умолчанию.</p> + +<p>Одно свойство поддерживается для всех языко-зависимых конструкторов: свойство <code>localeMatcher</code>, чьим значением должна быть одна из строк <code>"lookup"</code> или <code>"best fit"</code> и которое выбирает один из алгоритмов сопоставления локалей, описанных выше.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-8', 'Intl')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>Таблица совместимости на этой странице генерируется из структурированных данных. Чтобы внести свои изменения в эти данные, вы можете перейти на страницу <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отослать нам pull request.</div> + +<div id="compat-mobile"> +<p>{{Compat("javascript.builtins.Intl")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Введение: <a href="http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/index.html">API интернационализации ECMAScript</a></li> + <li>Конструкторы + <ul> + <li>{{jsxref("Collator", "Intl.Collator")}}</li> + <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> + </ul> + </li> + <li>Методы + <ul> + <li>{{jsxref("String.prototype.localeCompare()")}}</li> + <li>{{jsxref("Number.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> + </ul> + </li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html new file mode 100644 index 0000000000..cac65c8d03 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/listformat/index.html @@ -0,0 +1,104 @@ +--- +title: Intl.ListFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat +tags: + - Experimental + - Internationalization + - Intl + - JavaScript + - ListFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/ListFormat +--- +<p>{{JSRef}}</p> + +<p>Объект <strong><code>Intl.ListFormat</code></strong> представляет собой конструктор объектов, включающих языко-зависимое форматирование списков.</p> + +<div>{{EmbedInteractiveExample("pages/js/intl-listformat.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам пулл реквест.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre><code>new Intl.ListFormat([<var>locales</var>[, <var>options</var>]]) +</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>locales</code></dt> + <dd> + <p>Необязательный параметр. Строка с языковой меткой BCP 47 или массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на странице {{jsxref("Global_Objects/Intl", "Intl", "#Locale_identification_and_negotiation", 1)}}.</p> + </dd> + <dt><code>options</code></dt> + <dd>Необязательный параметр. Объект с некоторыми или всеми из следующих свойств: + <ul> + <li><code>localeMatcher</code><br> + Используемый алгоритм сопоставления локалей. Возможные значения: <code>"lookup"</code> и <code>"best fit"</code>; по умолчанию используется <code>"best fit"</code>. Подробнее см. на странице <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_negotiation" rel="nofollow"><code>Intl</code></a>.</li> + <li><code>type</code><br> + Формат вывода. Возможные значения: <code>"conjunction"</code> для вывода значений через "и" (используется по умолчанию, прим. <code>A, B, и C</code>) или <code>"disjunction"</code> для вывода значений через "или" (прим. <code>A, B, или C</code>). <code>"unit"</code> для вывода значений с единицами измерений (прим. <code>5 фунтов, 12 унций</code>).</li> + <li><code>style</code><br> + Стиль форматирования вывода. Возможные значения: <code>"long"</code> (используется по умолчанию, прим. <code>A, B, и C</code>); <code>"short"</code> или <code>"narrow"</code> (прим. <code>A, B, C</code>). При использовании <code>narrow</code>, параметр <code>type</code> может принимать только значение <code>unit</code>.</li> + </ul> + </dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<h3 id="Свойства">Свойства</h3> + +<dl> + <dt>{{jsxref("ListFormat.prototype", "Intl.ListFormat.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам <code>Intl.ListFormat</code></dd> +</dl> + +<h3 id="Методы">Методы</h3> + +<dl> + <dt>{{jsxref("ListFormat.supportedLocalesOf", "Intl.ListFormat.supportedLocalesOf()")}}</dt> + <dd>Возвращает массив, содержащий те из переданных ему локалей, которые поддерживаются без необходимости использовать локаль по умолчанию.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_format">Использование <code>format</code></h3> + +<p>Пример ниже показывает как создать объект <code>ListFormat</code> с поддержкой форматирования на русском языке и получить отформатированную строку с помощью метода <code>format</code>.</p> + +<pre class="brush: js">const list = ['Motorcycle', 'Bus', 'Car']; + + console.log(new Intl.ListFormat('ru-RU', { style: 'long', type: 'conjunction' }).format(list)); +// > Motorcycle, Bus и Car + + console.log(new Intl.ListFormat('ru-RU', { style: 'short', type: 'disjunction' }).format(list)); +// > Motorcycle, Bus или Car + + console.log(new Intl.ListFormat('ru-RU', { style: 'narrow', type: 'unit' }).format(list)); +// > Motorcycle Bus Car +</pre> + +<h3 id="Использование_formatToParts">Использование <code>formatToParts</code></h3> + +<p>Пример ниже показывает как получить отформатированные части объекта <code>ListFormat</code> с помощью метода <code>formatToParts</code>.</p> + +<pre class="brush: js">const list = ['Motorcycle', 'Bus', 'Car']; +console.log(new Intl.ListFormat('en-GB', { style: 'long', type: 'conjunction' }).formatToParts(list)); + +// > [ { "type": "element", "value": "Motorcycle" }, { "type": "literal", "value": ", " }, { "type": "element", "value": "Bus" }, { "type": "literal", "value": ", and " }, { "type": "element", "value": "Car" } ]; +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td><a href="https://github.com/tc39/proposal-intl-list-format/">Intl.ListFormat proposal</a></td> + <td>Stage 3</td> + <td> </td> + </tr> + </tbody> +</table> diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html new file mode 100644 index 0000000000..1bfd21a87d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/format/index.html @@ -0,0 +1,120 @@ +--- +title: Intl.NumberFormat.prototype.format +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +tags: + - Internationalization + - JavaScript + - NumberFormat + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/format +--- +<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.NumberFormat.prototype.format</code></strong> возвращает функцию-геттер, форматирующую число согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>numberFormat</var>.format(<var>number</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>number</code></dt> + <dd>Число для форматирования.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Функция, возвращённая геттером <code>format</code>, форматирует число согласно локали и параметрам форматирования соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_format" name="Example:_Using_format">Пример: использование функции <code>format</code></h3> +<p>Использование функции, возвращённой геттером <code>format</code>, для форматирования одного значения валюты, здесь пример для русского языка:</p> +<pre class="brush: js">var options = { style: 'currency', currency: 'RUB' }; +var numberFormat = new Intl.NumberFormat('ru-RU', options); +console.log(numberFormat.format(654321.987)); +// → "654 321,99 руб." +</pre> + +<h3 id="Example_Using_format_with_map" name="Example:_Using_format_with_map">Пример: использование функции <code>format</code> вместе с <code>map</code></h3> +<p>Использование функции, возвращённой геттером <code>format</code>, для форматирования всех чисел в массиве. Обратите внимание, что функция привязана к объекту {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}, из которого она была получена, так что её можно передавать в {{jsxref("Array.prototype.map")}} напрямую.</p> +<pre class="brush: js">var a = [123456.789, 987654.321, 456789.123]; +var numberFormat = new Intl.NumberFormat('es-ES'); +var formatted = a.map(numberFormat.format); +console.log(formatted.join('; ')); +// → "123.456,789; 987.654,321; 456.789,123" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-11.3.2', 'Intl.NumberFormat.prototype.format')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> + <li>{{jsxref("Number.prototype.toLocaleString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html new file mode 100644 index 0000000000..e29eb2dd27 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/index.html @@ -0,0 +1,189 @@ +--- +title: Intl.NumberFormat +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +tags: + - Internationalization + - JavaScript + - NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <strong><code>Intl.NumberFormat</code></strong> является конструктором объектов, включающих языко-зависимое форматирование чисел.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>new Intl.NumberFormat([<var>locales</var>[, <var>options</var>]]) +Intl.NumberFormat.call(<var>this</var>[, <var>locales</var>[, <var>options</var>]]) +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>locales</code></dt> + <dd> + <p>Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:</p> + + <dl> + <dt><code>nu</code></dt> + <dd>Используемая система нумерации. Возможные значения включают в себя: <code>"arab"</code>, <code>"arabext"</code>, <code>"bali"</code>, <code>"beng"</code>, <code>"deva"</code>, <code>"fullwide"</code>, <code>"gujr"</code>, <code>"guru"</code>, <code>"hanidec"</code>, <code>"khmr"</code>, <code>"knda"</code>, <code>"laoo"</code>, <code>"latn"</code>, <code>"limb"</code>, <code>"mlym"</code>, <code>"mong"</code>, <code>"mymr"</code>, <code>"orya"</code>, <code>"tamldec"</code>, <code>"telu"</code>, <code>"thai"</code>, <code>"tibt"</code>.</dd> + </dl> + </dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:</p> + + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + <dt><code>style</code></dt> + <dd>Используемый стиль форматирования. Возможными значениями являются <code>"decimal"</code> для простого форматирования числа, <code>"currency"</code> для форматирования валюты и <code>"percent"</code> для форматирования процентов; значением по умолчанию является <code>"decimal"</code>.</dd> + <dt><code>currency</code></dt> + <dd>Валюта, используемая при форматировании валют. Возможными значениями являются коды валют ISO 4217, например, <code>"USD"</code> для доллара США, <code>"EUR"</code> для евро или <code>"CNY"</code> для китайского юаня — смотрите <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">список кодов текущих валют и денежных средств</a>. Свойство не имеет значения по умолчанию; если свойство <code>style</code> равно <code>"currency"</code>, свойство <code>currency</code> также должно присутствовать.</dd> + <dt><code>currencyDisplay</code></dt> + <dd>Определяет, как отображать валюту при форматировании валют. Возможными значениями являются <code>"symbol"</code> для использования локализованного символа валюты, например € для евро, <code>"code"</code> для использования кода валюты ISO, <code>"name"</code> для использования локализованного названия валюты, например <code>"доллар США"</code> для доллара; значением по умолчанию является <code>"symbol"</code>.</dd> + <dt><code>useGrouping</code></dt> + <dd>Определяет, использовать ли разделители групп разрядов, например, разделители тысяч или тысяч/лакх/крор. Возможными значениями являются <code>true</code> и <code>false</code>; значением по умолчанию является <code>true</code>.</dd> + </dl> + + <p>Следующие свойства разбиваются на две группы: <code>minimumIntegerDigits</code>, <code>minimumFractionDigits</code> и <code>maximumFractionDigits</code> входят в одну группу, а <code>minimumSignificantDigits</code> и <code>maximumSignificantDigits</code> — в другую. Если определено хотя бы одно свойство из второй группы, свойства первой группы будут проигнорированы.</p> + + <dl> + <dt><code>minimumIntegerDigits</code></dt> + <dd>Минимальное используемое количество цифр целой части числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.</dd> + <dt><code>minimumFractionDigits</code></dt> + <dd>Минимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого и процентного форматирования является 0; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">списке кодов валют ISO 4217</a> (2, если данный список не предоставляет такой информации).</dd> + <dt><code>maximumFractionDigits</code></dt> + <dd>Максимальное используемое количество цифр дробной части числа. Возможными значениями являются значения от 0 до 20; значением по умолчанию для простого форматирования является наибольшее значение из <code>minimumFractionDigits</code> и 3; значением по умолчанию для форматирования валюты является число цифр младших единиц, определяемое в <a href="http://www.currency-iso.org/en/home/tables/table-a1.html">списке кодов валют ISO 4217</a> (2, если данный список не предоставляет такой информации); значением по умолчанию для процентного форматирования является наибольшее значение из <code>minimumFractionDigits</code> и 0.</dd> + <dt><code>minimumSignificantDigits</code></dt> + <dd>Минимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является 1.</dd> + <dt><code>maximumSignificantDigits</code></dt> + <dd>Максимальное используемое количество значащих цифр числа. Возможными значениями являются значения от 1 до 21; значением по умолчанию является <code>minimumSignificantDigits</code>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<h3 id="Properties" name="Properties">Свойства</h3> + +<dl> + <dt>{{jsxref("NumberFormat.prototype", "Intl.NumberFormat.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("NumberFormat.supportedLocalesOf", "Intl.NumberFormat.supportedLocalesOf()")}}</dt> + <dd>Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.</dd> +</dl> + +<h2 id="NumberFormat_instances" name="NumberFormat_instances">Экземпляры объекта <code>NumberFormat</code></h2> + +<h3 id="Properties_of_NumberFormat_instance" name="Properties_of_NumberFormat_instance">Свойства</h3> + +<p>Экземпляры <code>NumberFormat</code> наследуют следующие свойства из своего прототипа:</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_NumberFormat_instance" name="Methods_of_NumberFormat_instance">Методы</h3> + +<p>Экземпляры <code>NumberFormat</code> наследуют следующие методы из своего прототипа:</p> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Basic_usage" name="Example:_Basic_usage">Пример: базовое использование</h3> + +<p>При базовом использовании без определения локали возвращается строка, отформатированная с помощью локали по умолчанию с опциями по умолчанию.</p> + +<pre class="brush: js">var number = 3500; + +console.log(new Intl.NumberFormat().format(number)); +// → '3,500' в локали US English +</pre> + +<h3 id="Example_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js">var number = 123456.789; + +// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка +console.log(new Intl.NumberFormat('de-DE').format(number)); +// → 123.456,789 + +// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел +console.log(new Intl.NumberFormat('ru-RU').format(number)); +// → 123 456,789 + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(new Intl.NumberFormat('ar-EG').format(number)); +// → ١٢٣٤٥٦٫٧٨٩ + +// В Индии используют разделители для тысяч/лакх/крор +console.log(new Intl.NumberFormat('en-IN').format(number)); +// → 1,23,456.789 + +// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную +console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(number)); +// → 一二三,四五六.七八九 + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(new Intl.NumberFormat(['ban', 'id']).format(number)); +// → 123.456,789 +</pre> + +<h3 id="Example_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Результат может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js">var number = 123456.789; + +// Запрашиваем формат валюты +console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number)); +// → 123.456,79 € + +console.log(new Intl.NumberFormat('ru-RU', { style: 'currency', currency: 'RUB' }).format(number)); +// → 123 456,79 руб. + +// Японская йена не использует младшие единицы +console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number)) +// → ¥123,457 + +// Ограничиваем до трёх значащих цифр +console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number)); +// → 1,23,000 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-11.1', 'Intl.NumberFormat')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Intl.NumberFormat")}}</p> + +<div id="compat-mobile"></div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}</div> diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html new file mode 100644 index 0000000000..6ac4a38c2c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/prototype/index.html @@ -0,0 +1,108 @@ +--- +title: Intl.NumberFormat.prototype +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/prototype +tags: + - Internationalization + - JavaScript + - NumberFormat + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat +--- +<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Intl.NumberFormat.prototype</code></strong> представляет объект прототипа конструктора {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Смотрите {{jsxref("NumberFormat")}} для описания экземпляров <code>Intl.NumberFormat</code>.</p> +<p>Экземпляры {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}} наследуются от <code>Intl.NumberFormat.prototype</code>. Изменения объекта прототипа наследуются всеми экземплярами {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>Intl.NumberFormat.prototype.constructor</code></dt> + <dd>Ссылка на {{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}.</dd> + <dt>{{jsxref("NumberFormat.format", "Intl.NumberFormat.prototype.format")}}</dt> + <dd>Геттер; возвращает функцию, форматирующую число согласно локали и опциям форматирования этого объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("NumberFormat.resolvedOptions", "Intl.NumberFormat.prototype.resolvedOptions()")}}</dt> + <dd>Возвращает новый объект со свойствами, отражающими локаль и опции сравнения, вычисленные при инициализации объекта.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-11.2.1', 'Intl.NumberFormat.prototype')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html new file mode 100644 index 0000000000..1633c1e703 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/resolvedoptions/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.NumberFormat.prototype.resolvedOptions() +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions +tags: + - Internationalization + - JavaScript + - Method + - NeedsExample + - NumberFormat + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/resolvedOptions +--- +<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.NumberFormat.prototype.resolvedOptions()</code></strong> возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>numberFormat</var>.resolvedOptions()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает новый объект со свойствами, отражающими локаль и параметры форматирования чисел, вычисленные во время инициализации соответствующего объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}}. Объект содержит следующие свойства:</p> +<dl> + <dt><code>locale</code></dt> + <dd>Языковая метка BCP 47 реально используемой локали. Если во входной языковой метке BCP 47 запрошены какие-либо расширения Unicode, приведшие к этой локали, запрошенные и поддерживаемые для этой локали пары ключ-значение также будут включены в свойство <code>locale</code>.</dd> + <dt><code>numberingSystem</code></dt> + <dd>Значение, запрошенное ключом расширения Unicode <code>"nu"</code>, либо значение по умолчанию.</dd> + <dt><code>style</code></dt> + <dt><code>useGrouping</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code>, либо значения по умолчанию.</dd> + <dt><code>currency</code></dt> + <dt><code>currencyDisplay</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code>, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если свойство <code>style</code> равно <code>"currency"</code>.</dd> +</dl> +<p>Из следующих двух групп свойств включается только одна:</p> +<dl> + <dt><code>minimumIntegerDigits</code></dt> + <dt><code>minimumFractionDigits</code></dt> + <dt><code>maximumFractionDigits</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code>, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если в аргументе <code>options</code> не присутствовало ни свойства <code>minimumSignificantDigits</code>, ни свойства <code>maximumSignificantDigits</code>.</dd> + <dt><code>minimumSignificantDigits</code></dt> + <dt><code>maximumSignificantDigits</code></dt> + <dd>Значения, предоставленные для этих свойств в аргументе <code>options</code>, либо значения по умолчанию. Эти свойства присутствуют только в том случае, если в аргументе <code>options</code> присутствовало хотя бы одно из них.</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-11.3.3', 'Intl.NumberFormat.prototype.resolvedOptions')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html b/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html new file mode 100644 index 0000000000..97159a0112 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/intl/numberformat/supportedlocalesof/index.html @@ -0,0 +1,117 @@ +--- +title: Intl.NumberFormat.supportedLocalesOf() +slug: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf +tags: + - Internationalization + - JavaScript + - Method + - NumberFormat +translation_of: Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/supportedLocalesOf +--- +<div>{{JSRef("Global_Objects", "NumberFormat", "Intl,Collator,DateTimeFormat")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Intl.NumberFormat.supportedLocalesOf()</code></strong> возвращает массив, содержащий те из предоставленных локалей, что поддерживаются при форматировании чисел без отката к локали по умолчанию среды выполнения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Intl.NumberFormat.supportedLocalesOf(<var>locales</var>[, <var>options</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>locales</code></dt> + <dd>Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента <code>locales</code> смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}.</dd> + <dt><code>options</code></dt> + <dd> + <p>Необязательный параметр. Объект, который может содержать следующее свойство:</p> + <dl> + <dt><code>localeMatcher</code></dt> + <dd>Используемый алгоритм сопоставления локалей. Возможными значениями являются <code>"lookup"</code> и <code>"best fit"</code>; значением по умолчанию является <code>"best fit"</code>. Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает массив с подмножеством языковых меток, предоставленных в аргументе <code>locales</code>. Возвращаются те языковые метки, для которых среда выполнения поддерживает форматирование чисел без отката к локали по умолчанию; при поиске используется предоставленный алгоритм сопоставления локалей.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_supportedLocalesOf" name="Example:_Using_supportedLocalesOf">Пример: использование <code>supportedLocalesOf</code></h3> +<p>Предполагая, что среда выполнения поддерживает индонезийское и немецкое, но на балийское форматирование чисел, метод <code>supportedLocalesOf</code> вернёт неизменными индонезийскую и немецкую языковые метки, даже несмотря на то, что сортировка <code>pinyin</code> не относится к форматированию чисел, не используется с индонезийским языком и вряд ли будет поддерживаться в немецком языке для Индонезии. Обратите внимание на используемую здесь спецификацию алгоритма <code>"lookup"</code> — сопоставление <code>"best fit"</code> может решить, что индонезийский язык является адекватным сопоставлением с балийским, поскольку большинство людей, говорящих на балийском, также понимают индонезийский, и поэтому может возвратиться ещё и языковая метка балийского языка.</p> +<pre class="brush: js">var locales = ['ban', 'id-u-co-pinyin', 'de-ID']; +var options = { localeMatcher: 'lookup' }; +console.log(Intl.NumberFormat.supportedLocalesOf(locales, options).join(', ')); +// → "id-u-co-pinyin, de-ID" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-11.2.2', 'Intl.NumberFormat.supportedLocalesOf')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td> + {{CompatNo}}<br> + {{bug("864843")}} + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/isfinite/index.html b/files/ru/web/javascript/reference/global_objects/isfinite/index.html new file mode 100644 index 0000000000..eb1c6ee465 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/isfinite/index.html @@ -0,0 +1,114 @@ +--- +title: isFinite() +slug: Web/JavaScript/Reference/Global_Objects/isFinite +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/isFinite +--- +<div> +<div> +<div>{{jsSidebar("Objects")}}</div> + +<div> </div> +</div> +</div> + +<p>Глобальная <code><strong>isFinite()</strong></code> функция определяет, является ли переданное значение конечным числом. Если необходимо, параметр сначала преобразуется в число.</p> + +<p> </p> + +<p> </p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-isfinite.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<p> </p> + +<p> </p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox">isFinite(<em>testValue</em>)</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>testValue</code></dt> + <dd>Аргумент для проверки, является ли он конечным числом.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>isFinite</code> это функция верхнего уровня и она не связана ни с одним объектом.</p> + +<p>Вы можете использовать эту функцию там, где требуется определить, является ли аргумент конечным числом. Функция <code>isFinite</code> исследует число в своем параметре. Если аргумент является NaN, положительной или отрицательной бесконечностью, метод вернет <code>false</code>; иначе возвращается <code>true</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">isFinite(Infinity); // false +isFinite(NaN); // false +isFinite(-Infinity); // false + +isFinite(0); // true +isFinite(2e64); // true + + +isFinite("0"); // true, но было бы false если использовать + // более надежный вариант Number.isFinite("0") +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.2.5', 'isFinite')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-isfinite-number', 'isFinite')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-isfinite-number', 'isFinite')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.isFinite")}}</p> + +<p> </p> + +<h2 id="See_Also" name="See_Also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.isFinite()")}}</li> + <li>{{jsxref("Number.NaN()")}}</li> + <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li> + <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/isnan/index.html b/files/ru/web/javascript/reference/global_objects/isnan/index.html new file mode 100644 index 0000000000..e61bdf3c8c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/isnan/index.html @@ -0,0 +1,133 @@ +--- +title: isNaN +slug: Web/JavaScript/Reference/Global_Objects/isNaN +tags: + - Functions + - JavaScript + - Method + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/isNaN +--- +<div>{{jsSidebar("Objects")}}</div> + +<h2 id="Summary" name="Summary">Аннотация</h2> + +<p>Функция <code><strong>isNaN()</strong></code> определяет является ли литерал или переменная нечисловым значением ({{jsxref("Global_Objects/NaN", "NaN")}}) или нет. При работе с функцией необходимо проявлять осторожность так как она <a href="#Description">имеет свои особенности</a>. В качестве альтернативы можно использовать метод {{jsxref("Number.isNaN()")}} из ECMAScript 6, или дополнительно проверять литерал или переменную на нечисловое значение при помощи <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/typeof">typeof</a></code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>isNaN(<em>значение</em>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>Значение</code></dt> + <dd>Литерал или переменная которые будут проверяться на нечисловое значение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<h3 id="The_necessity_of_an_isNaN_function" name="The_necessity_of_an_isNaN_function">Для чего нужна функция <code>isNaN</code>?</h3> + +<p>В отличие от других возможных значениях в JavaScript, при работе с значением данного типа невозможно полагаться на == и === для определения, является ли переменная или литерал нечисловым значением ({{jsxref("Global_Objects/NaN", "NaN")}}) или нет, так как проверки <code>NaN == NaN</code> и <code>NaN === NaN</code> <em>в качестве значения вернут </em><code>false</code>. Следовательно, для проверки нужна функция <code>isNaN</code>.</p> + +<h4 id="Примечание">Примечание:</h4> + +<p>Для альтернативной проверки переменной на NaN без использования функции isNaN() можно воспользоваться конструкцией x !== x</p> + +<pre class="syntaxbox"><code><strong>var</strong> x = NaN</code> + +<code>x != x // true</code> +<code>x !== x // true</code> +</pre> + +<h3 id="Origin_of_NaN_values" name="Origin_of_NaN_values">Генерация значения <code>NaN</code></h3> + +<p>Значение <code>NaN</code> генерируются арифметическими операциями, результатом которых является <em>undefined</em> или <em>unrepresentable</em>. Такие условия не обязательно обозначают переполнение стека.<code> NaN</code> также может являться результатом попытки преобразования числа в строку, или значения, не имеющего эквивалента в простых числовых примитивах.</p> + +<p>Например, деление нуля на нуль возвращает <code>NaN</code> — <em>но деление других чисел на 0 не возвращает NaN</em>.</p> + +<pre class="syntaxbox"><code><strong>var</strong> x = NaN</code> + +<code>x != x // true</code> +<code>x !== x // true</code> +</pre> + +<h3 id="Особенности_поведения"><em>Особенности поведения</em></h3> + +<p>С самых ранних версий функции <code>isNaN</code> её поведение для не числовых переменных или литералов было довольно-таки запутанным. Когда аргументом функции <code>isNaN</code> является переменная, тип которой не <a href="http://es5.github.com/#x8.5" title="http://es5.github.com/#x8.5">Number</a>, она преобразуется к типу <code>Number</code>. Полученное значение затем проверяется, является ли оно {{jsxref("Global_Objects/NaN", "NaN")}}. Таким образом для не числовых значений, которые можно преобразовать в числовой тип без не-NaN значения (в частности, пустая строка или логические примитивы, которые преобразуются в 0 или 1), возвращаемое значение "false" может быть полной неожиданностью; пустая строка преобразуется в "not a number." Путаница связана с тем, что "not a number" имеет определённое значение, описанное в стандарте IEEE-794 чисел с плавающей точкой. Функцию стоит воспринимать в качестве ответа на вопрос, "Является ли это значение корректным числом по стандарту IEEE-794?"</p> + +<p>В следующей версии ECMAScript (ES6) функция {{jsxref("Number.isNaN()")}} также присутствует. <code>Number.isNaN(x)</code> будет надёжным методом для проверки, содержит ли <code>x</code> значение <code>NaN</code> или нет. Даже с <code>Number.isNaN</code>, однако, результатом <code>NaN</code> остаётся точное числовое значение, а не просто "not a number".</p> + +<h2 id="Examples" name="Examples">Пример</h2> + +<pre class="brush: js">isNaN(NaN); // true +isNaN(undefined); // true +isNaN({}); // true + +isNaN(true); // false +isNaN(null); // false +isNaN(37); // false + +// strings +isNaN("37"); // false: "37" преобразуется в число 37 которое не NaN +isNaN("37.37"); // false: "37.37" преобразуется в число 37.37 которое не NaN +isNaN(""); // false: пустая строка преобразуется в 0 которое не NaN +isNaN(" "); // false: строка с пробелом преобразуется в 0 которое не NaN +isNaN("37,5"); // true + +// Даты +isNaN(new Date()); // false +isNaN(new Date().toString()); // true + +// Пример почему использование isNaN не всегда уместно +isNaN("blabla") // true: "blabla" преобразованно в число. + // При парсинге преобразуется в число при неудаче возвращает NaN +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>ECMAScript 1st Edition.</td> + <td>Standard</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.2.4', 'isNaN')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-isnan-number', 'isNaN')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.isNaN")}}</p> + +<p> </p> + +<h2 id="See_also" name="See_also">См. также</h2> + +<ul> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li> + <li>{{jsxref("Number.isNaN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/iterator/index.html b/files/ru/web/javascript/reference/global_objects/iterator/index.html new file mode 100644 index 0000000000..0a55a44af9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/iterator/index.html @@ -0,0 +1,138 @@ +--- +title: Iterator +slug: Web/JavaScript/Reference/Global_Objects/Iterator +tags: + - JavaScript + - Reference +translation_of: Archive/Web/Iterator +--- +<div>{{jsSidebar("Objects")}}</div> + +<div> </div> + +<div class="blockIndicator warning"> +<p><strong>Non-standard.</strong> The <code><strong>Iterator</strong></code> function is a SpiderMonkey-specific feature, and will be removed at some point. For future-facing usages, consider using <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of" title="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> loops and the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a>.</p> +</div> + +<p>The <code><strong>Iterator</strong></code> function returns an object which implements legacy iterator protocol and iterates over enumerable properties of an object.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre>Iterator(<var>object</var>, [keyOnly])</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>object</code></dt> + <dd>Object to iterate over properties.</dd> + <dt><code>keyOnly</code></dt> + <dd>If <code>keyOnly</code> is truthy value, <code>Iterator.prototype.next</code> returns <code>property_name</code> only.</dd> +</dl> + +<h2 id="Description">Description</h2> + +<p>Returns <code>Iterator</code> instance that iterates over <code>object</code>. <code>Iterator</code> instance returns <code>[property_name, property_value]</code> array for each iteration if <code>keyOnly</code> is falsy, otherwise, if <code>keyOnly</code> is truthy, it returns <code>property_name</code> for each iteration. If <code>object</code> is the <code>Iterator</code> instance or Generator instance, it returns <code>object</code> itself.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt><code><strong>Iterator.prototype[@@iterator]</strong></code></dt> + <dd>Returns a function that returns iterator object.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt><code><strong>Iterator.prototype.next</strong></code></dt> + <dd>Returns next item in the <code>[property_name, property_value]</code> format or <code>property_name</code> only. It throws <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code> if there are no more items.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<h3 id="Iterating_over_properties_of_an_object">Iterating over properties of an object</h3> + +<pre><code>var a = { + x: 10, + y: 20, +}; +var iter = Iterator(a); +console.log(iter.next()); // ["x", 10] +console.log(iter.next()); // ["y", 20] +console.log(iter.next()); // throws StopIteration</code></pre> + +<h3 id="Iterating_over_properties_of_an_object_with_legacy_destructuring_for-in_statement">Iterating over properties of an object with legacy destructuring <code>for-in</code> statement</h3> + +<pre><code>var a = { + x: 10, + y: 20, +}; + +for (var [name, value] in Iterator(a)) { + console.log(name, value); // x 10 + // y 20 +}</code></pre> + +<h3 id="Iterating_with_for-of">Iterating with <code>for-of</code></h3> + +<pre><code>var a = { + x: 10, + y: 20, +}; + +for (var [name, value] of Iterator(a)) { // @@iterator is used + console.log(name, value); // x 10 + // y 20 +}</code></pre> + +<h3 id="Iterates_over_property_name">Iterates over property name</h3> + +<pre><code>var a = { + x: 10, + y: 20, +}; + +for (var name in Iterator(a, true)) { + console.log(name); // x + // y +}</code></pre> + +<h3 id="Passing_Generator_instance">Passing Generator instance</h3> + +<pre><code>function* f() { + yield 'a'; + yield 'b'; +} +var g = f(); + +console.log(g == Iterator(g)); // true + +for (var v in Iterator(g)) { + console.log(v); // a + // b +}</code></pre> + +<h3 id="Passing_Iterator_instance">Passing Iterator instance</h3> + +<pre><code>var a = { + x: 10, + y: 20, +}; + +var i = Iterator(a); + +console.log(i == Iterator(i)); // true</code></pre> + +<h2 id="Specifications">Specifications</h2> + +<p>Non-standard. Not part of any current standards document</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>Not supported. Used to be in Firefox in versions prior to Firefox 57.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Iterators_and_Generators" title="/en-US/docs/JavaScript/Guide/Iterators_and_Generators">Iterators and Generators</a></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/StopIteration">StopIteration</a></code></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/json/index.html b/files/ru/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..30cc3735af --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,230 @@ +--- +title: JSON +slug: Web/JavaScript/Reference/Global_Objects/JSON +tags: + - JSON + - JavaScript + - Object + - Reference + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +<div>{{JSRef("Global_Objects", "JSON")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <strong><code>JSON</code></strong> содержит методы для разбора <a class="external" href="http://json.org/">объектной нотации JavaScript</a> (JavaScript Object Notation — сокращённо {{glossary("JSON")}}) и преобразования значений в JSON. Его нельзя вызвать как функцию или сконструировать как объект, и кроме своих двух методов он не содержит никакой интересной функциональности.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<h3 id="JavaScript_Object_Notation" name="JavaScript_Object_Notation">Объектная нотация JavaScript</h3> + +<p>JSON является синтаксисом для сериализации объектов, массивов, чисел, строк логических значений и значения {{jsxref("null")}}. Он основывается на синтаксисе JavaScript, однако всё же отличается от него: не каждый код на JavaScript является JSON, и не каждый JSON является кодом на JavaScript. Смотрите также статью <a href="http://timelessrepo.com/json-isnt-a-javascript-subset">JSON: подмножество JavaScript, которым он не является</a> (на английском).</p> + +<table> + <caption>Различия между JavaScript и JSON</caption> + <thead> + <tr> + <th scope="col">Тип JavaScript</th> + <th scope="col">Отличия от JSON</th> + </tr> + </thead> + <tbody> + <tr> + <td>Объекты и массивы</td> + <td>Имена свойств должны быть строками, заключёнными в двойные кавычки; конечные запятые запрещены.</td> + </tr> + <tr> + <td>Числа</td> + <td>Ведущие нули запрещены; перед десятичной запятой обязательно должна быть хотя бы одна цифра.</td> + </tr> + <tr> + <td>Строки</td> + <td> + <p>Только ограниченный набор символов может быть заэкранирован; некоторые управляющие символы запрещены; разрешены юникодные символы разделительной линии (<a href="http://unicode-table.com/ru/2028/">U+2028</a>) и разделительного параграфа (<a href="http://unicode-table.com/ru/2029/">U+2029</a>); строки должны быть заключены в двойные кавычки. Смотрите следующий пример, в котором метод {{jsxref("JSON.parse()")}} отрабатывает без проблем, а при вычислении кода как JavaScript выбрасывается исключение {{jsxref("SyntaxError")}}:</p> + + <pre class="brush: js"> +var code = '"\u2028\u2029"'; +JSON.parse(code); // работает +eval(code); // ошибка +</pre> + </td> + </tr> + </tbody> +</table> + +<p>Ниже представлен полный синтаскис JSON:</p> + +<pre class="line-numbers language-html"><code class="language-html">JSON = null + or true or false + or JSONNumber + or JSONString + or JSONObject + or JSONArray + +JSONNumber = - PositiveNumber + or PositiveNumber +PositiveNumber = DecimalNumber + or DecimalNumber . Digits + or DecimalNumber . Digits ExponentPart + or DecimalNumber ExponentPart +DecimalNumber = 0 + or OneToNine Digits +ExponentPart = e Exponent + or E Exponent +Exponent = Digits + or + Digits + or - Digits +Digits = Digit + or Digits Digit +Digit = 0 through 9 +OneToNine = 1 through 9 + +JSONString = "" + or " StringCharacters " +StringCharacters = StringCharacter + or StringCharacters StringCharacter +StringCharacter = any character + except " or \ or U+0000 through U+001F + or EscapeSequence +EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t + or \u HexDigit HexDigit HexDigit HexDigit +HexDigit = 0 through 9 + or A through F + or a through f + +JSONObject = { } + or { Members } +Members = JSONString : JSON + or Members , JSONString : JSON + +JSONArray = [ ] + or [ ArrayElements ] +ArrayElements = JSON + or ArrayElements , JSON</code></pre> + +<p>Во всех продукциях могут присутствовать незначащие пробельные символы, за исключением продукций <code><var>ЧислоJSON</var></code> (числа не должны содержать пробелов) и <code><var>СтрокаJSON</var></code> (где они интерпретируются как часть строки или возбуждают ошибку). Пробельными символами считаются символы табуляции (<a href="http://unicode-table.com/ru/0009/">U+0009</a>), возврата каретки (<a href="http://unicode-table.com/ru/000D/">U+000D</a>), перевода строки (<a href="http://unicode-table.com/ru/000A/">U+000A</a>) и, собственно, пробела (<a href="http://unicode-table.com/ru/0020/">U+0020</a>).</p> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("JSON.parse()")}}</dt> + <dd>Разбирает строку JSON, возможно с преобразованием получаемого значения и его свойств и возвращает разобранное значение.</dd> + <dt>{{jsxref("JSON.stringify()")}}</dt> + <dd>Возвращает строку JSON, соответствующую указанному значению, возможно с включением только определённых свойств или с заменой значений свойств определяемым пользователем способом.</dd> +</dl> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Объект <code>JSON</code> не поддерживается старыми браузерами. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использовать объект <code>JSON</code> в реализациях, которые его ещё не поддерживают (например, в Internet Explorer 6).</p> + +<p>Следующий алгоритм имитирует работу настоящего объекта <code>JSON</code>:</p> + +<pre class="brush: js">if (!window.JSON) { + window.JSON = { + parse: function(sJSON) { return eval('(' + sJSON + ')'); }, + stringify: function(vContent) { + if (vContent instanceof Object) { + var sOutput = ''; + if (vContent.constructor === Array) { + for (var nId = 0; nId < vContent.length; sOutput += this.stringify(vContent[nId]) + ',', nId++); + return '[' + sOutput.substr(0, sOutput.length - 1) + ']'; + } + if (vContent.toString !== Object.prototype.toString) { + return '"' + vContent.toString().replace(/"/g, '\\$&') + '"'; + } + for (var sProp in vContent) { + sOutput += '"' + sProp.replace(/"/g, '\\$&') + '":' + this.stringify(vContent[sProp]) + ','; + } + return '{' + sOutput.substr(0, sOutput.length - 1) + '}'; + } + return typeof vContent === 'string' ? '"' + vContent.replace(/"/g, '\\$&') + '"' : String(vContent); + } + }; +} +</pre> + +<p>Более сложными известными <a class="external" href="http://remysharp.com/2010/10/08/what-is-a-polyfill/">полифиллами</a> для объекта <code>JSON</code> являются проекты <a class="link-https" href="https://github.com/douglascrockford/JSON-js">JSON2</a> и <a class="external" href="http://bestiejs.github.com/json3">JSON3</a>.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-json-object', 'JSON')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatIE("8.0")}}</td> + <td>{{CompatOpera("10.5")}}</td> + <td>{{CompatSafari("4.0")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide/Using_native_JSON">Использование родного объекта <code>JSON</code></a></li> + <li>{{jsxref("Date.prototype.toJSON()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/json/parse/index.html b/files/ru/web/javascript/reference/global_objects/json/parse/index.html new file mode 100644 index 0000000000..febd8ba943 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/parse/index.html @@ -0,0 +1,150 @@ +--- +title: JSON.parse() +slug: Web/JavaScript/Reference/Global_Objects/JSON/parse +tags: + - ECMAScript5 + - JSON + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse +--- +<div>{{JSRef("Global_Objects", "JSON")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>JSON.parse()</code></strong> разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>JSON.parse(<var>text</var>[, <var>reviver</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>text</code></dt> + <dd>Разбираемая строка JSON. Смотрите документацию по объекту {{jsxref("JSON")}} для описания синтаксиса JSON.</dd> + <dt><code>reviver</code> {{optional_inline}}</dt> + <dd>Если параметр является функцией, определяет преобразование полученного в процессе разбора значения, прежде, чем оно будет возвращено вызывающей стороне.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Возвращает объект {{jsxref("Object")}}, соответствующий переданной строке JSON <code>text</code>.</p> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> +<p>Выбрасывает исключение {{jsxref("SyntaxError")}}, если разбираемая строка не является правильным JSON.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_JSON.parse" name="Example:_Using_JSON.parse">Пример: использование метода <code>JSON.parse()</code></h3> +<pre class="brush: js">JSON.parse('{}'); // {} +JSON.parse('true'); // true +JSON.parse('"foo"'); // "foo" +JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] +JSON.parse('null'); // null +</pre> + +<h3 id="Example:_Using_the_reviver_parameter" name="Example:_Using_the_reviver_parameter">Пример: использование параметра <code>reviver</code></h3> +<p>Если определён параметр <code>reviver</code>, значение, вычисляемое при разборе строки, будет <em>преобразовано</em> перед его возвратом. В частности, вычисленное значение и все его свойства (начиная с самых вложенных свойств и кончая самим значением), каждое проходят через функцию <code>reviver</code>, которая вызывается с контекстом <code>this</code>, содержащим объект в виде обрабатываемого свойства, и с аргументами: именем свойства в виде строки и значением свойства. Если функция <code>reviver</code> вернёт {{jsxref("undefined")}} (либо вообще не вернёт никакого значения, например, если выполнение достигнет конца функции), свойство будет удалено из объекта. В противном случае свойство будет переопределено возвращаемым значением.</p> +<p>В конечном итоге, функция <code>reviver</code> вызывается с пустой строкой и самым верхним значением, чтобы обеспечить преобразование самого верхнего значения. Убедитесь, что вы правильно обрабатываете этот случай — обычно для этого нужно просто вернуть само значение — или метод <code>JSON.parse()</code> вернёт {{jsxref("undefined")}}.</p> +<pre class="brush: js">JSON.parse('{"p": 5}', function(k, v) { + if (k === '') { return v; } // самое верхнее значение - возвращаем его + return v * 2; // иначе возвращаем v * 2. +}); // { p: 10 } + +JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) { + console.log(k); // пишем имя текущего свойства, последним именем будет "" + return v; // возвращаем неизменённое значение свойства +}); + +// 1 +// 2 +// 4 +// 6 +// 5 +// 3 +// "" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.7.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatIE("8.0")}}</td> + <td>{{CompatOpera("10.5")}}</td> + <td>{{CompatSafari("4.0")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> +<p>Начиная с Gecko 29 {{geckoRelease("29")}}, при передаче некорректной строки JSON выдаётся более подробное собщение об ошибке, содержащее номер строки и колонки, в которых была обнаружена ошибка разбора. Это полезно при отладке больших данных JSON.</p> +<pre class="brush: js">JSON.parse('[1, 2, 3,]'); +// SyntaxError: JSON.parse: unexpected character at +// line 1 column 10 of the JSON data +// SyntaxError: JSON.parse: неожиданный символ +// в строке 1, колонке 10 данных JSON +</pre> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide/Using_native_JSON">Использование родного объекта <code>JSON</code></a></li> + <li>{{jsxref("JSON.stringify()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/json/stringify/index.html b/files/ru/web/javascript/reference/global_objects/json/stringify/index.html new file mode 100644 index 0000000000..04ccba32a7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/json/stringify/index.html @@ -0,0 +1,189 @@ +--- +title: JSON.stringify() +slug: Web/JavaScript/Reference/Global_Objects/JSON/stringify +tags: + - JSON + - JavaScript + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify +--- +<div>{{JSRef("Global_Objects", "JSON")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>JSON.stringify()</code></strong> преобразует значение JavaScript в строку JSON, возможно с заменой значений, если указана функция замены, или с включением только определённых свойств, если указан массив замены.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>JSON.stringify(<var>value</var>[, <var>replacer</var>[, <var>space</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, преобразуемое в строку JSON.</dd> + <dt><code>replacer</code> {{optional_inline}}</dt> + <dd>Если является функцией, преобразует значения и свойства по ходу их преобразования в строку; если является массивом, определяет набор свойств, включаемых в объект в окончательной строке.<br> + Подробное описание функции <code>replacer</code> даётся в статье <a href="/ru/docs/Web/JavaScript/Guide/Using_native_JSON#The_replacer_parameter">Использование родного объекта <code>JSON</code></a> руководства по JavaScript.</dd> + <dt><code>space</code> {{optional_inline}}</dt> + <dd>Делает результат красиво отформатированным (расставляя пробелы).</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>JSON.stringify()</code> преобразует значение в представляющую его нотацию JSON со следующими оговорками:</p> + +<ul> + <li>Порядок преобразования в строку свойств объектов, не являющихся массивами, не гарантируется. Не полагайтесь на порядок свойств во время преобразования.</li> + <li>Объекты {{jsxref("Boolean")}}, {{jsxref("Number")}} и {{jsxref("String")}} преобразуются в соответствующие примитивные значения, в соответствии с традиционным соглашением о семантике преобразований.</li> + <li>Значение {{jsxref("undefined")}}, функция или символ, встреченные во время преобразования, будут либо опущены (если они найдены в объекте), либо превращены в {{jsxref("null")}} (если они найдены в массиве).</li> + <li>Все свойства, имеющие ключ в виде символа, будут полностью проигнорированы, даже при использовании функции <code>replacer</code>.</li> +</ul> + +<pre class="brush: js">JSON.stringify({}); // '{}' +JSON.stringify(true); // 'true' +JSON.stringify('foo'); // '"foo"' +JSON.stringify([1, 'false', false]); // '[1,"false",false]' +JSON.stringify({ x: 5 }); // '{"x":5}' + +JSON.stringify({ x: 5, y: 6 }); +// '{"x":5,"y":6}' or '{"y":6,"x":5}' +JSON.stringify([new Number(1), new String('false'), new Boolean(false)]); +// '[1,"false",false]' + +// Символы: +JSON.stringify({ x: undefined, y: Object, z: Symbol('') }); +// '{}' +JSON.stringify({ [Symbol('foo')]: 'foo' }); +// '{}' +JSON.stringify({ [Symbol.for('foo')]: 'foo' }, [Symbol.for('foo')]); +// '{}' +JSON.stringify({ [Symbol.for('foo')]: 'foo' }, function(k, v) { + if (typeof k === 'symbol') { + return 'символ'; + } +}); +// '{}' +</pre> + +<h3 id="space_argument" name="space_argument">Параметр <code>space</code></h3> + +<p>Параметр <code>space</code> может использоваться для управления форматированием отступов в конечной строке. Если он числовой, каждый последующий уровень вложенности будет дополнен отступом из пробелов, количество которых соответствует уровню (вплоть до десятого уровня). Если он строковый, каждый последующий уровень вложенности будет предваряться этой строкой (или её первыми десятью символами).</p> + +<pre class="brush: js">JSON.stringify({ a: 2 }, null, ' '); +// '{ +// "a": 2 +// }' +</pre> + +<p>Использование символа табуляции имитирует стандартное красивое форматирование:</p> + +<pre class="brush: js">JSON.stringify({ uno: 1, dos: 2 }, null, '\t'); +// вернёт строку: +// '{ +// "uno": 1, +// "dos": 2 +// }' +</pre> + +<h3 id="toJSON_behavior" name="toJSON_behavior">Поведение метода <code>toJSON()</code></h3> + +<p>Если преобразуемый в строку объект имеет свойство с именем <code>toJSON</code> и значением свойства, установленным в функцию, то этот метод <code>toJSON()</code> изменит стандартное поведение преобразования в JSON: вместо преобразования объекта будет использоваться значение, возвращаемое методом <code>toJSON()</code>. Например:</p> + +<div class="warning"> +<p>Функции не являются допустимыми данными в JSON, так что они не будут работать. Кроме того, некоторые объекты, например, объект {{jsxref("Date")}}, станут строками после применения {{jsxref("JSON.parse()")}}.</p> +</div> + +<pre class="brush: js">var obj = { + foo: 'foo', + toJSON: function() { + return 'bar'; + } +}; +JSON.stringify(obj); // '"bar"' +JSON.stringify({ x: obj }); // '{"x":"bar"}' +</pre> + +<h3 id="Example_of_using_JSON.stringify_with_localStorage" name="Example_of_using_JSON.stringify_with_localStorage">Пример использования метода <code>JSON.stringify()</code> вместе с <code>localStorage</code></h3> + +<p>В случае, если вы хотите сохранить объект таким образом, чтобы его можно было восстановить даже после закрытия браузера, имеет смысл воспользоваться следующим примером, демонстрирующим применение метода <code>JSON.stringify()</code>:</p> + +<pre class="brush: js">// Создаём некоторый объект +var session = { + 'screens': [], + 'state': true +}; +session.screens.push({ 'name': 'экранА', 'width': 450, 'height': 250 }); +session.screens.push({ 'name': 'экранБ', 'width': 650, 'height': 350 }); +session.screens.push({ 'name': 'экранВ', 'width': 750, 'height': 120 }); +session.screens.push({ 'name': 'экранГ', 'width': 250, 'height': 60 }); +session.screens.push({ 'name': 'экранД', 'width': 390, 'height': 120 }); +session.screens.push({ 'name': 'экранЕ', 'width': 1240, 'height': 650 }); + +// Преобразуем его в строку JSON с помощью метода JSON.stringify(), +// затем сохраняем его в localStorage под именем session +localStorage.setItem('session', JSON.stringify(session)); + +// Пример того, как можно преобразовать строку, полученную с помощью метода +// JSON.stringify() и сохранённую в localStorage обратно в объект +var restoredSession = JSON.parse(localStorage.getItem('session')); + +// Переменная restoredSession содержит объект, который был сохранён +// в localStorage +console.log(restoredSession); +</pre> + +<h3 id="Example_of_using_replacer_parameter" name="Example_of_using_replacer_parameter">Пример использования параметра <code>replacer</code></h3> + +<pre class="brush: js">var foo = { foundation: 'Mozilla', model: 'box', week: 45, transport: 'car', month: 7 }; + +JSON.stringify(foo, function(key, value) { + if (typeof value === 'string') { + return undefined; // удаляем все строковые свойства + } + return value; +}); // '{"week":45,"month":7}' + +JSON.stringify(foo, ['week', 'month']); +// '{"week":45,"month":7}', сохранились только свойства week и month +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.7.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.JSON.stringify")}}</p> +</div> + + + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide/Using_native_JSON">Использование родного объекта <code>JSON</code></a></li> + <li>{{jsxref("JSON.parse()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/@@species/index.html b/files/ru/web/javascript/reference/global_objects/map/@@species/index.html new file mode 100644 index 0000000000..cd65113453 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/@@species/index.html @@ -0,0 +1,111 @@ +--- +title: 'get Map[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/Map/@@species +translation_of: Web/JavaScript/Reference/Global_Objects/Map/@@species +--- +<div>{{JSRef}}</div> + +<p>Акцессор свойства <code><strong>Map[@@species]</strong></code> возвращает <code>Map</code> конструктор.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Map[Symbol.species] +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Акцессор свойства species, возвращает конструктор по умолчанию для <code>Map</code> объектов. Конструкторы подклассов могут переопределить его, чтобы изменить поведение конструктора.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Свойство species возвращает конструктор по умолчанию, который является конструктором <code>Map</code> для <code>Map</code> объектов:</p> + +<pre class="brush: js">Map[Symbol.species]; // функция Map()</pre> + +<p>В производном объекте коллекции (например, ваша пользовательская карта <code>MyMap</code>), <code>MyMap</code> species является <code>MyMap</code> конструктором. Однако, вы можете захотеть переопределить это, что бы вернуть родительский <code>Map</code> в методах вашего производного класса:</p> + +<pre class="brush: js">class MyMap extends Map { + // Перезаписываем MyMap species на родительский Map конструктор + static get [Symbol.species]() { return Map; } +}</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-get-map-@@species', 'get Map [ @@species ]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Исходное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-map-@@species', 'get Map [ @@species ]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Функция</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("41")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Функция</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("41")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотри_так_же">Смотри так же</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Symbol.species")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/clear/index.html b/files/ru/web/javascript/reference/global_objects/map/clear/index.html new file mode 100644 index 0000000000..57754a8e55 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/clear/index.html @@ -0,0 +1,119 @@ +--- +title: Map.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/Map/clear +tags: + - ECMAScript6 + - JavaScript + - Map + - Method + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Map/clear +--- +<div>{{JSRef}}</div> + +<p><code><font face="Open Sans, arial, sans-serif">Метод </font><strong>clear()</strong></code> удаляет все элементы из объекта <code>Map</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.clear();</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_clear">Использование метода <code>clear</code></h3> + +<pre class="brush: js">var myMap = new Map(); +myMap.set('bar', 'baz'); +myMap.set(1, 'foo'); + +myMap.size; // 2 +myMap.has('bar'); // true + +myMap.clear(); + +myMap.size; // 0 +myMap.has('bar') // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.clear', 'Map.prototype.clear')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.clear', 'Map.prototype.clear')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>38</td> + <td>{{CompatGeckoDesktop("19.0")}}</td> + <td>11</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatGeckoMobile("19.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/delete/index.html b/files/ru/web/javascript/reference/global_objects/map/delete/index.html new file mode 100644 index 0000000000..749996f85b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/delete/index.html @@ -0,0 +1,79 @@ +--- +title: Map.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Map/delete +tags: + - ECMAScript 2015 + - JavaScript + - Map + - Ссылка + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Map/delete +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>delete()</strong></code> удаляет указанный элемент из объекта {{jsxref("Map")}}.</p> + +<div>{{EmbedInteractiveExample("pages/js/map-prototype-delete.html")}}</div> + +<p class="hidden">Исходники данного интерактивного примера хранятся в репозитории GitHub. Если вы хотите внести свой склад в проект интерактивных примеров - пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и пришлите нам пулл-реквест.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">myMap.delete(key);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Ключ элемента удаляемого из объекта {{jsxref("Map")}}</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code>true</code> если элемент существовал в {{jsxref("Map")}} и он был удален или <code>false</code> если элемента с такким ключом не было.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_delete">Использование метода <code>delete</code></h3> + +<pre class="brush: js">var myMap = new Map(); +myMap.set('bar', 'foo'); + +myMap.delete("bar"); // Возвращает true. Успешно удалён. +myMap.has("bar"); // Возвращает false. Элемента "bar" больше нет. +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.delete', 'Map.prototype.delete')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.delete', 'Map.prototype.delete')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на данной странице сгенерирована из структурированных данных. Если вы хотите дополнить данные - пожалуйста клонируйте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и пришлите нам свой пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.Map.delete")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/entries/index.html b/files/ru/web/javascript/reference/global_objects/map/entries/index.html new file mode 100644 index 0000000000..fd34bd9a6b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/entries/index.html @@ -0,0 +1,127 @@ +--- +title: Map.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Map/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Map/entries +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>entries()</strong></code> возвращает новый <strong><a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итератор</a></strong>, содержащий пары <code>[key, value]</code> для каждого элемента объекта {{jsxref("Map")}} в том порядке, в котором они были заведены.</p> + +<p>Исходный код всех примеров для {{jsxref("Map")}} сохранен на GitHub <a href="https://github.com/mdn/interactive-examples/tree/master/live-examples/js-examples/map">https://github.com/mdn/interactive-examples/tree/master/live-examples/js-examples/map</a>.</p> + +<p>Вы можете внести свой вклад, для этого: </p> + +<p>1. Клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a></p> + +<p>2. Ознакомьтесь с руководством <a href="https://github.com/mdn/interactive-examples/blob/master/CONTRIBUTING.md">https://github.com/mdn/interactive-examples/blob/master/CONTRIBUTING.md</a></p> + +<p>3. Напишите свой пример и отравьте нам запрос на извлечение.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.entries()</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый итератор объекта {{jsxref("Map")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_entries">Использование <code>entries()</code></h3> + +<pre class="brush:js">var myMap = new Map(); +myMap.set('0', 'foo'); +myMap.set(1, 'bar'); +myMap.set({}, 'baz'); + +var mapIter = myMap.entries(); + +console.log(mapIter.next().value); // ["0", "foo"] +console.log(mapIter.next().value); // [1, "bar"] +console.log(mapIter.next().value); // [Object, "baz"] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.entries', 'Map.prototype.entries')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.entries', 'Map.prototype.entries')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop("20") }}</td> + <td>{{CompatNo}}</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("20")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Map.prototype.keys()")}}</li> + <li>{{jsxref("Map.prototype.values()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/foreach/index.html b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html new file mode 100644 index 0000000000..20111c1cdc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/foreach/index.html @@ -0,0 +1,94 @@ +--- +title: Map.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Map/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Map/forEach +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>forEach()</strong></code><strong> </strong>выполняет переданную функцию единожды для каждой пары ключ/значение объекта <code>Map</code> в порядке их вставки.</p> + +<div>{{EmbedInteractiveExample("pages/js/map-prototype-foreach.html")}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.forEach(<em>callback</em>[, <em>thisArg</em>])</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, которая будет выполнена для каждого элемента.</dd> + <dt><code>thisArg</code></dt> + <dd>Значение, которое будет использовано в качестве текущего при выполнении callback.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>forEach</code> выполняет переданный ему <code>callback</code> по разу для каждого фактически существующего ключа в наборе. <code>Callback</code> не вызывается для ключей, которые были удалены. Однако, он выполняется для элементов со значением <code>undefined</code>.</p> + +<p>При вызове <code>callback</code> используются <strong>три аргумента</strong>:</p> + +<ul> + <li><strong>значение элемента</strong></li> + <li><strong>ключ элемента</strong></li> + <li><strong>объект</strong> <strong><code>Map</code>, по которому осуществляется проход</strong></li> +</ul> + +<p>Если аргумент <code>thisArg</code> указан для <code>forEach</code>, то при вызове <code>callback</code> он будет передан в качестве значения <code>this</code>. В противном случае для <code>this</code> будет передано <code>undefined</code>. Значение <code>this</code>, в конечном итоге наблюдаемое в функции <code>callback</code>, определяется в соответствии c <a href="/ru/docs/Web/JavaScript/Reference/Operators/this">обычными правилами определения <code>this</code> в функции.</a></p> + +<p>Каждое значение посещается один раз, за исключением случая, когда оно было удалено и добавлено снова до завершения <code>forEach</code>. <code>callback</code> не вызывается для значений, удаленных до их посещения. Новые значения будут посещены, если они добавлены до завершения <code>forEach</code>.</p> + +<p><code>forEach</code> исполняет функцию <code>callback</code> один раз для каждого элемента в объекте <code>Map</code>; не возвращает значение.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Вывод_содержимого_объекта_Map">Вывод содержимого объекта <code>Map</code></h3> + +<p>Следующий код выводит в консоль строку для каждого элемента в объекте <code>Map</code>:</p> + +<pre class="brush:js">function logMapElements(value, key, map) { + console.log("m[" + key + "] = " + value); +} +new Map([["foo", 3], ["bar", {}], ["baz", undefined]]).forEach(logMapElements); +// logs: +// "m[foo] = 3" +// "m[bar] = [object Object]" +// "m[baz] = undefined" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.foreach', 'Map.prototype.forEach')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Map.forEach")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Set.prototype.forEach()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/get/index.html b/files/ru/web/javascript/reference/global_objects/map/get/index.html new file mode 100644 index 0000000000..ae4ca29646 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/get/index.html @@ -0,0 +1,68 @@ +--- +title: Map.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/Map/get +translation_of: Web/JavaScript/Reference/Global_Objects/Map/get +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>get()</strong></code> возвращает указанный элемент объекта {{jsxref("Map")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><em>myMap</em>.get(key);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Обязательный. Ключ элемента объекта {{jsxref("Map")}}.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращает элемент связанный с указанным ключом или <code>undefined</code>, если ключ не был найден в объекте {{jsxref("Map")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_get">Использование метода <code>get</code>()</h3> + +<pre class="brush: js notranslate">var myMap = new Map(); +myMap.set('bar', 'foo'); + +myMap.get('bar'); // Вернет "foo". +myMap.get('baz'); // Вернет undefined. +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.get', 'Map.prototype.get')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.get', 'Map.prototype.get')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{Compat("javascript.builtins.Map.get")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Map.prototype.set()")}}</li> + <li>{{jsxref("Map.prototype.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/has/index.html b/files/ru/web/javascript/reference/global_objects/map/has/index.html new file mode 100644 index 0000000000..bb2fb71b74 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/has/index.html @@ -0,0 +1,119 @@ +--- +title: Map.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Map/has +translation_of: Web/JavaScript/Reference/Global_Objects/Map/has +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>has()</strong></code> возвращает тип Boolean, указывающий существует ли элемент с указанным ключом или нет.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.has(key);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Обязательный параметр. Ключ элемента для проверки существования в объекте <code>Map.</code></dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<dl> + <dt>Boolean</dt> + <dd>Возвращает <code>true,</code> если элемент с указанным ключом существует в объекте <code>Map</code>; в противном случае возвращает <code>false</code>.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_has">Использование метода <code>has</code></h3> + +<pre class="brush: js">var myMap = new Map(); +myMap.set('bar', "foo"); + +myMap.has('bar'); // возвращает true +myMap.has('baz'); // возвращает false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.has', 'Map.prototype.has')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Первоначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.has', 'Map.prototype.has')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{ CompatibilityTable }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>38</td> + <td>{{CompatGeckoDesktop("13.0")}}</td> + <td>11</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatGeckoMobile("13.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Map.prototype.set()")}}</li> + <li>{{jsxref("Map.prototype.get()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/index.html b/files/ru/web/javascript/reference/global_objects/map/index.html new file mode 100644 index 0000000000..8e6551addf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/index.html @@ -0,0 +1,288 @@ +--- +title: Map +slug: Web/JavaScript/Reference/Global_Objects/Map +tags: + - ECMAScript 2015 + - JavaScript + - Map +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary">Объект <strong><code>Map</code></strong> содержит пары ключ-значение и сохраняет порядок вставки.</span> Любое значение (как объекты, так и {{Glossary("Primitive", "примитивы")}}) могут быть использованы в качестве ключей.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new Map([<em>iterable</em>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Массив или любой другой <a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols">итерируемый</a> объект чьими элементами являются пары ключ-значение (массивы из двух элементов, например <code>[[ 1, 'one' ],[ 2, 'two' ]]</code>). Все пары ключ-значение будут добавлены в новый экземпляр <code>Map</code>; <code>null</code> расценивается как <code>undefined</code>.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Объект <code>Map</code> итерируется в порядке вставки его элементов — цикл {{jsxref("Statements/for...of", "for...of")}} будет возвращать массив <code>[key, value]</code> на каждой итерации.</p> + +<h3 id="Key_equality">Key equality</h3> + +<p>Сравнение ключей основано на алгоритме "{{Glossary("SameValueZero", "SameValueZero")}}": <code>NaN</code> равно <code>NaN</code> (несмотря на то, что <code>NaN !== NaN</code>), все другие значения рассматриваются равными исходя из семантики оператора строгого равенства <code>===</code>. В текущей спецификации ECMAScript <code>-0</code> и <code>+0</code> принимаются равными, но в ранних версиях обсуждения это было не так (см. "Value equality for -0 and 0" в таблице <a href="#Browser_compatibility">совместимости с браузерами</a>).</p> + +<h3 id="Сравнение_Объектов_и_Map">Сравнение Объектов и Map</h3> + +<p>Объекты похожи на <code>Map</code> в том, что оба позволяют устанавливать значения по ключам, получать эти значения, удалять ключи и проверять их наличие. В связи с этим (и потому, что не было встроенных альтернатив), {{jsxref("Object", "Объекты")}} исторически использовались как <code>Map</code>. Однако, у них есть ряд отличий, который дает преимущества <code>Map</code> в ряде случаев:</p> + +<ul> + <li>Ключами {{jsxref("Object", "Объекта")}} выступают {{jsxref("String", "Строки")}} и {{jsxref("Symbol", "Символы")}}, в то время как любое значение может быть ключом <code>Map</code>, включая {{jsxref("Function", "функции")}}, {{jsxref("Object", "объекты")}} и {{Glossary("Primitive", "примитивы")}}.</li> + <li>В отличие от {{jsxref("Object", "Объектов")}}, ключи в <code>Map</code> упорядочены. Таким образом, во время итерации <code>Map</code>, ключи возвращаются в порядке вставки.</li> + <li>Вы легко можете получить количество элементов в <code>Map</code> с помощью свойства <code>size</code>, в то время как количество элементов {{jsxref("Object", "Объекта")}} может быть определено только вручную.</li> + <li><code>Map</code> - <a href="/en-US/docs/Web/JavaScript/Guide/iterable">итерируемый</a> объект и может быть итерирован напрямую, в то время как {{jsxref("Object", "Объект")}} требует ручного получения списка ключей и их итерации.</li> + <li>{{jsxref("Object", "Объект")}} имеет прототип и поэтому имеет стандартный набор ключей, который, при неосторожности, может пересекаться с вашими ключами. С момента выхода ES5 это может быть изменено с помощью <code>map = Object.create(null)</code>.</li> + <li><code>Map</code> может иметь более высокую производительность в случаях частого добавления или удаления ключей.</li> +</ul> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Map.length</code></dt> + <dd>Значение свойства <code>length</code> всегда равно 0.</dd> + <dd>Чтобы узнать количество элементов в <code>Map</code> - используйте {{jsxref("Map.prototype.size")}}.</dd> + <dt>{{jsxref("Map.@@species", "get Map[@@species]")}}</dt> + <dd>Функция-конструктор которая используется для создания производных объектов.</dd> + <dt>{{jsxref("Map.prototype")}}</dt> + <dd>Представляет прототип конструктора <code>Map</code>. Позволяет добавлять свойства всем объектам типа <code>Map</code>.</dd> +</dl> + +<h2 id="Экземпляры_Map">Экземпляры <code>Map</code></h2> + +<p>Все экземпляры <code>Map</code> наследуются от {{jsxref("Map.prototype")}}.</p> + +<h3 id="Свойства_2">Свойства</h3> + +<dl> + <dt><code>Map.prototype.constructor</code></dt> + <dd>Возвращает функцию, которая создала прототип экземпляра. Это функция <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map" title="The Map object holds key-value pairs and remembers the original insertion order of the keys."><code>Map</code></a> по умолчанию.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size" title="The size accessor property returns the number of elements in a Map object."><code>Map.prototype.size</code></a></dt> + <dd>Возвращает количество пар ключ/значение в объекте <code>Map</code>.</dd> +</dl> + +<h3 id="Методы">Методы</h3> + +<dl> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear" title="The clear() method removes all elements from a Map object."><code>Map.prototype.clear()</code></a></dt> + <dd>Удаляет все пары ключ / значение из объекта <code>Map</code>.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete" title="The delete() method removes the specified element from a Map object by key."><code>Map.prototype.delete(key)</code></a></dt> + <dd>Возвращает <code>true</code>, если элемент в объекте <code>Map</code> существовал и был удален, или false, если элемент не существует. <code>Map.prototype.has(key)</code> вернет <code>false</code> позже.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries" title="The entries() method returns a new Iterator object that contains the [key, value] pairs for each element in the Map object in insertion order."><code>Map.prototype.entries()</code></a></dt> + <dd>Возвращает новый объект <code>Iterator</code> который содержит <strong>массив</strong> <strong><code>[key, value]</code></strong> для каждого элемента в объекте <code>Map</code> в порядке вставки.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach" title="The forEach() method executes a provided function once per each key/value pair in the Map object, in insertion order."><code>Map.prototype.forEach(callbackFn[, thisArg])</code></a></dt> + <dd>Вызывает callbackFn один раз для каждой пары ключ-значение, присутствующей в объекте <code>Map</code>, в порядке вставки. Если для thisArg предоставляется параметр для forEach, он будет использоваться как значение this для каждого обратного вызова.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get" title="The get() method returns a specified element from a Map object."><code>Map.prototype.get(key)</code></a></dt> + <dd>Возвращает значение связанное с <code>key</code>, или <code>undefined</code> если его нет.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has" title="The has() method returns a boolean indicating whether an element with the specified key exists or not."><code>Map.prototype.has(key)</code></a></dt> + <dd>Возвращает логическое значение, подтверждающее, было ли значение связано с <code>key</code> в объекте <code>Map</code> или нет.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys" title="The keys() method returns a new Iterator object that contains the keys for each element in the Map object in insertion order."><code>Map.prototype.keys()</code></a></dt> + <dd>Возвращает новый объект <code>Iterator</code> содержащий ключи для каждого элемента в объекте <code>Map</code> в порядке вставки.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set" title="The set() method adds or updates an element with a specified key and a value to a Map object."><code>Map.prototype.set(key, value)</code></a></dt> + <dd>Устанавливает значение для <code>key</code> в объекте <code>Map</code>. Возвращает объект <code>Map</code>.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values" title="The values() method returns a new Iterator object that contains the values for each element in the Map object in insertion order."><code>Map.prototype.values()</code></a></dt> + <dd>Возвращает новый объект <code>Iterator</code> который содержит значения для каждого элемента в объекте <code>Map</code> в порядке вставки.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator" title="The initial value of the @@iterator property is the same function object as the initial value of the entries method."><code>Map.prototype[@@iterator]()</code></a></dt> + <dd>Возвращает новый объект <code>Iterator</code> который содержит массив<strong> <code>[key, value]</code></strong> для каждого элемента в объекте <code>Map</code> в порядке вставки.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_объекта_Map">Использование объекта <code>Map</code></h3> + +<pre class="brush: js">const myMap = new Map(); + +const keyObj = {}, + keyFunc = function () {}, + keyString = 'a string'; + +// задание значений +myMap.set(keyString, 'value associated with “a string”'); +myMap.set(keyObj, 'value associated with keyObj'); +myMap.set(keyFunc, 'value associated with keyFunc'); + +myMap.size; // 3 + +// получение значений +myMap.get(keyString); // value associated with “a string” +myMap.get(keyObj); // value associated with keyObj +myMap.get(keyFunc); // value associated with keyFunc + +myMap.get('a string'); // "value associated with 'a string'" + // потому что keyString === 'a string' +myMap.get({}); // undefined, потому что <span style="font-size: 1rem;">keyObj !== {} ({} — это литеральная нотация конструктора класса Object)</span> +myMap.get(function() {}) // undefined, потому что <span style="font-size: 1rem;">keyFunc !== function () {}</span> +</pre> + +<h3 id="Использование_NaN_в_качестве_ключей_Map">Использование <code>NaN</code> в качестве ключей <code>Map</code></h3> + +<p><code>NaN</code> может быть использован в качестве ключа. Несмотря на то, что <code>NaN</code> не равен самому себе (<code>NaN !== NaN</code> вернёт true), следующий пример работает, потому что <code>NaN</code> обрабатывается особым образом:</p> + +<pre class="brush: js">const myMap = new Map(); +myMap.set(NaN, 'not a number'); + +myMap.get(NaN); // not a number + +const otherNaN = Number('foo'); +myMap.get(otherNaN); // not a number +</pre> + +<h3 id="Итерация_Map_при_помощи_for..of">Итерация <code>Map</code> при помощи <code>for..of</code></h3> + +<p><code>Map</code> может быть итерирован с помощью <code>for..of</code>:</p> + +<pre class="brush: js">const myMap = new Map(); +myMap.set(0, 'zero'); +myMap.set(1, 'one'); +for (var [key, value] of myMap) { + console.log(key + ' = ' + value); +} +// 0 = zero +// 1 = one + +for (var key of myMap.keys()) { + console.log(key); +} +// 0 +// 1 + +for (var value of myMap.values()) { + console.log(value); +} +// zero +// one + +for (var [key, value] of myMap.entries()) { + console.log(key + ' = ' + value); +} +// 0 = zero +// 1 = one +</pre> + +<h3 id="Итерация_Map_при_помощи_forEach">Итерация <code>Map</code> при помощи <code>forEach()</code></h3> + +<p><code>Map</code> может быть итерирован с помощью метода <code>forEach()</code>:</p> + +<pre class="brush: js">myMap.forEach(function(value, key) { + console.log(`${key} => ${value}`); +}); +// 0 => zero +// 1 => one +</pre> + +<h3 id="Взаимоотношения_с_объектом_Array">Взаимоотношения с объектом <code>Array</code></h3> + +<pre class="brush: js">const kvArray = [['key1', 'value1'], ['key2', 'value2']]; + +// Используйте конструктор Map для преобразования двумерных массивов в Map +const myMap = new Map(kvArray); + +myMap.get('key1'); // вернёт “value1” + +// Используйте функцию Array.from для трансформации Map в двумерный key-value массив +console.log(Array.from(myMap)); // Выведет точно такой же массив как kvArray + +// Или используйте итераторы keys или values чтобы преобразовать ключи или значения в массивы +console.log(Array.from(myMap.keys())); // Выведет ['key1', 'key2'] +</pre> + +<h3 id="Клонирование_и_сляние_Map">Клонирование и сляние <code>Map</code></h3> + +<p> Равно как и {{jsxref("Array", "Массивы")}}, <code>Map</code> могут быть клонированы:</p> + +<pre class="brush: js">const original = new Map([ + [1, 'one'] +]); + +const clone = new Map(original); + +console.log(clone.get(1)); // one +console.log(original === clone); // false.</pre> + +<p>Следует помнить, что <em>данные</em> не клонируются.</p> + +<p><code>Map</code> могут быть слиты, с сохранением уникальности ключей:</p> + +<pre class="brush: js">const first = new Map([ + [1, 'one'], + [2, 'two'], + [3, 'three'], +]); + +const second = new Map([ + [1, 'uno'], + [2, 'dos'] +]); + +// Слияние двух Map. Взят будет последний повторившийся ключ. +// Оператор Spread по сути преобразует Map в массив +const merged = new Map([...first, ...second]); + +console.log(merged.get(1)); // uno +console.log(merged.get(2)); // dos +console.log(merged.get(3)); // three</pre> + +<p>Map могут быть слиты и с {{jsxref("Array", "Массивами")}}:</p> + +<pre class="brush: js">const first = new Map([ + [1, 'one'], + [2, 'two'], + [3, 'three'], +]); + +const second = new Map([ + [1, 'uno'], + [2, 'dos'] +]); + +// Слияние Map и массива. Как и при слиянии двух Map - взят будет последний повторившийся ключ. +const merged = new Map([...first, ...second, [1, 'eins']]); + +console.log(merged.get(1)); // eins +console.log(merged.get(2)); // dos +console.log(merged.get(3)); // three</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map-objects', 'Map')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map-objects', 'Map')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на данной странице сгенерирована из структурированных данных. Если вы хотите дополнить данные - пожалуйста клонируйте <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и пришлите нам свой пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.Map")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=697479">Map и Set баг в Mozilla</a></li> + <li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets">Предложение ECMAScript Harmony</a></li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/keys/index.html b/files/ru/web/javascript/reference/global_objects/map/keys/index.html new file mode 100644 index 0000000000..d7221c9a6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/keys/index.html @@ -0,0 +1,117 @@ +--- +title: Map.prototype.keys() +slug: Web/JavaScript/Reference/Global_Objects/Map/keys +translation_of: Web/JavaScript/Reference/Global_Objects/Map/keys +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>keys()</strong></code> возвращает новый <strong><a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итератор</a></strong>, содержащий ключи каждого элемента объекта {{jsxref("Map")}} в том порядке, в котором они были заведены.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.keys()</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый итератор объекта {{jsxref("Map")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_keys()">Использование метода <code>keys()</code></h3> + +<pre class="brush:js">var myMap = new Map(); +myMap.set('0', 'foo'); +myMap.set(1, 'bar'); +myMap.set({}, 'baz'); + +var mapIter = myMap.keys(); + +console.log(mapIter.next().value); // "0" +console.log(mapIter.next().value); // 1 +console.log(mapIter.next().value); // Object +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.keys', 'Map.prototype.keys')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.keys', 'Map.prototype.keys')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("20")}}</td> + <td>{{CompatNo}}</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("20") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Map.prototype.entries()")}}</li> + <li>{{jsxref("Map.prototype.values()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/prototype/index.html b/files/ru/web/javascript/reference/global_objects/map/prototype/index.html new file mode 100644 index 0000000000..a930a48b30 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/prototype/index.html @@ -0,0 +1,125 @@ +--- +title: Map.prototype +slug: Web/JavaScript/Reference/Global_Objects/Map/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Map +--- +<div>{{JSRef}}</div> + +<p>Свойство <code><strong>Map</strong></code><strong><code>.prototype</code></strong> представляет собой прототип конструктора {{jsxref("Map")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Экземпляры {{jsxref("Map")}} наследуются от {{jsxref("Map.prototype")}}. Вы можете использовать объект конструктора прототипа для добавления свойств и методов ко всем экземплярам <code>Map</code>.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Map.prototype.constructor</code></dt> + <dd>Возвращает функцию, создающую экземпляр прототипа. Это функция {{jsxref("Map")}} по умолчанию. </dd> + <dt>{{jsxref("Map.prototype.size")}}</dt> + <dd>Возвращает количество пар key/value, содержащихся в объекте <code>Map</code>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Map.prototype.clear()")}}</dt> + <dd>Удаляет все пары key/value из объекта <code>Map</code>.</dd> + <dt>{{jsxref("Map.delete", "Map.prototype.delete(key)")}}</dt> + <dd>Возвращает <code>true</code>, если элемент присутствовал в объекте <code>Map</code> и был удалён, или <code>false</code>, если элемент отсутствует. После вызова этого метода <code>Map.prototype.has(key)</code> вернёт <code>false</code>.</dd> + <dt>{{jsxref("Map.prototype.entries()")}}</dt> + <dd>Возвращает новый объект итератора - new <code>Iterator</code>, который содержит <strong>массив из [key, value]</strong> для каждого элемента в объекте <code>Map</code> в порядке добавления.</dd> + <dt>{{jsxref("Map.forEach", "Map.prototype.forEach(callbackFn[, thisArg])")}}</dt> + <dd>Вызывает callbackFn для каждой пары key/value, находящейся в объекте <code>Map</code>, в порядке добавления. Если указан параметр thisArg, он будет использоваться в качестве значения this при каждом вызове callbackFn. </dd> + <dt>{{jsxref("Map.get", "Map.prototype.get(key)")}}</dt> + <dd>Возвращает значение по указанному ключу <code>key</code> или <code>undefined</code>, если значение отсутствует. </dd> + <dt>{{jsxref("Map.has", "Map.prototype.has(key)")}}</dt> + <dd>Возвращает <code>true</code> или <code>false</code> в зависимости от того, было ли значение связано с <code>key</code> в объекте <code>Map</code> или нет.</dd> + <dt>{{jsxref("Map.prototype.keys()")}}</dt> + <dd>Возвращает новый объект итератора - new <code>Iterator</code>, который содержит <strong>keys</strong> для каждого элемента в объекте <code>Map</code> в порядке добавления.</dd> + <dt>{{jsxref("Map.set", "Map.prototype.set(key, value)")}}</dt> + <dd>Устанавлиевает value для <code>key</code> в объекте <code>Map</code>. Возвращает объект <code>Map</code>.</dd> + <dt>{{jsxref("Map.prototype.values()")}}</dt> + <dd>Возвращает новый объект итератора - new <code>Iterator</code>, который содержит <strong>values</strong> для каждого элемента в объекте <code>Map</code> в порядке добавления.</dd> + <dt>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</dt> + <dd>Возвращает новый объект итератора - new <code>Iterator</code>, который содержит <strong>массив из [key, value]</strong> для каждого элемента в объекте <code>Map</code> в порядке добавления. </dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-map.prototype', 'Map.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>38</td> + <td>{{ CompatGeckoDesktop("13") }}</td> + <td>11</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatGeckoMobile("13")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td> + <p>8</p> + </td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/set/index.html b/files/ru/web/javascript/reference/global_objects/map/set/index.html new file mode 100644 index 0000000000..b3f13a7fe5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/set/index.html @@ -0,0 +1,140 @@ +--- +title: Map.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/Map/set +translation_of: Web/JavaScript/Reference/Global_Objects/Map/set +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>set()</strong></code> добавляет объекту {{jsxref("Map")}} новый элемент или обновляет существующий с указанными значениями <code>key</code> и <code>value</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.set(key, value);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Ключ добавляемого элемента.</dd> + <dt>value</dt> + <dd>Значение добавляемого элемента.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Объект {{jsxref("Map")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_set()">Использование метода <code>set()</code></h3> + +<pre class="brush: js">var myMap = new Map(); + +// Добавление нового элемента объекту Map +myMap.set('bar', 'foo'); +myMap.set(1, 'foobar'); + +// Обновление существующего элемента +myMap.set('bar', 'baz'); +</pre> + +<h3 id="Последовательное_использование_метода_set()">Последовательное использование метода <code>set()</code></h3> + +<p>Так как метод <code>set()</code> возвращает объект <code>Map</code>, Вы можете последовательно применять метод <code>set()</code> как в примере ниже:</p> + +<pre class="brush: js"><code>// Последовательно добавляет новые элементы в myMap: +myMap.set('bar', 'foo') + .set(1, 'foobar') + .set(2, 'baz');</code></pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.set', 'Map.prototype.set')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.set', 'Map.prototype.set')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("13.0")}}</td> + <td>11</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("13.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Примечание_к_поддержке_браузерами">Примечание к поддержке браузерами</h2> + +<ul> + <li>В Firefox 33 {{geckoRelease("33")}} и более ранних версиях <code>Map.prototype.set</code> возвращал <code>undefined</code> и не был доступен вызов его в цепочке. Это было поправлено ({{bug(1031632)}}). Данное поведение было также обнаружено в Chrome/v8 (<a href="https://code.google.com/p/v8/issues/detail?id=3410">issue</a>) и IE11.</li> +</ul> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Map.prototype.get()")}}</li> + <li>{{jsxref("Map.prototype.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/size/index.html b/files/ru/web/javascript/reference/global_objects/map/size/index.html new file mode 100644 index 0000000000..7716b386fd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/size/index.html @@ -0,0 +1,112 @@ +--- +title: Map.prototype.size +slug: Web/JavaScript/Reference/Global_Objects/Map/size +translation_of: Web/JavaScript/Reference/Global_Objects/Map/size +--- +<div>{{JSRef}}</div> + +<p>Геттер <code>size</code> возвращает количество элементов в объекте {{jsxref("Map")}}.</p> + +<p>{{EmbedInteractiveExample("pages/js/map-prototype-size.html")}}</p> + +<h2 id="Описание">Описание</h2> + +<p>Значение <code>size</code> - целое число, описывающее, сколько элементов имеет объект Map. У свойства <code>size</code> не определён сеттер: переопределить его нельзя.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_size">Использование <code>size</code></h3> + +<pre class="brush:js notranslate">var myMap = new Map(); +myMap.set("a", "альфа"); +myMap.set("b", "бета"); +myMap.set("g", "гамма"); + +myMap.size // 3 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-get-map.prototype.size', 'Map.prototype.size')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Первое определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-map.prototype.size', 'Map.prototype.size')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>38</td> + <td>{{ CompatGeckoDesktop("19") }}</td> + <td>{{ CompatIE("11") }}</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatGeckoMobile("19")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Замечания_для_Gecko">Замечания для Gecko</h2> + +<ul> + <li>С версии Gecko 13 {{geckoRelease("13")}} до Gecko 18 {{geckoRelease("18")}} свойство <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">size</span></font> было методом <code>Map.prototype.size</code>, но это было изменено в поздних версиях чтобы соответствовать спецификации ECMAScript 2015 ({{bug("807001")}}).</li> +</ul> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/map/values/index.html b/files/ru/web/javascript/reference/global_objects/map/values/index.html new file mode 100644 index 0000000000..6267dab64e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/map/values/index.html @@ -0,0 +1,116 @@ +--- +title: Map.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Map/values +translation_of: Web/JavaScript/Reference/Global_Objects/Map/values +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>values()</strong></code> возвращает новый <strong><a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итератор</a></strong>, содержащий значения каждого элемента в объекте {{jsxref("Map")}} в том порядке, в котором они были заведены.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>myMap</em>.values()</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый итератор объекта {{jsxref("Map")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_values()">Использование <code>values()</code></h3> + +<pre class="brush:js">var myMap = new Map(); +myMap.set('0', 'foo'); +myMap.set(1, 'bar'); +myMap.set({}, 'baz'); + +var mapIter = myMap.values(); + +console.log(mapIter.next().value); // "foo" +console.log(mapIter.next().value); // "bar" +console.log(mapIter.next().value); // "baz"</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-map.prototype.values', 'Map.prototype.values')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-map.prototype.values', 'Map.prototype.values')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop("20") }}</td> + <td>{{CompatNo}}</td> + <td>25</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>38</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile("20") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Map.prototype.entries()")}}</li> + <li>{{jsxref("Map.prototype.keys()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/abs/index.html b/files/ru/web/javascript/reference/global_objects/math/abs/index.html new file mode 100644 index 0000000000..2d46eb6650 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/abs/index.html @@ -0,0 +1,100 @@ +--- +title: Math.abs() +slug: Web/JavaScript/Reference/Global_Objects/Math/abs +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/abs +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.abs()</code></strong> возвращает абсолютное значение числа. то есть</p> + +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.abs</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mrow><mo stretchy="false">|</mo><mi>x</mi><mo stretchy="false">|</mo></mrow><mo>=</mo><mrow><mo>{</mo><mtable columnalign="left left"><mtr><mtd><mi>x</mi></mtd><mtd><mtext>if</mtext><mspace width="1em"></mspace><mi>x</mi><mo>≥</mo><mn>0</mn></mtd></mtr><mtr><mtd><mo>-</mo><mi>x</mi></mtd><mtd><mtext>if</mtext><mspace width="1em"></mspace><mi>x</mi><mo><</mo><mn>0</mn></mtd></mtr></mtable></mrow></mrow><annotation encoding="TeX">{\mathtt{\operatorname{Math.abs}(x)}} = {|x|} = \begin{cases} x & \text{if} \quad x \geq 0 \\ x & \text{if} \quad x < 0 \end{cases} </annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.abs(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>abs()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.abs()</code>, а не пытаться вызывать метод на созданном объекте <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Math.abs_behavior" name="Example:_Math.abs_behavior">Пример: поведение метода <code>Math.abs()</code></h3> + +<p>Метод вернёт {{jsxref("NaN")}}, если в него передать нечисловую строку или значение {{jsxref("undefined")}}/ничего не передавать. Метод вернёт 0, если в него передать значение {{jsxref("null")}}.</p> + +<pre class="brush: js">Math.abs('-1'); // 1 +Math.abs(-2); // 2 +Math.abs(null); // 0 +Math.abs(''); // 0 +Math.abs([]); // 0 +Math.abs([2]); // 2 +Math.abs([1,2]); // NaN +Math.abs({}); // NaN +Math.abs('string'); // NaN +Math.abs(); // NaN +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.1', 'Math.abs')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.abs', 'Math.abs')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-math.abs', 'Math.abs')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + + + +<h2 id="Browser_compatibility" name="Browser_compatibility"><br> + Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Math.abs")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.ceil()")}}</li> + <li>{{jsxref("Math.floor()")}}</li> + <li>{{jsxref("Math.round()")}}</li> + <li>{{jsxref("Math.sign()")}}</li> + <li>{{jsxref("Math.trunc()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/acos/index.html b/files/ru/web/javascript/reference/global_objects/math/acos/index.html new file mode 100644 index 0000000000..0506d944ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/acos/index.html @@ -0,0 +1,125 @@ +--- +title: Math.acos() +slug: Web/JavaScript/Reference/Global_Objects/Math/acos +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acos +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.acos()</code></strong> возвращает арккосинус числа (в радианах), то есть</p> +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mo stretchy="false">[</mo><mrow><mo>-</mo><mn>1</mn></mrow><mo>;</mo><mn>1</mn><mo stretchy="false">]</mo><mo>,</mo><mspace width="thickmathspace"></mspace><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.acos</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arccos</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mo stretchy="false">[</mo><mn>0</mn><mo>;</mo><mi>π</mi><mo stretchy="false">]</mo><mspace width="thinmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">cos</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.acos}(x)} = \arccos(x) = \text{ уникальный } \; y \in [0; \pi] \, \text{такой, что} \; \cos(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.acos(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.acos()</code> возвращает числовое значение между 0 и π радианами для значения <code>x</code>, лежащего в диапазоне от -1 до 1. Метод вернёт {{jsxref("NaN")}}, если значение <code>x</code> выйдет за этот диапазон.</p> +<p>Поскольку метод <code>acos()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.acos()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.acos" name="Example:_Using_Math.acos">Пример: использование метода <code>Math.acos()</code></h3> +<pre class="brush:js">Math.acos(-2); // NaN +Math.acos(-1); // 3.141592653589793 +Math.acos(0); // 1.5707963267948966 +Math.acos(0.5); // 1.0471975511965979 +Math.acos(1); // 0 +Math.acos(2); // NaN +</pre> +<p>Для значений, меньших -1 или больших 1, метод <code>Math.acos()</code> возвращает {{jsxref("NaN")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.2', 'Math.acos')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.acos', 'Math.acos')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/acosh/index.html b/files/ru/web/javascript/reference/global_objects/math/acosh/index.html new file mode 100644 index 0000000000..7dc0900c24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/acosh/index.html @@ -0,0 +1,136 @@ +--- +title: Math.acosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/acosh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/acosh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.acosh()</code></strong> возвращает гиперболический арккосинус числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>≥</mo><mn>1</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.acosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arcosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>≥</mo><mn>0</mn><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">cosh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \geq 1, \mathtt{\operatorname{Math.acosh}(x)} = \operatorname{arcosh}(x) = \text{ уникальный } \; y \geq 0 \; \text{такой, что} \; \cosh(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.acosh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>acosh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.acosh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.acosh" name="Example:_Using_Math.acosh">Пример: использование метода <code>Math.acosh()</code></h3> + +<pre class="brush: js">Math.acosh(-1); // NaN +Math.acosh(0); // NaN +Math.acosh(0.5) // NaN +Math.acosh(1); // 0 +Math.acosh(2); // 1.3169578969248166 +</pre> + +<p>Для значений, меньших 1, метод <code>Math.acosh()</code> возвращает {{jsxref("NaN")}}.</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Для всех <math><semantics><mrow><mi>x</mi><mo>≥</mo><mn>1</mn></mrow><annotation encoding="TeX">x \geq 1</annotation></semantics></math>, мы имеем <math><semantics><mrow><mo lspace="0em" rspace="thinmathspace">arcosh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>-</mo><mn>1</mn></mrow></msqrt></mrow><mo>)</mo></mrow></mrow><annotation encoding="TeX">\operatorname {arcosh} (x) = \ln \left(x + \sqrt{x^{2} - 1} \right)</annotation></semantics></math>, так что этот метод может эмулироваться следующим образом:</p> + +<pre class="brush: js">Math.acosh = Math.acosh || function(x) { + return Math.log(x + Math.sqrt(x * x - 1)); +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.acosh', 'Math.acosh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.asinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.atanh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.cosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.sinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.tanh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/asin/index.html b/files/ru/web/javascript/reference/global_objects/math/asin/index.html new file mode 100644 index 0000000000..beb9fcfe19 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/asin/index.html @@ -0,0 +1,125 @@ +--- +title: Math.asin() +slug: Web/JavaScript/Reference/Global_Objects/Math/asin +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asin +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.asin()</code></strong> возвращает арксинус числа (в радианах), то есть</p> +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mo stretchy="false">[</mo><mrow><mo>-</mo><mn>1</mn></mrow><mo>;</mo><mn>1</mn><mo stretchy="false">]</mo><mo>,</mo><mspace width="thickmathspace"></mspace><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.asin</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arcsin</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mrow><mo>[</mo><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac><mo>;</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mspace width="thinmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">sin</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in [{-1};1],\;\mathtt{\operatorname{Math.asin}(x)} = \arcsin(x) = \text{ уникальный } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{такой, что} \; \sin(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.asin(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.asin()</code> возвращает числовое значение между <math><semantics><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><annotation encoding="TeX">-\frac{\pi}{2}</annotation></semantics></math> и <math><semantics><mfrac><mi>π</mi><mn>2</mn></mfrac><annotation encoding="TeX">\frac{\pi}{2}</annotation></semantics></math> радианами для значения <code>x</code>, лежащего в диапазоне от -1 до 1. Метод вернёт {{jsxref("NaN")}}, если значение <code>x</code> выйдет за этот диапазон.</p> +<p>Поскольку метод <code>asin()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.asin()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.asin" name="Example:_Using_Math.asin">Пример: использование метода <code>Math.asin()</code></h3> +<pre class="brush: js">Math.asin(-2); // NaN +Math.asin(-1); // -1.5707963267948966 (-pi/2) +Math.asin(0); // 0 +Math.asin(0.5); // 0.5235987755982989 +Math.asin(1); // 1.570796326794897 (pi/2) +Math.asin(2); // NaN +</pre> +<p>Для значений, меньших -1 или больших 1, метод <code>Math.asin()</code> возвращает {{jsxref("NaN")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.3', 'Math.asin')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.asin', 'Math.asin')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/asinh/index.html b/files/ru/web/javascript/reference/global_objects/math/asinh/index.html new file mode 100644 index 0000000000..f1d1937d36 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/asinh/index.html @@ -0,0 +1,135 @@ +--- +title: Math.asinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/asinh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/asinh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.asinh()</code></strong> возвращает гиперболический арксинус числа, то есть</p> + +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.asinh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arsinh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">sinh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.asinh}(x)} = \operatorname{arsinh}(x) = \text{ уникальный } \; y \; \text{такой, что} \; \sinh(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.asinh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>asinh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.asinh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.asinh" name="Example:_Using_Math.asinh">Пример: использование метода <code>Math.asinh()</code></h3> + +<pre class="brush: js">Math.asinh(1); // 0.881373587019543 +Math.asinh(0); // 0 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Мы имеем <math><semantics><mrow><mo lspace="0em" rspace="thinmathspace">arsinh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mrow><mo>(</mo><mrow><mi>x</mi><mo>+</mo><msqrt><mrow><msup><mi>x</mi><mn>2</mn></msup><mo>+</mo><mn>1</mn></mrow></msqrt></mrow><mo>)</mo></mrow></mrow><annotation encoding="TeX">\operatorname {arsinh} (x) = \ln \left(x + \sqrt{x^{2} + 1} \right)</annotation></semantics></math>, так что этот метод может эмулироваться следующим образом:</p> + +<pre class="brush: js">Math.asinh = Math.asinh || function(x) { + if (x === -Infinity) { + return x; + } else { + return Math.log(x + Math.sqrt(x * x + 1)); + } +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.asinh', 'Math.asinh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.acosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.atanh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.cosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.sinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.tanh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/atan/index.html b/files/ru/web/javascript/reference/global_objects/math/atan/index.html new file mode 100644 index 0000000000..78ece8df0f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atan/index.html @@ -0,0 +1,120 @@ +--- +title: Math.atan() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.atan()</code></strong> возвращает арктангенс числа (в радианах), то есть</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.atan</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">arctan</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>∊</mo><mrow><mo>[</mo><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac><mo>;</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><mo>]</mo></mrow><mspace width="thinmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">tan</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.atan}(x)} = \arctan(x) = \text{ уникальный } \; y \in \left[-\frac{\pi}{2}; \frac{\pi}{2}\right] \, \text{такой, что} \; \tan(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.atan(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.atan()</code> возвращает числовое значение между <math><semantics><mrow><mo>-</mo><mfrac><mi>π</mi><mn>2</mn></mfrac></mrow><annotation encoding="TeX">-\frac{\pi}{2}</annotation></semantics></math> и <math><semantics><mfrac><mi>π</mi><mn>2</mn></mfrac><annotation encoding="TeX">\frac{\pi}{2}</annotation></semantics></math> радианами.</p> +<p>Поскольку метод <code>atan()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.atan()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.atan" name="Example:_Using_Math.atan">Пример: использование метода <code>Math.atan()</code></h3> +<pre class="brush: js">Math.atan(1); // 0.7853981633974483 +Math.atan(0); // 0 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.4', 'Math.atan')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.atan', 'Math.atan')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/atan2/index.html b/files/ru/web/javascript/reference/global_objects/math/atan2/index.html new file mode 100644 index 0000000000..08cdb00c7e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atan2/index.html @@ -0,0 +1,134 @@ +--- +title: Math.atan2() +slug: Web/JavaScript/Reference/Global_Objects/Math/atan2 +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atan2 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.atan2()</code></strong> возвращает арктангенс от частного своих аргументов.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.atan2(<var>y</var>, <var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>y</code></dt> + <dd>Первое число.</dd> + <dt><code>x</code></dt> + <dd>Второе число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.atan2()</code> возвращает числовое значение от -π до π, представляющее угол тета точки <code>(x, y)</code>. Это выраженный в радианах угол, отсчитываемый против часовой стрелки от положительного направления оси X до точки <code>(x, y)</code>. Обратите внимание, что первым в метод передаётся координата y, а только вторым — координата x.</p> +<p>В метод <code>Math.atan2()</code> аргументы <code>x</code> и <code>y</code> передаются по отдельности, в то время, как в метод <code>Math.atan()</code> передаётся отношение этих двух аргументов.</p> +<p>Поскольку метод <code>atan2()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.atan2()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.atan2" name="Example:_Using_Math.atan2">Пример: использование метода <code>Math.atan2()</code></h3> +<pre class="brush: js">Math.atan2(90, 15); // 1.4056476493802699 +Math.atan2(15, 90); // 0.16514867741462683 + +Math.atan2(±0, -0); // ±PI. +Math.atan2(±0, +0); // ±0. +Math.atan2(±0, -x); // ±PI для x > 0. +Math.atan2(±0, x); // ±0 дляx > 0. +Math.atan2(-y, ±0); // -PI/2 для y > 0. +Math.atan2(y, ±0); // PI/2 для y > 0. +Math.atan2(±y, -Infinity); // ±PI для конечного y > 0. +Math.atan2(±y, +Infinity); // ±0 для конечного y > 0. +Math.atan2(±Infinity, x); // ±PI/2 для конечного x. +Math.atan2(±Infinity, -Infinity); // ±3*PI/4. +Math.atan2(±Infinity, +Infinity); // ±PI/4. +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.5', 'Math.atan2')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.atan2', 'Math.atan2')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/atanh/index.html b/files/ru/web/javascript/reference/global_objects/math/atanh/index.html new file mode 100644 index 0000000000..55aabd470e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/atanh/index.html @@ -0,0 +1,137 @@ +--- +title: Math.atanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/atanh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/atanh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.atanh()</code></strong> возвращает гиперболический арктангенс числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>∊</mo><mrow><mo>(</mo><mrow><mo>-</mo><mn>1</mn><mo>,</mo><mn>1</mn></mrow><mo>)</mo></mrow><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.atanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="thinmathspace">arctanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext> уникальный </mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><mo lspace="0em" rspace="0em">tanh</mo><mo stretchy="false">(</mo><mi>y</mi><mo stretchy="false">)</mo><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \in \left( -1, 1 \right), \mathtt{\operatorname{Math.atanh}(x)} = \operatorname{arctanh}(x) = \text{ уникальный } \; y \; \text{такой, что} \; \tanh(y) = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.atanh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>atanh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.atanh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.atanh" name="Example:_Using_Math.atanh">Пример: использование метода <code>Math.atanh()</code></h3> + +<pre class="brush: js">Math.atanh(-2); // NaN +Math.atanh(-1); // -Infinity +Math.atanh(0); // 0 +Math.atanh(0.5); // 0.5493061443340548 +Math.atanh(1); // Infinity +Math.atanh(2); // NaN +</pre> + +<p>Для значений, меньших -1 или больших 1, метод <code>Math.atanh()</code> возвращает {{jsxref("NaN")}}.</p> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Для <math><semantics><mrow><mrow><mo>|</mo><mi>x</mi><mo>|</mo></mrow><mo><</mo><mn>1</mn></mrow><annotation encoding="TeX">\left|x\right| < 1</annotation></semantics></math>, мы имеем <math><semantics><mrow><mo lspace="0em" rspace="thinmathspace">artanh</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><mo lspace="0em" rspace="0em">ln</mo><mrow><mo>(</mo><mfrac><mrow><mn>1</mn><mo>+</mo><mi>x</mi></mrow><mrow><mn>1</mn><mo>-</mo><mi>x</mi></mrow></mfrac><mo>)</mo></mrow></mrow><annotation encoding="TeX">\operatorname {artanh} (x) = \frac{1}{2}\ln \left( \frac{1 + x}{1 - x} \right)</annotation></semantics></math>, так что этот метод может эмулироваться следующим образом:</p> + +<pre class="brush: js">Math.atanh = Math.atanh || function(x) { + return Math.log((1+x)/(1-x)) / 2; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.atanh', 'Math.atanh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.acosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.asinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.cosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.sinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.tanh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html b/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html new file mode 100644 index 0000000000..6eccb4f7f2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cbrt/index.html @@ -0,0 +1,134 @@ +--- +title: Math.cbrt() +slug: Web/JavaScript/Reference/Global_Objects/Math/cbrt +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cbrt +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.cbrt()</code></strong> возвращает кубический корень числа, то есть</p> +<math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mi>M</mi><mi>a</mi><mi>t</mi><mi>h</mi><mo>.</mo><mi>c</mi><mi>b</mi><mi>r</mi><mi>t</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mroot><mi>x</mi><mn>3</mn></mroot><mo>=</mo><mtext>уникальный</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><msup><mi>y</mi><mn>3</mn></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\mathtt{Math.cbrt(x)} = \sqrt[3]{x} = \text{уникальный} \; y \; \text{такой, что} \; y^3 = x</annotation></semantics></math><span style='font-family: x-locale-heading-primary,zillaslab,Palatino,"Palatino Linotype",x-locale-heading-secondary,serif; font-size: 2.33333rem; letter-spacing: -0.00278rem;'>Синтаксис</span> + +<pre class="syntaxbox"><code>Math.cbrt(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>cbrt()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.cbrt()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Math.cbrt" name="Example:_Using_Math.cbrt">Пример: использование метода <code>Math.cbrt()</code></h3> + +<pre class="brush: js">Math.cbrt(-1); // -1 +Math.cbrt(0); // 0 +Math.cbrt(1); // 1 + +Math.cbrt(2); // 1.2599210498948734 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Для всех <math><semantics><mrow><mi>x</mi><mo>≥</mo><mn>0</mn></mrow><annotation encoding="TeX">x \geq 0</annotation></semantics></math>, мы имеем <math><semantics><mrow><mroot><mi>x</mi><mn>3</mn></mroot><mo>=</mo><msup><mi>x</mi><mrow><mn>1</mn><mo>/</mo><mn>3</mn></mrow></msup></mrow><annotation encoding="TeX">\sqrt[3]{x} = x^{1/3}</annotation></semantics></math>, так что этот метод может эмулироваться следующим образом:</p> + +<pre class="brush: js">Math.cbrt = Math.cbrt || function(x) { + if (x === 0 || x === +1 / 0 || x === -1 / 0 || x !== x) { + return x; + } + var a = Math.abs(x); + var y = Math.exp(Math.log(a) / 3); + // from http://en.wikipedia.org/wiki/Cube_root#Numerical_methods + return (x / a) * (y + (a / (y * y) - y) / 3); +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.cbrt', 'Math.cbrt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.pow()")}}</li> + <li>{{jsxref("Math.sqrt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/ceil/index.html b/files/ru/web/javascript/reference/global_objects/math/ceil/index.html new file mode 100644 index 0000000000..afda2d9bd8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ceil/index.html @@ -0,0 +1,207 @@ +--- +title: Math.ceil() +slug: Web/JavaScript/Reference/Global_Objects/Math/ceil +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/ceil +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.ceil()</code></strong> - округление вверх. Округляет аргумент до ближайшего большего целого.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.ceil(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>ceil()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.ceil()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.ceil" name="Example:_Using_Math.ceil">Пример: использование метода <code>Math.ceil()</code></h3> + +<p>Следующий пример показывает использование метода <code>Math.ceil()</code>.</p> + +<pre><code>Math.ceil(.95); // 1 +Math.ceil(4); // 4 +Math.ceil(7.004); // 8 +Math.ceil(-0.95); // -0 +Math.ceil(-4); // -4 +Math.ceil(-7.004); // -7</code></pre> + +<h3 id="Decimal_adjustment">Decimal adjustment</h3> + +<h3 id="Example:_Decimal_adjustment" name="Example:_Decimal_adjustment">Пример: корректировка округления десятичных дробей</h3> + +<pre class="brush: js">// Замыкание +(function() { + /** + * Корректировка округления десятичных дробей. + * + * @param {String} type Тип корректировки. + * @param {Number} value Число. + * @param {Integer} exp Показатель степени (десятичный логарифм основания корректировки). + * @returns {Number} Скорректированное значение. + */ + function decimalAdjust(type, value, exp) { + // Если степень не определена, либо равна нулю... + if (typeof exp === 'undefined' || +exp === 0) { + return Math[type](value); + } + value = +value; + exp = +exp; + // Если значение не является числом, либо степень не является целым числом... + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + return NaN; + } + // Сдвиг разрядов + value = value.toString().split('e'); + value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); + // Обратный сдвиг + value = value.toString().split('e'); + return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); + } + + // Десятичное округление к ближайшему + if (!Math.round10) { + Math.round10 = function(value, exp) { + return decimalAdjust('round', value, exp); + }; + } + // Десятичное округление вниз + if (!Math.floor10) { + Math.floor10 = function(value, exp) { + return decimalAdjust('floor', value, exp); + }; + } + // Десятичное округление вверх + if (!Math.ceil10) { + Math.ceil10 = function(value, exp) { + return decimalAdjust('ceil', value, exp); + }; + } +})(); + +// Округление к ближайшему +Math.round10(55.55, -1); // 55.6 +Math.round10(55.549, -1); // 55.5 +Math.round10(55, 1); // 60 +Math.round10(54.9, 1); // 50 +Math.round10(-55.55, -1); // -55.5 +Math.round10(-55.551, -1); // -55.6 +Math.round10(-55, 1); // -50 +Math.round10(-55.1, 1); // -60 +// Округление вниз +Math.floor10(55.59, -1); // 55.5 +Math.floor10(59, 1); // 50 +Math.floor10(-55.51, -1); // -55.6 +Math.floor10(-51, 1); // -60 +// Округление вверх +Math.ceil10(55.51, -1); // 55.6 +Math.ceil10(51, 1); // 60 +Math.ceil10(-55.59, -1); // -55.5 +Math.ceil10(-59, 1); // -50 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.6', 'Math.ceil')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.ceil', 'Math.ceil')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.floor()")}}</li> + <li>{{jsxref("Math.round()")}}</li> + <li>{{jsxref("Math.sign()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.trunc()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/clz32/index.html b/files/ru/web/javascript/reference/global_objects/math/clz32/index.html new file mode 100644 index 0000000000..127ae43179 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/clz32/index.html @@ -0,0 +1,140 @@ +--- +title: Math.clz32() +slug: Web/JavaScript/Reference/Global_Objects/Math/clz32 +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/clz32 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.clz32()</code></strong> возвращает количество ведущих нулевых битов в 32-битном двоичном представлении числа.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.clz32(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Название <code>clz32</code> является сокращением для более длинного <code>CountLeadingZeroes32</code> (<code>ПосчтитатьВедущиеНули32</code>).</p> + +<p>Если значение <code>x</code> не является числом, оно будет сначала преобразовано в число, а потом в 32-битное беззнаковое целое число.</p> + +<p>Если преобразованое 32-битное беззнаковое целое число равно <code>0</code>, метод вернёт <code>32</code>, поскольку все биты в числе равны <code>0</code>.</p> + +<p>Этот метод особено полезен для систем, которые компилируются в JS, например, для <a href="/ru/docs/Emscripten">Emscripten</a>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.clz32" name="Example:_Using_Math.clz32">Пример: использование метода <code>Math.clz32()</code></h3> + +<pre class="brush: js">Math.clz32(1); // 31 +Math.clz32(1000); // 22 +Math.clz32(); // 32 + +[NaN, Infinity, -Infinity, 0, -0, null, undefined, 'foo', {}, []].filter( +function(n) { + return Math.clz32(n) !== 32 +}); // [] + +Math.clz32(true); // 31 +Math.clz32(3.5); // 30 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">Math.clz32 = Math.clz32 || function(value) { + value = Number(value) >>> 0; + return value !== 0 ? 31 - Math.floor(Math.log(value + 0.5) / Math.log(2)) : 32; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.clz32', 'Math.clz32')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("35")}}</td> + <td>{{CompatGeckoDesktop("31")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("31")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Math", "Math")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/cos/index.html b/files/ru/web/javascript/reference/global_objects/math/cos/index.html new file mode 100644 index 0000000000..1e3bf2088c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cos/index.html @@ -0,0 +1,122 @@ +--- +title: Math.cos() +slug: Web/JavaScript/Reference/Global_Objects/Math/cos +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cos +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.cos()</code></strong> возвращает косинус числа.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.cos(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число радиан.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.cos()</code> возвращает числовое значение от -1 до 1, которое представляет косинус угла.</p> +<p>Поскольку метод <code>cos()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.cos()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.cos" name="Example:_Using_Math.cos">Пример: использование метода <code>Math.cos()</code></h3> +<pre class="brush: js">Math.cos(0); // 1 +Math.cos(1); // 0.5403023058681398 + +Math.cos(Math.PI); // -1 +Math.cos(2 * Math.PI); // 1 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.7', 'Math.cos')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.cos', 'Math.cos')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/cosh/index.html b/files/ru/web/javascript/reference/global_objects/math/cosh/index.html new file mode 100644 index 0000000000..548d793b7e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/cosh/index.html @@ -0,0 +1,140 @@ +--- +title: Math.cosh() +slug: Web/JavaScript/Reference/Global_Objects/Math/cosh +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/cosh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.cosh()</code></strong> возвращает гиперболический косинус числа, который может быть выражен через {{jsxref("Math.E", "число e", "", 1)}}:</p> + +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mo lspace="0em" rspace="thinmathspace">Math.cosh(x)</mo></mstyle><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mn>2</mn></mfrac></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.cosh(x)}} = \frac{e^x + e^{-x}}{2}</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.cosh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>cosh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.cosh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.cosh" name="Example:_Using_Math.cosh">Пример: использование метода <code>Math.cosh()</code></h3> + +<pre class="brush: js">Math.cosh(0); // 1 +Math.cosh(1); // 1.5430806348152437 +Math.cosh(-1); // 1.5430806348152437 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.cosh = Math.cosh || function(x) { + return (Math.exp(x) + Math.exp(-x)) / 2; +} +</pre> + +<p>либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.cosh = Math.cosh || function(x) { + var y = Math.exp(x); + return (y + 1 / y) / 2; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.cosh', 'Math.cosh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.acosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.asinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.atanh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.sinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.tanh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/e/index.html b/files/ru/web/javascript/reference/global_objects/math/e/index.html new file mode 100644 index 0000000000..bcceeb4bc5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.E +slug: Web/JavaScript/Reference/Global_Objects/Math/E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/E +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.E</code></strong> представляет основание натурального логарифма, e, приблизительно равное 2,718.</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.E</mi></mstyle><mo>=</mo><mi>e</mi><mo>≈</mo><mn>2,718</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.E}} = e \approx 2,718</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>E</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.E</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.E" name="Example:_Using_Math.E">Пример: использование свойства <code>Math.E</code></h3> +<p>Следующая функция возвращает e:</p> +<pre class="brush: js">function getNapier() { + return Math.E; +} + +getNapier(); // 2.718281828459045 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.1', 'Math.E')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.e', 'Math.E')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log1p()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/exp/index.html b/files/ru/web/javascript/reference/global_objects/math/exp/index.html new file mode 100644 index 0000000000..1d516d229e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/exp/index.html @@ -0,0 +1,120 @@ +--- +title: Math.exp() +slug: Web/JavaScript/Reference/Global_Objects/Math/exp +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/exp +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.exp()</code></strong> возвращает значение выражения <code>e<sup>x</sup></code>, где <code>x</code> — аргумент метода, а <code>e</code> — {{jsxref("Math.E", "число Эйлера", "", 1)}}, основание натурального логарифма.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.exp(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку метод <code>exp()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.exp()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.exp" name="Example:_Using_Math.exp">Пример: использование метода <code>Math.exp()</code></h3> +<pre class="brush: js">Math.exp(-1); // 0.36787944117144233 +Math.exp(0); // 1 +Math.exp(1); // 2.718281828459045 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.8', 'Math.exp')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.exp', 'Math.exp')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.E")}}</li> + <li>{{jsxref("Math.expm1()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log1p()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/expm1/index.html b/files/ru/web/javascript/reference/global_objects/math/expm1/index.html new file mode 100644 index 0000000000..26b21553ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/expm1/index.html @@ -0,0 +1,132 @@ +--- +title: Math.expm1() +slug: Web/JavaScript/Reference/Global_Objects/Math/expm1 +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/expm1 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.expm1()</code></strong> возвращает значение выражения <code>e<sup>x</sup> - 1</code>, где <code>x</code> — аргумент метода, а {{jsxref("Math.E", "e", "", 1)}} — основание натурального логарифма.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.expm1(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>expm1()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.expm1()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.expm1" name="Example:_Using_Math.expm1">Пример: использование метода <code>Math.expm1()</code></h3> + +<pre class="brush: js">Math.expm1(-1); // -0.6321205588285577 +Math.expm1(0); // 0 +Math.expm1(1); // 1.718281828459045 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться при помощи метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.expm1 = Math.expm1 || function(x) { + return Math.exp(x) - 1; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.expm1', 'Math.expm1')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.E")}}</li> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log1p()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/floor/index.html b/files/ru/web/javascript/reference/global_objects/math/floor/index.html new file mode 100644 index 0000000000..c11fe6420e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/floor/index.html @@ -0,0 +1,200 @@ +--- +title: Math.floor() +slug: Web/JavaScript/Reference/Global_Objects/Math/floor +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/floor +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.floor()</code></strong> - округление вниз. Округляет аргумент до ближайшего меньшего целого.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.floor(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>floor()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.floor()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Math.floor" name="Example:_Using_Math.floor">Пример: использование метода <code>Math.floor()</code></h3> + +<pre class="brush: js">Math.floor( 45.95); // 45 +Math.floor(-45.95); // -46 +</pre> + +<h3 id="Example_Decimal_adjustment" name="Example:_Decimal_adjustment">Пример: корректировка округления десятичных дробей</h3> + +<pre class="brush: js">// Замыкание +(function() { + /** + * Корректировка округления десятичных дробей. + * + * @param {String} type Тип корректировки. + * @param {Number} value Число. + * @param {Integer} exp Показатель степени (десятичный логарифм основания корректировки). + * @returns {Number} Скорректированное значение. + */ + function decimalAdjust(type, value, exp) { + // Если степень не определена, либо равна нулю... + if (typeof exp === 'undefined' || +exp === 0) { + return Math[type](value); + } + value = +value; + exp = +exp; + // Если значение не является числом, либо степень не является целым числом... + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + return NaN; + } + // Сдвиг разрядов + value = value.toString().split('e'); + value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); + // Обратный сдвиг + value = value.toString().split('e'); + return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); + } + + // Десятичное округление к ближайшему + if (!Math.round10) { + Math.round10 = function(value, exp) { + return decimalAdjust('round', value, exp); + }; + } + // Десятичное округление вниз + if (!Math.floor10) { + Math.floor10 = function(value, exp) { + return decimalAdjust('floor', value, exp); + }; + } + // Десятичное округление вверх + if (!Math.ceil10) { + Math.ceil10 = function(value, exp) { + return decimalAdjust('ceil', value, exp); + }; + } +})(); + +// Округление к ближайшему +Math.round10(55.55, -1); // 55.6 +Math.round10(55.549, -1); // 55.5 +Math.round10(55, 1); // 60 +Math.round10(54.9, 1); // 50 +Math.round10(-55.55, -1); // -55.5 +Math.round10(-55.551, -1); // -55.6 +Math.round10(-55, 1); // -50 +Math.round10(-55.1, 1); // -60 +// Округление вниз +Math.floor10(55.59, -1); // 55.5 +Math.floor10(59, 1); // 50 +Math.floor10(-55.51, -1); // -55.6 +Math.floor10(-51, 1); // -60 +// Округление вверх +Math.ceil10(55.51, -1); // 55.6 +Math.ceil10(51, 1); // 60 +Math.ceil10(-55.59, -1); // -55.5 +Math.ceil10(-59, 1); // -50 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.9', 'Math.floor')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.floor', 'Math.floor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.ceil()")}}</li> + <li>{{jsxref("Math.round()")}}</li> + <li>{{jsxref("Math.sign()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.trunc()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/fround/index.html b/files/ru/web/javascript/reference/global_objects/math/fround/index.html new file mode 100644 index 0000000000..b6dd9e242d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/fround/index.html @@ -0,0 +1,128 @@ +--- +title: Math.fround() +slug: Web/JavaScript/Reference/Global_Objects/Math/fround +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/fround +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.fround()</code></strong> возвращает ближайшее число с плавающей запятой <a href="https://ru.wikipedia.org/wiki/Число_одинарной_точности">одинарной точности</a>, представляющее указанное число.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.fround(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>fround()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.fround()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.fround" name="Example:_Using_Math.fround">Пример: использование метода <code>Math.fround()</code></h3> + +<pre class="brush: js">Math.fround(0); // 0 +Math.fround(1); // 1 +Math.fround(1.337); // 1.3370000123977661 +Math.fround(1.5); // 1.5 +Math.fround(NaN); // NaN +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим образом, при условии, что среда выполнения поддерживает объект {{jsxref("Float32Array")}}:</p> + +<pre class="brush: js">Math.fround = Math.fround || function(x) { + return new Float32Array([x])[0]; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.fround', 'Math.fround')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("26")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.round()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/hypot/index.html b/files/ru/web/javascript/reference/global_objects/math/hypot/index.html new file mode 100644 index 0000000000..df3271d28c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/hypot/index.html @@ -0,0 +1,149 @@ +--- +title: Math.hypot() +slug: Web/JavaScript/Reference/Global_Objects/Math/hypot +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/hypot +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.hypot()</code></strong> возвращает квадратный корень суммы квадратов своих аргументов, то есть</p> + +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.hypot</mo><mo stretchy="false">(</mo><msub><mi>v</mi><mn>1</mn></msub><mo>,</mo><msub><mi>v</mi><mn>2</mn></msub><mo>,</mo><mo>…</mo><mo>,</mo><msub><mi>v</mi><mi>n</mi></msub><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msqrt><mrow><munderover><mo>∑</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover><msubsup><mi>v</mi><mi>i</mi><mn>2</mn></msubsup></mrow></msqrt><mo>=</mo><msqrt><mrow><msubsup><mi>v</mi><mn>1</mn><mn>2</mn></msubsup><mo>+</mo><msubsup><mi>v</mi><mn>2</mn><mn>2</mn></msubsup><mo>+</mo><mo>…</mo><mo>+</mo><msubsup><mi>v</mi><mi>n</mi><mn>2</mn></msubsup></mrow></msqrt></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.hypot}(v_1, v_2, \dots, v_n)} = \sqrt{\sum_{i=1}^n v_i^2} = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2}</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.hypot([<var>value1</var>[, <var>value2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value1, value2, ...</code></dt> + <dd>Числа.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>hypot()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.hypot()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<p>При вызове без аргументов результатом вызова будет значение +0.</p> + +<p>Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<p>При вызове с одним аргументом, метод <code>Math.hypot()</code> то же самое значение, что и метод <code>Math.abs()</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.hypot" name="Example:_Using_Math.hypot">Пример: использование метода <code>Math.hypot()</code></h3> + +<pre class="brush: js">Math.hypot(3, 4); // 5 +Math.hypot(3, 4, 5); // 7.0710678118654755 +Math.hypot(); // 0 +Math.hypot(NaN); // NaN +Math.hypot(3, 4, 'foo'); // NaN, +'foo' => NaN +Math.hypot(3, 4, '5'); // 7.0710678118654755, +'5' => 5 +Math.hypot(-3); // 3, то же самое, что и Math.abs(-3) +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим образом:</p> + +<pre class="brush: js">Math.hypot = Math.hypot || function() { + var y = 0; + var length = arguments.length; + + for (var i = 0; i < length; i++) { + if (arguments[i] === Infinity || arguments[i] === -Infinity) { + return Infinity; + } + y += arguments[i] * arguments[i]; + } + return Math.sqrt(y); +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.hypot', 'Math.hypot')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("27")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("27")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.pow()")}}</li> + <li>{{jsxref("Math.sqrt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/imul/index.html b/files/ru/web/javascript/reference/global_objects/math/imul/index.html new file mode 100644 index 0000000000..8c1480a99a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/imul/index.html @@ -0,0 +1,130 @@ +--- +title: Math.imul() +slug: Web/JavaScript/Reference/Global_Objects/Math/imul +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/imul +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.imul()</code></strong> возвращает результат перемножения в стиле C двух 32-битных чисел.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.imul(<var>a</var>, <var>b</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>a</code></dt> + <dd>Первое число.</dd> + <dt><code>b</code></dt> + <dd>Второе число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Math.imul()</code> позволяет выполнять быстрое перемножение двух 32-битных чисел с семантикой C. Эта возможность полезна для таких проектов, как <a href="http://en.wikipedia.org/wiki/Emscripten">Emscripten</a>. Поскольку метод <code>imul()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.imul()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.imul" name="Example:_Using_Math.imul">Пример: использование метода <code>Math.imul()</code></h3> + +<pre class="brush: js">Math.imul(2, 4); // 8 +Math.imul(-1, 8); // -8 +Math.imul(-2, -2); // 4 +Math.imul(0xffffffff, 5); // -5 +Math.imul(0xfffffffe, 5); // -10 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим способом:</p> + +<pre class="brush: js">Math.imul = Math.imul || function(a, b) { + var ah = (a >>> 16) & 0xffff; + var al = a & 0xffff; + var bh = (b >>> 16) & 0xffff; + var bl = b & 0xffff; + // сдвиг на 0 бит закрепляет знак в старшей части числа + // окончательный |0 преобразует беззнаковое значение обратно в знаковое значение + return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0)|0); +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.imul', 'Math.imul')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("28")}}</td> + <td>{{CompatGeckoDesktop("20")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatOpera("16")}}</td> + <td>{{CompatSafari("7")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("20")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>iOS 7</td> + </tr> + </tbody> +</table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/math/index.html b/files/ru/web/javascript/reference/global_objects/math/index.html new file mode 100644 index 0000000000..337e2229b2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/index.html @@ -0,0 +1,198 @@ +--- +title: Math +slug: Web/JavaScript/Reference/Global_Objects/Math +tags: + - JavaScript + - Math + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<p>Объект <strong><code>Math</code></strong> является встроенным объектом, хранящим в своих свойствах и методах различные математические константы и функции. Объект <code>Math</code> не является функциональным объектом.</p> + +<p><code>Math</code> не работает с числами типа {{jsxref("BigInt")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>В отличие от других глобальных объектов, объект <code>Math</code> не является конструктором. Все свойства и методы объекта <code>Math</code> являются статическими. Вы ссылаетесь на константу π через <code>Math.PI</code> и вызываете функцию синуса через <code>Math.sin(x)</code>, где <code>x</code> является аргументом метода. Константы в JavaScript определены с полной точностью действительных чисел.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Math.E")}}</dt> + <dd>Число Эйлера или Непера, основание натуральных логарифмов, приблизительно равное 2,718.</dd> + <dt>{{jsxref("Math.LN2")}}</dt> + <dd>Натуральный логарифм из 2, приблизительно равен 0,693.</dd> + <dt>{{jsxref("Math.LN10")}}</dt> + <dd>Натуральный логарифм из 10, приблизительно равен 2,303.</dd> + <dt>{{jsxref("Math.LOG2E")}}</dt> + <dd>Двоичный логарифм из E, приблизительно равен 1,443.</dd> + <dt>{{jsxref("Math.LOG10E")}}</dt> + <dd>Десятичный логарифм из E, приблизительно равен 0,434.</dd> + <dt>{{jsxref("Math.PI")}}</dt> + <dd>Отношение длины окружности круга к его диаметру, приблизительно равно 3,14159.</dd> + <dt>{{jsxref("Math.SQRT1_2")}}</dt> + <dd>Квадратный корень из 1/2; или, что тоже самое, 1, делённая на квадратный корень из 2, приблизительно равен 0,707.</dd> + <dt>{{jsxref("Math.SQRT2")}}</dt> + <dd>Квадратный корень из 2, приблизительно равен 1,414.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<div class="note"> +<p>Обратите внимание, что тригонометрические функции (<code>sin()</code>, <code>cos()</code>, <code>tan()</code>, <code>asin()</code>, <code>acos()</code>, <code>atan()</code> и <code>atan2()</code>) принимают в параметрах или возвращают углы в радианах. Для преобразования радианов в градусы, поделите их на величину <code>(Math.PI / 180)</code>; для преобразования в обратном направлении, умножьте градусы на эту же величину.</p> +</div> + +<div class="note"> +<p>Обратите внимание, что точность большинства математических функций зависит от реализации. Это означает, что различные браузеры могут дать разные результаты, более того, даже один и тот же движок JavaScript на различных операционных системах или архитектурах может выдать разные результаты.</p> +</div> + +<dl> + <dt>{{jsxref("Global_Objects/Math/abs", "Math.abs(x)")}}</dt> + <dd>Возвращает абсолютное значение числа.</dd> + <dt>{{jsxref("Global_Objects/Math/acos", "Math.acos(x)")}}</dt> + <dd>Возвращает арккосинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/acosh", "Math.acosh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический арккосинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/asin", "Math.asin(x)")}}</dt> + <dd>Возвращает арксинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/asinh", "Math.asinh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический арксинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/atan", "Math.atan(x)")}}</dt> + <dd>Возвращает арктангенс числа.</dd> + <dt>{{jsxref("Global_Objects/Math/atanh", "Math.atanh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический арктангенс числа.</dd> + <dt>{{jsxref("Global_Objects/Math/atan2", "Math.atan2(y, x)")}}</dt> + <dd>Возвращает арктангенс от частного своих аргументов.</dd> + <dt>{{jsxref("Global_Objects/Math/cbrt", "Math.cbrt(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает кубический корень числа.</dd> + <dt>{{jsxref("Global_Objects/Math/ceil", "Math.ceil(x)")}}</dt> + <dd>Возвращает значение числа, округлённое к большему целому.</dd> + <dt>{{jsxref("Global_Objects/Math/clz32", "Math.clz32(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает количество ведущих нулей 32-битного целого числа.</dd> + <dt>{{jsxref("Global_Objects/Math/cos", "Math.cos(x)")}}</dt> + <dd>Возвращает косинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/cosh", "Math.cosh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический косинус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/exp", "Math.exp(x)")}}</dt> + <dd>Возвращает E<sup>x</sup>, где <var>x</var> — аргумент, а E — число Эйлера (2,718…), основание натурального логарифма.</dd> + <dt>{{jsxref("Global_Objects/Math/expm1", "Math.expm1(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает <code>exp(x)</code>, из которого вычли единицу.</dd> + <dt>{{jsxref("Global_Objects/Math/floor", "Math.floor(x)")}}</dt> + <dd>Возвращает значение числа, округлённое к меньшему целому.</dd> + <dt>{{jsxref("Global_Objects/Math/fround", "Math.fround(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает ближайшее число с плавающей запятой <a href="https://ru.wikipedia.org/wiki/Число_одинарной_точности">одинарной точности</a>, представляюще это число.</dd> + <dt>{{jsxref("Global_Objects/Math/hypot", "Math.hypot([x[, y[, …]]])")}} {{experimental_inline}}</dt> + <dd>Возвращает квадратный корень из суммы квадратов своих аргументов.</dd> + <dt>{{jsxref("Global_Objects/Math/imul", "Math.imul(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает результат умножения 32-битных целых чисел.</dd> + <dt>{{jsxref("Global_Objects/Math/log", "Math.log(x)")}}</dt> + <dd>Возвращает натуральный логарифм числа (log<sub>e</sub>, также известен как ln).</dd> + <dt>{{jsxref("Global_Objects/Math/log1p", "Math.log1p(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает натуральный логарифм числа <code>1 + x</code> (log<sub>e</sub>, также известен как ln).</dd> + <dt>{{jsxref("Global_Objects/Math/log10", "Math.log10(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает десятичный логарифм числа.</dd> + <dt>{{jsxref("Global_Objects/Math/log2", "Math.log2(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает двоичный логарифм числа.</dd> + <dt>{{jsxref("Global_Objects/Math/max", "Math.max([x[, y[, …]]])")}}</dt> + <dd>Возвращает наибольшее число из своих аргументов.</dd> + <dt>{{jsxref("Global_Objects/Math/min", "Math.min([x[, y[, …]]])")}}</dt> + <dd>Возвращает наименьшее число из своих аргументов.</dd> + <dt>{{jsxref("Global_Objects/Math/pow", "Math.pow(x, y)")}}</dt> + <dd>Возвращает основание в степени экспоненты, то есть, значение выражения <code>основание<sup>экспонента</sup></code>.</dd> + <dt>{{jsxref("Global_Objects/Math/random", "Math.random()")}}</dt> + <dd>Возвращает псевдослучайное число в диапазоне от 0 до 1.</dd> + <dt>{{jsxref("Global_Objects/Math/round", "Math.round(x)")}}</dt> + <dd>Возвращает значение числа, округлённое до ближайшего целого.</dd> + <dt>{{jsxref("Global_Objects/Math/sign", "Math.sign(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает знак числа, указывающий, является ли число положительным, отрицательным или нулём.</dd> + <dt>{{jsxref("Global_Objects/Math/sin", "Math.sin(x)")}}</dt> + <dd>Возвращает синус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/sinh", "Math.sinh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический синус числа.</dd> + <dt>{{jsxref("Global_Objects/Math/sqrt", "Math.sqrt(x)")}}</dt> + <dd>Возвращает положительный квадратный корень числа.</dd> + <dt>{{jsxref("Global_Objects/Math/tan", "Math.tan(x)")}}</dt> + <dd>Возвращает тангенс числа.</dd> + <dt>{{jsxref("Global_Objects/Math/tanh", "Math.tanh(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает гиперболический тангенс числа.</dd> + <dt><code>Math.toSource()</code> {{non-standard_inline}}</dt> + <dd>Возвращает строку <code>"Math"</code>.</dd> + <dt>{{jsxref("Global_Objects/Math/trunc", "Math.trunc(x)")}} {{experimental_inline}}</dt> + <dd>Возвращает целую часть числа, убирая дробные цифры.</dd> +</dl> + +<h2 id="Расширение_объекта_Math">Расширение объекта <code>Math</code></h2> + +<p>Как и большинство встроенных объектов в Javascript, объект <code>Math</code> может быть расширен пользовательскими способами и методами. Чтобы расширить объект <code>Math</code>, не используют <code>prototype</code>. Вместо этого, расширяют <code>Math</code> напрямую: </p> + +<pre><code>Math.propName = propValue; +Math.methodName = methodRef;</code></pre> + +<p>Например, следующий код добавляет метод к объекту Math для вычисления наибольшего общего делителя списка аргументов.</p> + +<pre><code>/* Вариативная функция -- Возвращает наибольший общий делитель списка аргументов */ +Math.gcd = function() { + if (arguments.length == 2) { + if (arguments[1] == 0) + return arguments[0]; + else + return Math.gcd(arguments[1], arguments[0] % arguments[1]); + } else if (arguments.length > 2) { + var result = Math.gcd(arguments[0], arguments[1]); + for (var i = 2; i < arguments.length; i++) + result = Math.gcd(result, arguments[i]); + return result; + } +};</code></pre> + +<p>Попробуйте:</p> + +<pre><code>console.log(Math.gcd(20, 30, 15, 70, 40)); // `5`</code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8', 'Math')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math-object', 'Math')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Добавлены новые методы: {{jsxref("Math.log10()", "log10()")}}, {{jsxref("Math.log2()", "log2()")}}, {{jsxref("Math.log1p()", "log1p()")}}, {{jsxref("Math.expm1()", "expm1()")}}, {{jsxref("Math.cosh()", "cosh()")}}, {{jsxref("Math.sinh()", "sinh()")}}, {{jsxref("Math.tanh()", "tanh()")}}, {{jsxref("Math.acosh()", "acosh()")}}, {{jsxref("Math.asinh()", "asinh()")}}, {{jsxref("Math.atanh()", "atanh()")}}, {{jsxref("Math.hypot()", "hypot()")}}, {{jsxref("Math.trunc()", "trunc()")}}, {{jsxref("Math.sign()", "sign()")}}, {{jsxref("Math.imul()", "imul()")}}, {{jsxref("Math.fround()", "fround()")}}, {{jsxref("Math.cbrt()", "cbrt()")}} и {{jsxref("Math.clz32()", "clz32()")}}.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-math-object', 'Math')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Math")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Number", "Number")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/ln10/index.html b/files/ru/web/javascript/reference/global_objects/math/ln10/index.html new file mode 100644 index 0000000000..e087dde110 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ln10/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LN10 +slug: Web/JavaScript/Reference/Global_Objects/Math/LN10 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN10 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.LN10</code></strong> представляет натуральный логарифм из 10, приблизительно равный 2,302:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LN10</mi></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>10</mn><mo stretchy="false">)</mo><mo>≈</mo><mn>2,302</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LN10}} = \ln(10) \approx 2,302</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>LN10</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.LN10</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.LN10" name="Example:_Using_Math.LN10">Пример: использование свойства <code>Math.LN10</code></h3> +<p>Следующая функция возвращает натуральный логарифм из 10:</p> +<pre class="brush: js">function getNatLog10() { + return Math.LN10; +} + +getNatLog10(); // 2.302585092994046 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.2', 'Math.LN10')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.ln10', 'Math.LN10')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/ln2/index.html b/files/ru/web/javascript/reference/global_objects/math/ln2/index.html new file mode 100644 index 0000000000..0c94ff8c5c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/ln2/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LN2 +slug: Web/JavaScript/Reference/Global_Objects/Math/LN2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LN2 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.LN2</code></strong> представляет натуральный логарифм из 2, приблизительно равный 0,693:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LN2</mi></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo><mo>≈</mo><mn>0,693</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LN2}} = \ln(2) \approx 0,693</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>LN2</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.LN2</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.LN2" name="Example:_Using_Math.LN2">Пример: использование свойства <code>Math.LN2</code></h3> +<p>Следующая функция возвращает натуральный логарифм из 2:</p> +<pre class="brush: js">function getNatLog2() { + return Math.LN2; +} + +getNatLog2(); // 0.6931471805599453 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.3', 'Math.LN2')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.ln2', 'Math.LN2')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log/index.html b/files/ru/web/javascript/reference/global_objects/math/log/index.html new file mode 100644 index 0000000000..a106b53028 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log/index.html @@ -0,0 +1,129 @@ +--- +title: Math.log() +slug: Web/JavaScript/Reference/Global_Objects/Math/log +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.log()</code></strong> возвращает натуральный (по основанию {{jsxref("Math.E", "e")}}) логарифм числа, то есть</p> +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>></mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>уникальный</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><msup><mi>e</mi><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x > 0, \mathtt{\operatorname{Math.log}(x)} = \ln(x) = \text{уникальный} \; y \; \text{такой, что} \; e^y = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.log(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если значение <code>x</code> меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.</p> +<p>Поскольку метод <code>log()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.log()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.log" name="Example:_Using_Math.log">Пример: использование метода <code>Math.log()</code></h3> +<pre class="brush: js">Math.log(-1); // NaN, выход за пределы диапазона +Math.log(0); // -Infinity +Math.log(1); // 0 +Math.log(10); // 2.302585092994046 +</pre> + +<h3 id="Example:_Using_Math.log_with_a_different_base" name="Example:_Using_Math.log_with_a_different_base">Пример: использование метода <code>Math.log()</code> с различными основаниями</h3> +<p>Следующая функция возвращает логарифм из <code>y</code> по основанию <code>x</code> (то есть, <math><semantics><mrow><msub><mo>log</mo><mi>x</mi></msub><mi>y</mi></mrow><annotation encoding="TeX">\log_x y</annotation></semantics></math>):</p> +<pre class="brush: js">function getBaseLog(x, y) { + return Math.log(y) / Math.log(x); +} +</pre> +<p>Если вы выполните <code>getBaseLog(10, 1000)</code>, функция вернёт <code>2.9999999999999996</code> из-за особенностей округления чисел с плавающей запятой, что довольно близко к правильному ответу — 3.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.10', 'Math.log')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log', 'Math.log')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log1p()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log10/index.html b/files/ru/web/javascript/reference/global_objects/math/log10/index.html new file mode 100644 index 0000000000..8ae3c545bf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log10/index.html @@ -0,0 +1,137 @@ +--- +title: Math.log10() +slug: Web/JavaScript/Reference/Global_Objects/Math/log10 +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log10 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.log10()</code></strong> возвращает десятичный (по основанию 10) логарифм числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>></mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log10</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>10</mn></msub><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>уникальный</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><msup><mn>10</mn><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x > 0, \mathtt{\operatorname{Math.log10}(x)} = \log_10(x) = \text{уникальный} \; y \; \text{такой, что} \; 10^y = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.log10(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если значение <code>x</code> меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<p>Поскольку метод <code>log10()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.log10()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.log10" name="Example:_Using_Math.log10">Пример: использование метода <code>Math.log10()</code></h3> + +<pre class="brush: js">Math.log10(2); // 0.3010299956639812 +Math.log10(1); // 0 +Math.log10(0); // -Infinity +Math.log10(-2); // NaN +Math.log10(100000); // 5 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим способом:</p> + +<pre class="brush: js">Math.log10 = Math.log10 || function(x) { + return Math.log(x) / Math.LN10; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log10', 'Math.log10')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log1p()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log10e/index.html b/files/ru/web/javascript/reference/global_objects/math/log10e/index.html new file mode 100644 index 0000000000..9c81d78641 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log10e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LOG10E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG10E +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.LOG10E</code></strong> представляет десятичный логарифм из e, приблизительно равный 0,434:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LOG10E</mi></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>10</mn></msub><mo stretchy="false">(</mo><mi>e</mi><mo stretchy="false">)</mo><mo>≈</mo><mn>0,434</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LOG10E}} = \log_10(e) \approx 0,434</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>LOG10E</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.LOG10E</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.LOG10E" name="Example:_Using_Math.LOG10E">Пример: использование свойства <code>Math.LOG10E</code></h3> +<p>Следующая функция возвращает десятичный логарифм из e:</p> +<pre class="brush: js">function getLog10e() { + return Math.LOG10E; +} + +getLog10e(); // 0.4342944819032518 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.5', 'Math.LOG10E')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log10e', 'Math.LOG10E')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log1p/index.html b/files/ru/web/javascript/reference/global_objects/math/log1p/index.html new file mode 100644 index 0000000000..54a33e9e66 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log1p/index.html @@ -0,0 +1,136 @@ +--- +title: Math.log1p() +slug: Web/JavaScript/Reference/Global_Objects/Math/log1p +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log1p +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.log1p()</code></strong> возвращает натуральный (по основанию {{jsxref("Math.E", "e")}}) логарифм 1 + числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>></mo><mo>-</mo><mn>1</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log1p</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><mo lspace="0em" rspace="0em">ln</mo><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><mi>x</mi><mo stretchy="false">)</mo></mrow><annotation encoding="TeX">\forall x > -1, \mathtt{\operatorname{Math.log1p}(x)} = \ln(1 + x)</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.log1p(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если значение <code>x</code> меньше -1, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<p>Поскольку метод <code>log1p()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.log1p()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.log1p" name="Example:_Using_Math.log1p">Пример: использование метода <code>Math.log1p()</code></h3> + +<pre class="brush: js">Math.log1p(1); // 0.6931471805599453 +Math.log1p(0); // 0 +Math.log1p(-1); // -Infinity +Math.log1p(-2); // NaN +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим способом:</p> + +<pre class="brush: js">Math.log1p = Math.log1p || function(x) { + return Math.log(1 + x); +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log1p', 'Math.log1p')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log2/index.html b/files/ru/web/javascript/reference/global_objects/math/log2/index.html new file mode 100644 index 0000000000..e07c3726c9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log2/index.html @@ -0,0 +1,93 @@ +--- +title: Math.log2() +slug: Web/JavaScript/Reference/Global_Objects/Math/log2 +tags: + - ECMAScript 2015 + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/log2 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.log2()</code></strong> возвращает двоичный (по основанию 2) логарифм числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>></mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mo lspace="0em" rspace="thinmathspace">Math.log2</mo><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>2</mn></msub><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo><mo>=</mo><mtext>уникальный</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><msup><mn>2</mn><mi>y</mi></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x > 0, \mathtt{\operatorname{Math.log2}(x)} = \log_2(x) = \text{уникальный} \; y \; \text{такой, что} \; 2^y = x</annotation></semantics></math></p> + +<div>{{EmbedInteractiveExample("pages/js/math-log2.html")}}</div> + + + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.log2(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если значение <code>x</code> меньше 0, возвращаемое значение всегда будет равным {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<p>Поскольку метод <code>log2()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.log2()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Math.log2" name="Example:_Using_Math.log2">Пример: использование метода <code>Math.log2()</code></h3> + +<pre class="brush: js">Math.log2(3); // 1.584962500721156 +Math.log2(2); // 1 +Math.log2(1); // 0 +Math.log2(0); // -Infinity +Math.log2(-2); // NaN +Math.log2(1024); // 10 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться следующим способом:</p> + +<pre class="brush: js">Math.log2 = Math.log2 || function(x) { + return Math.log(x) / Math.LN2; +}; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log2', 'Math.log2')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Math.log2")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log10()")}}</li> + <li>{{jsxref("Math.log1p()")}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/log2e/index.html b/files/ru/web/javascript/reference/global_objects/math/log2e/index.html new file mode 100644 index 0000000000..485913672a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/log2e/index.html @@ -0,0 +1,113 @@ +--- +title: Math.LOG2E +slug: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/LOG2E +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.LOG2E</code></strong> представляет двоичный логарифм из e, приблизительно равный 1,442:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.LOG2E</mi></mstyle><mo>=</mo><msub><mo lspace="0em" rspace="0em">log</mo><mn>2</mn></msub><mo stretchy="false">(</mo><mi>e</mi><mo stretchy="false">)</mo><mo>≈</mo><mn>1,442</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.LOG2E}} = \log_2(e) \approx 1,442</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>LOG2E</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.LOG2E</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.LOG2E" name="Example:_Using_Math.LOG2E">Пример: использование свойства <code>Math.LOG2E</code></h3> +<p>Следующая функция возвращает двоичный логарифм из e:</p> +<pre class="brush:js">function getLog2e() { + return Math.LOG2E; +} + +getLog2e(); // 1.4426950408889634 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.4', 'Math.LOG2E')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.log2e', 'Math.LOG2E')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.log2()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/max/index.html b/files/ru/web/javascript/reference/global_objects/math/max/index.html new file mode 100644 index 0000000000..62ec25de32 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/max/index.html @@ -0,0 +1,137 @@ +--- +title: Math.max() +slug: Web/JavaScript/Reference/Global_Objects/Math/max +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/max +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.max()</code></strong> возвращает наибольшее из нуля или более чисел.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.max([<var>value1</var>[, <var>value2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value1, value2, ...</code></dt> + <dd>Числа.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>max()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.max()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<p>При вызове без аргументов результатом вызова будет значение -{{jsxref("Global_Objects/Infinity", "Infinity")}}.</p> + +<p>Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_Math.max" name="Example:_Using_Math.max">Пример: использование метода <code>Math.max()</code></h3> + +<pre class="brush: js">Math.max(10, 20); // 20 +Math.max(-10, -20); // -10 +Math.max(-10, 20); // 20 +</pre> + +<h4 id="Нахождение_максимального_элемента_в_массиве"><strong>Нахождение максимального элемента в массиве</strong></h4> + +<p>Следующая функция использует метод {{jsxref("Function.prototype.apply()")}} для нахождения максимального элемента в числовом массиве. Вызов <code>getMaxOfArray([1, 2, 3])</code> эквивалентен вызову <code>Math.max(1, 2, 3)</code>, однако вы можете использовать функцию <code>getMaxOfArray()</code> вместе с программно сконструированными массивами любого размера. Рекомендуется использовать только в случае обработки массивов с небольшим количеством элементов.</p> + +<pre class="brush: js">function getMaxOfArray(numArray) { + return Math.max.apply(null, numArray); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.max', 'Math.max')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.min()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/min/index.html b/files/ru/web/javascript/reference/global_objects/math/min/index.html new file mode 100644 index 0000000000..b365ac5269 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/min/index.html @@ -0,0 +1,147 @@ +--- +title: Math.min() +slug: Web/JavaScript/Reference/Global_Objects/Math/min +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/min +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.min()</code></strong> возвращает наименьшее из нуля или более чисел.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.min([<var>value1</var>[, <var>value2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value1, value2, ...</code></dt> + <dd>Числа.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>min()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.min()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<p>При вызове без аргументов результатом вызова будет значение {{jsxref("Global_Objects/Infinity", "Infinity")}}.</p> + +<p>Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.min" name="Example:_Using_Math.min">Пример: использование метода <code>Math.min()</code></h3> + +<p>В этом примере ищется минимум из <code>x</code> и <code>y</code> и присваивается переменной <code>z</code>:</p> + +<pre class="brush: js">var x = 10, y = -20; +var z = Math.min(x, y); +</pre> + +<h3 id="Example:_Clipping_a_value_with_Math.min" name="Example:_Clipping_a_value_with_Math.min">Пример: обрезание значения при помощи метода <code>Math.min()</code></h3> + +<p>Метод <code>Math.min()</code> часто используется для обрезания значения таким образом, чтобы оно всегда не превосходило некоторую границу. Например, такое условие</p> + +<pre class="brush: js">var x = f(foo); + +if (x > boundary) { + x = boundary; +} +</pre> + +<p>может быть переписано в виде</p> + +<pre class="brush: js">var x = Math.min(f(foo), boundary); +</pre> + +<p>Подобным образом может использоваться и метод {{jsxref("Math.max()")}} для обрезания значения по нижней границе.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.12', 'Math.min')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.min', 'Math.min')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.max()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/pi/index.html b/files/ru/web/javascript/reference/global_objects/math/pi/index.html new file mode 100644 index 0000000000..ad0f0850c6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/pi/index.html @@ -0,0 +1,111 @@ +--- +title: Math.PI +slug: Web/JavaScript/Reference/Global_Objects/Math/PI +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/PI +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.PI</code></strong> представляет отношение длины окружности круга к его диаметру, приблизительно равное 3,14159:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.PI</mi></mstyle><mo>=</mo><mi>π</mi><mo>≈</mo><mn>3,14159</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.PI}} = \pi \approx 3,14159</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>PI</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.PI</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_PI" name="Example:_Using_PI">Пример: использование свойства <code>Math.PI</code></h3> +<p>Следующая функция использует значение <code>Math.PI</code> для вычисления длины окружности по известному радиусу круга.</p> +<pre class="brush: js">function calculateCircumference(radius) { + return 2 * Math.PI * radius; +} + +calculateCircumference(1); // 6.283185307179586 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.6', 'Math.PI')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.pi', 'Math.PI')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/Math", "Math")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/pow/index.html b/files/ru/web/javascript/reference/global_objects/math/pow/index.html new file mode 100644 index 0000000000..190d40b202 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/pow/index.html @@ -0,0 +1,126 @@ +--- +title: Math.pow() +slug: Web/JavaScript/Reference/Global_Objects/Math/pow +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/pow +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.pow()</code></strong> возвращает <code>основание</code>, возведённое в степень <code>показатель</code>, то есть, значение выражения <code>основание<sup>показатель</sup></code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.pow(<var>base</var>, <var>exponent</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>base</code></dt> + <dd>Основание степени.</dd> + <dt><code>exponent</code></dt> + <dd>Показатель степени, в которую возводится основание <code>base</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>pow()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.pow()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.pow" name="Example:_Using_Math.pow">Пример: использование метода <code>Math.pow()</code></h3> + +<pre class="brush: js">Math.pow(7, 2); // 49</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.13', 'Math.pow')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.pow', 'Math.pow')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.cbrt()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.sqrt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/random/index.html b/files/ru/web/javascript/reference/global_objects/math/random/index.html new file mode 100644 index 0000000000..7b25fda4d1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/random/index.html @@ -0,0 +1,110 @@ +--- +title: Math.random() +slug: Web/JavaScript/Reference/Global_Objects/Math/random +tags: + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/random +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>Math.random()</code></strong> возвращает псевдослучайное число с плавающей запятой из диапазона <code>[0, 1)</code>, то есть, от 0 (включительно) до 1 (но не включая 1), которое затем можно отмасштабировать до нужного диапазона. Реализация сама выбирает начальное зерно для алгоритма генерации случайных чисел; оно не может быть выбрано или сброшено пользователем.</p> + +<p>{{EmbedInteractiveExample("pages/js/math-random.html")}}</p> + +<div class="note"> +<p><strong>Примечание:</strong> метод <code>Math.random()</code> <em>не предоставляет</em> криптографически стойкие случайные числа. Не используйте его ни для чего, связанного с безопасностью. Вместо него используйте Web Crypto API (API криптографии в вебе) и более точный метод {{domxref("RandomSource.getRandomValues()", "window.crypto.getRandomValues()")}}.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.random()</code></pre> + +<h3 id="Parameters" name="Parameters">Возвращаемое значение</h3> + +<p>Псевдослучайное число с плавающей запятой от <code>0</code> (включительно) до 1 (не считая).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<p>Обратите внимание, что поскольку числа в JavaScript являются числами с плавающей запятой стандарта IEEE 754 с поведением при округлении к ближайшему чётному, все эти диапазоны (исключая диапазон с простым вызовом <code>Math.random()</code>), не точны. Если заданы очень большие границы (2<sup>53</sup> или выше), возможен <em>крайне</em> редкий случай вычисления обычно исключённой верхней границы.</p> + +<h3 id="Получение_случайного_числа_от_0_(включительно)_до_1_(не_включая)">Получение случайного числа от 0 (включительно) до 1 (не включая)</h3> + +<pre class="brush: js">function getRandom() { + return Math.random(); +}</pre> + +<h3 id="Получение_случайного_числа_в_заданном_интервале">Получение случайного числа в заданном интервале</h3> + +<p>Этот пример возвращает случайное число в заданном интервале. Возвращаемое значение не менее (и может быть равно) <code>min</code> и не более (и не равно) <code>max</code>.</p> + +<pre class="brush: js">function getRandomArbitrary(min, max) { + return Math.random() * (max - min) + min; +}</pre> + +<h3 id="Получение_случайного_целого_числа_в_заданном_интервале">Получение случайного целого числа в заданном интервале</h3> + +<p>Этот пример возвращает случайное <em>целое </em>число в заданном интервале. Возвращаемое значение не менее <code>min</code> (или следующее целое число, которое больше <code>min</code>, если <code>min</code> не целое) и не более (но не равно) <code>max</code>.</p> + +<pre class="brush: js">function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min)) + min; //Максимум не включается, минимум включается +}</pre> + +<div class="blockIndicator note"> +<p>Может показаться заманчивым использовать <code>Math.round()</code> для округления, но это может сделать распределение неравномерным, что может оказаться неприемлимым для ваших нужд.</p> +</div> + +<h3 id="Получение_случайного_целого_числа_в_заданном_интервале_включительно">Получение случайного целого числа в заданном интервале, включительно</h3> + +<p>Функция <code>getRandomInt()</code> выше включает минимальное значение, но не включает максимальное. Но что если вам нужно, чтобы влючалось и минимальное, и максимальное значение? Функция <code>getRandomIntInclusive()</code> решает этот вопрос.</p> + +<pre class="brush: js">function getRandomIntInclusive(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; //Максимум и минимум включаются +}</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. JavaScript 1.0 (только UNIX) / JavaScript 1.1 (все платформы).</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.14', 'Math.random')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.random', 'Math.random')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-math.random', 'Math.random')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Math.random")}}</p> + +<div></div> + +<div id="compat-mobile"></div> diff --git a/files/ru/web/javascript/reference/global_objects/math/round/index.html b/files/ru/web/javascript/reference/global_objects/math/round/index.html new file mode 100644 index 0000000000..85400653b9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/round/index.html @@ -0,0 +1,214 @@ +--- +title: Math.round() +slug: Web/JavaScript/Reference/Global_Objects/Math/round +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/round +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.round()</code></strong> возвращает число, округлённое к ближайшему целому.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.round(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если дробная часть числа больше, либо равна 0,5, аргумент будет округлён до ближайшего большего целого. Если дробная часть числа меньше 0,5, аргумент будет округлён до ближайшего меньшего целого.</p> + +<p>Поскольку метод <code>round()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.round()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.round" name="Example:_Using_Math.round">Пример: использование метода <code>Math.round()</code></h3> + +<pre class="brush: js">// Вернёт значение 20 +x = Math.round(20.49); + +// Вернёт значение 21 +x = Math.round(20.5); + +// Вернёт значение -20 +x = Math.round(-20.5); + +// Вернёт значение -21 +x = Math.round(-20.51); + +// Вернёт значение 1 (!) +// Обратите внимание на ошибку округления из-за неточности арифметики с плавающей запятой +// Сравните этот результат с результатом Math.round(1.005, -2) из следующего примера +x = Math.round(1.005*100)/100; +</pre> + +<h3 id="Example:_Decimal_rounding" name="Example:_Decimal_rounding">Пример: корректировка округления десятичных дробей</h3> + +<pre class="brush: js">// Замыкание +(function() { + /** + * Корректировка округления десятичных дробей. + * + * @param {String} type Тип корректировки. + * @param {Number} value Число. + * @param {Integer} exp Показатель степени (десятичный логарифм основания корректировки). + * @returns {Number} Скорректированное значение. + */ + function decimalAdjust(type, value, exp) { + // Если степень не определена, либо равна нулю... + if (typeof exp === 'undefined' || +exp === 0) { + return Math[type](value); + } + value = +value; + exp = +exp; + // Если значение не является числом, либо степень не является целым числом... + if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { + return NaN; + } + // Сдвиг разрядов + value = value.toString().split('e'); + value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp))); + // Обратный сдвиг + value = value.toString().split('e'); + return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp)); + } + + // Десятичное округление к ближайшему + if (!Math.round10) { + Math.round10 = function(value, exp) { + return decimalAdjust('round', value, exp); + }; + } + // Десятичное округление вниз + if (!Math.floor10) { + Math.floor10 = function(value, exp) { + return decimalAdjust('floor', value, exp); + }; + } + // Десятичное округление вверх + if (!Math.ceil10) { + Math.ceil10 = function(value, exp) { + return decimalAdjust('ceil', value, exp); + }; + } +})(); + +// Округление к ближайшему +Math.round10(55.55, -1); // 55.6 +Math.round10(55.549, -1); // 55.5 +Math.round10(55, 1); // 60 +Math.round10(54.9, 1); // 50 +Math.round10(-55.55, -1); // -55.5 +Math.round10(-55.551, -1); // -55.6 +Math.round10(-55, 1); // -50 +Math.round10(-55.1, 1); // -60 +Math.round10(1.005, -2); // 1.01 -- сравните этот результат с результатом Math.round(1.005*100)/100 выше +// Округление вниз +Math.floor10(55.59, -1); // 55.5 +Math.floor10(59, 1); // 50 +Math.floor10(-55.51, -1); // -55.6 +Math.floor10(-51, 1); // -60 +// Округление вверх +Math.ceil10(55.51, -1); // 55.6 +Math.ceil10(51, 1); // 60 +Math.ceil10(-55.59, -1); // -55.5 +Math.ceil10(-59, 1); // -50 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.15', 'Math.round')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.round', 'Math.round')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.ceil()")}}</li> + <li>{{jsxref("Math.floor()")}}</li> + <li>{{jsxref("Math.sign()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.trunc()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sign/index.html b/files/ru/web/javascript/reference/global_objects/math/sign/index.html new file mode 100644 index 0000000000..029bb3af31 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sign/index.html @@ -0,0 +1,141 @@ +--- +title: Math.sign() +slug: Web/JavaScript/Reference/Global_Objects/Math/sign +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sign +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.sign()</code></strong> возвращает знак числа, указывающий на то, является ли число отрицательным, положительным или нулём.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.sign(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>sign()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.sign()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<p>Метод может вернуть одно из пяти значений: <code>1</code>, <code>-1</code>, <code>0</code>, <code>-0</code> и <code>NaN</code>, которые представляют, соответственно «положительное число», «отрицательное число», «положительный ноль», «отрицательный ноль» и {{jsxref("NaN")}}.</p> + +<p>Обратите внимание, что аргумент, переданный в этот метод, будет неявно преобразован в число.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.sign" name="Example:_Using_Math.sign">Пример: использование метода <code>Math.sign()</code></h3> + +<pre class="brush: js">Math.sign(3); // 1 +Math.sign(-3); // -1 +Math.sign('-3'); // -1 +Math.sign(0); // 0 +Math.sign(-0); // -0 +Math.sign(NaN); // NaN +Math.sign('foo'); // NaN +Math.sign(); // NaN +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">Math.sign = Math.sign || function(x) { + x = +x; // преобразуем в число + if (x === 0 || isNaN(x)) { + return x; + } + return x > 0 ? 1 : -1; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sign', 'Math.sign')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.ceil()")}}</li> + <li>{{jsxref("Math.floor()")}}</li> + <li>{{jsxref("Math.round()")}}</li> + <li>{{jsxref("Math.trunc()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sin/index.html b/files/ru/web/javascript/reference/global_objects/math/sin/index.html new file mode 100644 index 0000000000..66516b8afa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sin/index.html @@ -0,0 +1,121 @@ +--- +title: Math.sin() +slug: Web/JavaScript/Reference/Global_Objects/Math/sin +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sin +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.sin()</code></strong> возвращает синус числа.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.sin(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число радиан.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.sin()</code> возвращает числовое значение от -1 до 1, которое представляет синус переданного (в радианах) угла.</p> +<p>Поскольку метод <code>sin()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.sin()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.sin" name="Example:_Using_Math.sin">Пример: использование метода <code>Math.sin()</code></h3> +<pre class="brush: js">Math.sin(0); // 0 +Math.sin(1); // 0.8414709848078965 + +Math.sin(Math.PI / 2); // 1 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.16', 'Math.sin')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sin', 'Math.sin')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.tan()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sinh/index.html b/files/ru/web/javascript/reference/global_objects/math/sinh/index.html new file mode 100644 index 0000000000..2ea2438584 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sinh/index.html @@ -0,0 +1,140 @@ +--- +title: Math.sinh() +slug: Web/JavaScript/Reference/Global_Objects/Math/sinh +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sinh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.sinh()</code></strong> возвращает гиперболический синус числа, который может быть выражен через {{jsxref("Math.E", "число e", "", 1)}}:</p> + +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mo lspace="0em" rspace="thinmathspace">Math.sinh(x)</mo></mstyle><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>-</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mn>2</mn></mfrac></mrow><annotation encoding="TeX">\mathtt{\operatorname{Math.sinh(x)}} = \frac{e^x - e^{-x}}{2}</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.sinh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>sinh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.sinh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.sinh" name="Example:_Using_Math.sinh">Пример: использование метода <code>Math.sinh()</code></h3> + +<pre class="brush: js">Math.sinh(0); // 0 +Math.sinh(1); // 1.1752011936438014 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.sinh = Math.sinh || function(x) { + return (Math.exp(x) - Math.exp(-x)) / 2; +} +</pre> + +<p>либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.sinh = Math.sinh || function(x) { + var y = Math.exp(x); + return (y - 1 / y) / 2; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sinh', 'Math.sinh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.acosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.asinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.atanh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.cosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.tanh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html new file mode 100644 index 0000000000..28d145db02 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt/index.html @@ -0,0 +1,143 @@ +--- +title: Math.sqrt() +slug: Web/JavaScript/Reference/Global_Objects/Math/sqrt +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/sqrt +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.sqrt()</code></strong> возвращает квадратный корень числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo>∀</mo><mi>x</mi><mo>≥</mo><mn>0</mn><mo>,</mo><mstyle mathvariant="monospace"><mrow><mi>M</mi><mi>a</mi><mi>t</mi><mi>h</mi><mo>.</mo><mi>s</mi><mi>q</mi><mi>r</mi><mi>t</mi><mo stretchy="false">(</mo><mi>x</mi><mo stretchy="false">)</mo></mrow></mstyle><mo>=</mo><msqrt><mi>x</mi></msqrt><mo>=</mo><mtext>уникальный</mtext><mspace width="thickmathspace"></mspace><mi>y</mi><mo>≥</mo><mn>0</mn><mspace width="thickmathspace"></mspace><mtext>такой, что</mtext><mspace width="thickmathspace"></mspace><msup><mi>y</mi><mn>2</mn></msup><mo>=</mo><mi>x</mi></mrow><annotation encoding="TeX">\forall x \geq 0, \mathtt{Math.sqrt(x)} = \sqrt{x} = \text{уникальный} \; y \geq 0 \; \text{такой, что} \; y^2 = x</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.sqrt(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Квадратный корень заданного числа. Если число отрицательное, то вернется {{jsxref("NaN")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если значение <code>x</code> отрицательно, метод <code>Math.sqrt()</code> вернёт {{jsxref("NaN")}}.</p> + +<p>Поскольку метод <code>sqrt()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.sqrt()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.sqrt" name="Example:_Using_Math.sqrt">Пример: использование метода <code>Math.sqrt()</code></h3> + +<pre class="brush: js">Math.sqrt(9); // 3 +Math.sqrt(2); // 1.414213562373095 + +Math.sqrt(1); // 1 +Math.sqrt(0); // 0 +Math.sqrt(-1); // NaN +Math.sqrt(-0); // -0</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.17', 'Math.sqrt')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sqrt', 'Math.sqrt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-math.sqrt', 'Math.sqrt')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.cbrt()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.exp()")}}</li> + <li>{{jsxref("Math.log()")}}</li> + <li>{{jsxref("Math.pow()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html new file mode 100644 index 0000000000..25cc439d06 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt1_2/index.html @@ -0,0 +1,112 @@ +--- +title: Math.SQRT1_2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT1_2 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.SQRT1_2</code></strong> представляет квадратный корень из 1/2, приблизительно равный 0,707:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.SQRT1_2</mi></mstyle><mo>=</mo><msqrt><mfrac><mn>1</mn><mn>2</mn></mfrac></msqrt><mo>=</mo><mfrac><mn>1</mn><msqrt><mn>2</mn></msqrt></mfrac><mo>≈</mo><mn>0,707</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.SQRT1_2}} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0,707</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>SQRT1_2</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.SQRT1_2</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.SQRT1_2" name="Example:_Using_Math.SQRT1_2">Пример: использование свойства <code>Math.SQRT1_2</code></h3> +<p>Следующая функция возвращает единицу, делённую на квадратный корень из двух:</p> +<pre class="brush: js">function getRoot1_2() { + return Math.SQRT1_2; +} + +getRoot1_2(); // 0.7071067811865476 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.7', 'Math.SQRT1_2')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sqrt1_2', 'Math.SQRT1_2')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.pow()")}}</li> + <li>{{jsxref("Math.sqrt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html b/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html new file mode 100644 index 0000000000..5adb33da4c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/sqrt2/index.html @@ -0,0 +1,112 @@ +--- +title: Math.SQRT2 +slug: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +tags: + - JavaScript + - Math + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/SQRT2 +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Math.SQRT2</code></strong> представляет квадратный корень из 2, приблизительно равный 1,414:</p> +<p><math display="block"><semantics><mrow><mstyle mathvariant="monospace"><mi>Math.SQRT2</mi></mstyle><mo>=</mo><msqrt><mn>2</mn></msqrt><mo>≈</mo><mn>1,414</mn></mrow><annotation encoding="TeX">\mathtt{\mi{Math.SQRT2}} = \sqrt{2} \approx 1,414</annotation></semantics></math></p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Поскольку свойство <code>SQRT2</code> является статическим свойством объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.SQRT2</code>, а не пытаться создавать экземпляр объекта <code>Math</code> и получать свойство от него (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.SQRT2" name="Example:_Using_Math.SQRT2">Пример: использование свойства <code>Math.SQRT2</code></h3> +<p>Следующая функция возвращает квадратный корень из двух:</p> +<pre class="brush: js">function getRoot2() { + return Math.SQRT2; +} + +getRoot2(); // 1.4142135623730951 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.1.8', 'Math.SQRT2')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.sqrt2', 'Math.SQRT2')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.pow()")}}</li> + <li>{{jsxref("Math.sqrt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/tan/index.html b/files/ru/web/javascript/reference/global_objects/math/tan/index.html new file mode 100644 index 0000000000..eb596547e8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/tan/index.html @@ -0,0 +1,124 @@ +--- +title: Math.tan() +slug: Web/JavaScript/Reference/Global_Objects/Math/tan +tags: + - JavaScript + - Math + - Method + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tan +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Math.tan()</code></strong> возвращает тангенс числа.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Math.tan(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>x</code></dt> + <dd>Число, представляющее угол в радианах.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>Math.tan()</code> возвращает числовое значение, представляющее тангенс угла.</p> +<p>Поскольку метод <code>tan()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.tan()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.tan" name="Example:_Using_Math.tan">Пример: использование метода <code>Math.tan()</code></h3> +<pre class="brush: js">Math.tan(1); // 1.5574077246549023 +</pre> +<p>Поскольку метод <code>Math.tan()</code> принимает радианы, а чаще проще работать с градусами, следующая функция принимает значение в градусах, преобразует их в радианы и возвращает тангенс.</p> +<pre class="brush: js">function getTanDeg(deg) { + var rad = deg * Math.PI/180; + return Math.tan(rad); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.18', 'Math.tan')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.tan', 'Math.tan')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Math.acos()")}}</li> + <li>{{jsxref("Math.asin()")}}</li> + <li>{{jsxref("Math.atan()")}}</li> + <li>{{jsxref("Math.atan2()")}}</li> + <li>{{jsxref("Math.cos()")}}</li> + <li>{{jsxref("Math.sin()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/tanh/index.html b/files/ru/web/javascript/reference/global_objects/math/tanh/index.html new file mode 100644 index 0000000000..51a6a05524 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/tanh/index.html @@ -0,0 +1,153 @@ +--- +title: Math.tanh() +slug: Web/JavaScript/Reference/Global_Objects/Math/tanh +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Math + - Method + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Math/tanh +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.tanh()</code></strong> возвращает гиперболический тангенс числа, то есть</p> + +<p><math display="block"><semantics><mrow><mo lspace="0em" rspace="0em">tanh</mo><mi>x</mi><mo>=</mo><mfrac><mrow><mo lspace="0em" rspace="0em">sinh</mo><mi>x</mi></mrow><mrow><mo lspace="0em" rspace="0em">cosh</mo><mi>x</mi></mrow></mfrac><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>-</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow><mrow><msup><mi>e</mi><mi>x</mi></msup><mo>+</mo><msup><mi>e</mi><mrow><mo>-</mo><mi>x</mi></mrow></msup></mrow></mfrac><mo>=</mo><mfrac><mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>x</mi></mrow></msup><mo>-</mo><mn>1</mn></mrow><mrow><msup><mi>e</mi><mrow><mn>2</mn><mi>x</mi></mrow></msup><mo>+</mo><mn>1</mn></mrow></mfrac></mrow><annotation encoding="TeX">\tanh x = \frac{\sinh x}{\cosh x} = \frac {e^x - e^{-x}} {e^x + e^{-x}} = \frac{e^{2x} - 1}{e^{2x}+1}</annotation></semantics></math></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.tanh(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>tanh()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.tanh()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.tanh" name="Example:_Using_Math.tanh">Пример: использование метода <code>Math.tanh()</code></h3> + +<pre class="brush: js">Math.tanh(0); // 0 +Math.tanh(Infinity); // 1 +Math.tanh(1); // 0.7615941559557649 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод может эмулироваться при помощи двух вызовов метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.tanh = Math.tanh || function(x) { + if (x === Infinity) { + return 1; + } else if (x === -Infinity) { + return -1; + } else { + return (Math.exp(x) - Math.exp(-x)) / (Math.exp(x) + Math.exp(-x)); + } +} +</pre> + +<p>либо при помощи только одного вызова метода {{jsxref("Math.exp()")}}:</p> + +<pre class="brush: js">Math.tanh = Math.tanh || function(x) { + if (x === Infinity) { + return 1; + } else if (x === -Infinity) { + return -1; + } else { + var y = Math.exp(2 * x); + return (y - 1) / (y + 1); + } +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.tanh', 'Math.tanh')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("38")}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("25")}}</td> + <td>{{CompatSafari("7.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>iOS 8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.acosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.asinh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.atanh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.cosh()")}} {{experimental_inline}}</li> + <li>{{jsxref("Math.sinh()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/trunc/index.html b/files/ru/web/javascript/reference/global_objects/math/trunc/index.html new file mode 100644 index 0000000000..6e7b44147b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/trunc/index.html @@ -0,0 +1,137 @@ +--- +title: Math.trunc() +slug: Web/JavaScript/Reference/Global_Objects/Math/trunc +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Math + - Method + - Reference + - Функция + - целая часть +translation_of: Web/JavaScript/Reference/Global_Objects/Math/trunc +--- +<div> +<div>{{JSRef}}</div> + +<p>Функция <strong><code>Math.trunc()</code></strong> возвращает целую часть числа путём удаления всех дробных знаков.</p> + +<div>{{EmbedInteractiveExample("pages/js/math-trunc.html")}}</div> + + +</div> + +<p> + </p><h2 id="Syntax" name="Syntax">Синтаксис</h2> +<p></p> + +<pre class="syntaxbox"><code>Math.trunc(<var>x</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Число.</dd> +</dl> + +<h3 id="Parameters" name="Parameters">Возвращаемое значение</h3> + +<dl> + <dt><code>x</code></dt> + <dd>Целая часть данного числа.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>В отличие от других трёх методов объекта <code>Math</code> — {{jsxref("Math.floor()")}}, {{jsxref("Math.ceil()")}} и {{jsxref("Math.round()")}} — метод <code>Math.trunc()</code> работает очень просто. Отбрасывается запятая и все цифры после неё, не обращая внимания на знак аргумента.</p> + +<p>Аргумент, переданный в этот метод, будет неявно преобразован в число.</p> + +<p>Поскольку <code>trunc()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.trunc()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> ( <code>Math</code> не является конструктором).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.trunc" name="Example:_Using_Math.trunc">Использование <code>Math.trunc()</code></h3> + +<pre class="brush: js">Math.trunc(13.37); // 13 +Math.trunc(42.84); // 42 +Math.trunc(0.123); // 0 +Math.trunc(-0.123); // -0 +Math.trunc('-1.123'); // -1 +Math.trunc(NaN); // NaN +Math.trunc('foo'); // NaN +Math.trunc(); // NaN +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + if (!isFinite(v)) return v; + + return (v - v % 1) || (v < 0 ? -0 : v === 0 ? v : 0); + + // returns: + // 0 -> 0 + // -0 -> -0 + // 0.2 -> 0 + // -0.2 -> -0 + // 0.7 -> 0 + // -0.7 -> -0 + // Infinity -> Infinity + // -Infinity -> -Infinity + // NaN -> NaN + // null -> 0 + }; +} +</pre> + +<p>Либо:</p> + +<pre class="brush: js">if (!Math.trunc) { + Math.trunc = function(v) { + v = +v; + return (v - v % 1) || (!isFinite(v) || v === 0 ? v : v < 0 ? -0 : 0); + }; +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-math.trunc', 'Math.trunc')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Первое определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-math.trunc', 'Math.trunc')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Math.trunc")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.abs()")}}</li> + <li>{{jsxref("Math.ceil()")}}</li> + <li>{{jsxref("Math.floor()")}}</li> + <li>{{jsxref("Math.round()")}}</li> + <li>{{jsxref("Math.sign()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/math/метод_math.max()_/index.html b/files/ru/web/javascript/reference/global_objects/math/метод_math.max()_/index.html new file mode 100644 index 0000000000..ab66d8acb0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/math/метод_math.max()_/index.html @@ -0,0 +1,136 @@ +--- +title: Метод Math.max() +slug: Web/JavaScript/Reference/Global_Objects/Math/Метод_Math.max()_ +tags: + - JavaScript + - Math + - Method + - Reference +--- +<div>{{JSRef("Global_Objects", "Math")}}</div> + +<div> </div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Math.max()</code></strong> возвращает наибольшее из нуля или более чисел.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Math.max([<var>value1</var>[, <var>value2</var>[, ...]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value1, value2, ...</code></dt> + <dd>Числа.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>max()</code> является статическим методом объекта <code>Math</code>, вы всегда должны использовать его как <code>Math.max()</code>, а не пытаться вызывать метод на созданном экземпляре объекта <code>Math</code> (поскольку объект <code>Math</code> не является конструктором).</p> + +<p>При вызове без аргументов результатом вызова будет значение -{{jsxref("Global_Objects/Infinity", "Infinity")}}.</p> + +<p>Если хотя бы один из аргументов не может быть преобразован в число, результатом будет {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Math.max" name="Example:_Using_Math.max">Пример: использование метода <code>Math.max()</code></h3> + +<pre class="brush: js">Math.max(10, 20); // 20 +Math.max(-10, -20); // -10 +Math.max(-10, 20); // 20 +</pre> + +<p>Следующая функция использует метод {{jsxref("Function.prototype.apply()")}} для нахождения максимального элемента в числовом массиве. Вызов <code>getMaxOfArray([1, 2, 3])</code> эквивалентен вызову <code>Math.max(1, 2, 3)</code>, однако вы можете использовать функцию <code>getMaxOfArray()</code> вместе с программно сконструированными массивами любого размера.</p> + +<pre class="brush: js">function getMaxOfArray(numArray) { + return Math.max.apply(null, numArray); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.8.2.11', 'Math.max')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-math.max', 'Math.max')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Math.min()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/nan/index.html b/files/ru/web/javascript/reference/global_objects/nan/index.html new file mode 100644 index 0000000000..7c91aebb62 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/nan/index.html @@ -0,0 +1,103 @@ +--- +title: NaN +slug: Web/JavaScript/Reference/Global_Objects/NaN +tags: + - JavaScript + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/NaN +--- +<div>{{jsSidebar("Objects")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Глобальное свойство <code><strong>NaN</strong></code> является значением, представляющим не-число (Not-A-Number).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<div></div> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-nan.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>NaN</code> является свойством <em>глобального объекта</em>.</p> + +<p>Начальным значением <code>NaN</code> является Not-A-Number (не-число) — то же самое значение, что и у {{jsxref("Number.NaN")}}. В современных браузерах <code>NaN</code> является ненастраиваемым и незаписываемым свойством. Даже когда это не так, избегайте его переопределения.</p> + +<p>В программах <code>NaN</code> используется довольно редко. Это возвращаемое значение в ситуациях, когда математические ({{jsxref("Math")}}) функции не срабатывают должным образом (например, при вызове <code>Math.sqrt(-1)</code>) или когда функция, пытающаяся считать число из строки, терпит неудачу по причине того, что в строке не число (<code>parseInt('blabla')</code>).</p> + +<h3 id="Testing_against_NaN" name="Testing_against_NaN">Проверка на равенство <code>NaN</code></h3> + +<p><code>NaN</code> является неравным (посредством сравнения через <code>==</code>, <code>!=</code>, <code>===</code>, and <code>!==</code>) любому другому значению, включая другое значение NaN. Используйте {{jsxref("Number.isNaN()")}} или {{jsxref("Global_Objects/isNaN", "isNaN()")}}, чтобы наиболее понятным образом определить является ли значение значением NaN. Или выполните само-сравнение: NaN, и только NaN, в результате такого сравнения будет неравным самому себе.</p> + +<pre><code>NaN === NaN; // false +Number.NaN === NaN; // false +isNaN(NaN); // true +isNaN(Number.NaN); // true + +function valueIsNaN(v) { return v !== v; } +valueIsNaN(1); // false +valueIsNaN(NaN); // true +valueIsNaN(Number.NaN); // true</code></pre> + +<p>Тем не менее, обратите внимание на разницу между функцией <code>isNaN()</code> и методом <code>Number.isNaN()</code>: первая вернет <code>true</code>, если значение в настоящий момент является <code>NaN</code>, или если оно станет <code>NaN</code> после того, как преобразуется в число, в то время как последний вернет <code>true</code>, только если текущим значением является <code>NaN</code>:</p> + +<pre><code>isNaN('hello world'); // true +Number.isNaN('hello world'); // false</code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-value-properties-of-the-global-object-nan', 'NaN')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.1.1', 'NaN')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Initial definition. Implemented in JavaScript 1.3</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.NaN")}}</p> + +<div id="compat-desktop"></div> + +<div id="compat-mobile"></div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.NaN")}}</li> + <li>{{jsxref("Number.isNaN()")}}</li> + <li>{{jsxref("isNaN", "isNaN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/null/index.html b/files/ru/web/javascript/reference/global_objects/null/index.html new file mode 100644 index 0000000000..085018dc12 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/null/index.html @@ -0,0 +1,106 @@ +--- +title: 'null' +slug: Web/JavaScript/Reference/Global_Objects/null +tags: + - JavaScript + - Literal + - Primitive +translation_of: Web/JavaScript/Reference/Global_Objects/null +--- +<div>{{jsSidebar("Objects")}}</div> + +<div></div> + +<p>Значение <code>null</code> представляет отсутствие какого-либо объектного значения. В JavaScript, <code>null</code> является {{Glossary("Primitive", "примитивом")}}, и в контексте логических операций, рассматривается как {{Glossary("Falsy", "ложное (falsy)")}}.</p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-null.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>null</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Значение <code>null</code> записывается литералом <code>null</code>. Оно является самостоятельным, а не свойством глобального объекта (как {{jsxref("Global_Objects/undefined", "undefined")}}). В API, <code>null</code> часто присутствует в местах где ожидается объект, но подходящего объекта нет.</p> + +<pre class="brush: js">// переменная foo не существует - она не была определена и никогда не инициализировалась: +> foo +'ReferenceError: foo is not defined' + +// переменная foo существует, но она не имеет ни типа, ни значения: +> var foo = null; foo +'null' +</pre> + + + +<h3 id="Difference_between_null_and_undefined" name="Difference_between_null_and_undefined">Отличия между <code>null</code> и <code>undefined</code></h3> + +<p><code>null</code> является определенным значением отсутствия объекта, тогда как {{jsxref("Global_Objects/undefined", "undefined")}} обозначает неопределенность. Например: </p> + +<pre class="brush: js">var element; +// значение переменной element до ее инициализации не определенно: undefined + +element = document.getElementById('not-exists'); +// здесь при попытке получения несуществующего элемента, метод getElementById возвращает null +// переменная element теперь инициализирована значением null, ее значение определено +</pre> + +<p>При проверке на <code>null</code> или {{jsxref("Global_Objects/undefined", "undefined")}}, помните о <a href="/ru/docs/Web/JavaScript/Reference/Operators/Операторы_сравнения#Использование_операторов_равенства">различии между операторами равенства (==) и идентичности (===)</a>: с первым, выполняется преобразование типов. </p> + +<pre class="brush: js">typeof null // object (не "null" из соображений обратной совместимости) +typeof undefined // undefined +null === undefined // false +null == undefined // true +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-4.3.11', 'значение null')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-null-value', 'значение null')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-null-value', 'null value')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<div>{{Compat("javascript.builtins.null")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/undefined", "undefined")}}</li> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html b/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html new file mode 100644 index 0000000000..0b229290de --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/epsilon/index.html @@ -0,0 +1,122 @@ +--- +title: Number.EPSILON +slug: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +tags: + - ECMAScript6 + - JavaScript + - Number + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/EPSILON +--- +<div>{{JSRef}}</div> + +<p>Свойство <strong><code>Number.EPSILON</code></strong> представляет собой разницу между единицей и наименьшим значением, большим единицы, которое может быть представлено типом {{jsxref("Number")}}.</p> + +<p>Вам не нужно создавать объект типа {{jsxref("Number")}} для доступа к этому статическому свойству (используйте <code>Number.EPSILON</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Свойство <code>EPSILON</code> имеет значение, приблизительно равное <code>2.2204460492503130808472633361816E-16</code> или <code>2<sup>-52</sup></code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Testing_equality" name="Example:_Testing_equality">Проверка на равенство</h3> + +<pre><code>x = 0.2; +y = 0.3; +z = 0.1; +equal = (Math.abs(x - y + z) < Number.EPSILON);</code></pre> + + + +<h2 id="Examples" name="Examples">Полифилл</h2> + +<pre class="brush: js">if (Number.EPSILON === undefined) { + Number.EPSILON = Math.pow(2, -52); +} +</pre> + + + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.epsilon', 'Number.EPSILON')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-number.epsilon', 'Number.EPSILON')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{ CompatVersionUnknown }}</td> + <td>{{CompatGeckoDesktop("25.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatVersionUnknown }}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Number")}}, которому принадлежит это свойство.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/index.html b/files/ru/web/javascript/reference/global_objects/number/index.html new file mode 100644 index 0000000000..b8ea32f7d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/index.html @@ -0,0 +1,181 @@ +--- +title: Number +slug: Web/JavaScript/Reference/Global_Objects/Number +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<p>Объект <strong><code>Number</code></strong> является объектом-обёрткой, позволяющей вам работать с числовыми значениями. Объект <code>Number</code> создаётся через конструктор <code>Number()</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre>new Number(<em>value</em>); +var <em>a</em> = new Number('123'); // a === 123 is false +var <em>b</em> = Number('123'); // b === 123 is true +<em>a</em> instanceof Number; // is true +<em>b</em> instanceof Number; // is false</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Числовое значение, которое примет объект после создания.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Несколько замечаний относительно использования объекта <code>Number</code>:</p> + +<ul> + <li>Если аргумент не может быть преобразован в число, возвращается {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>В неконструкторном контексте (то есть, без оператора {{jsxref("Operators/new", "new")}}), объект <code>Number</code> может использоваться для проведения преобразования типов.</li> +</ul> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Number.EPSILON")}} {{experimental_inline}}</dt> + <dd>Наименьший интервал между двумя представимыми числами.</dd> + <dt>{{jsxref("Number.MAX_SAFE_INTEGER")}} {{experimental_inline}}</dt> + <dd>Максимальное целое число, которое можно безопасно использовать в JavaScript (<code>2<sup>53</sup> - 1</code>).</dd> + <dt>{{jsxref("Number.MAX_VALUE")}}</dt> + <dd>Наибольшее представимое положительное число.</dd> + <dt>{{jsxref("Number.MIN_SAFE_INTEGER")}} {{experimental_inline}}</dt> + <dd>Минимальное целое число, которое можно безопасно использовать в (<code>-(2<sup>53</sup> - 1)</code>).</dd> + <dt>{{jsxref("Number.MIN_VALUE")}}</dt> + <dd>Наименьшее представимое положительное число — то есть, самое близкое к нулю положительное число (которое ещё не является нулём).</dd> + <dt>{{jsxref("Number.NaN")}}</dt> + <dd>Специальное значение для представления «не числа».</dd> + <dt>{{jsxref("Number.NEGATIVE_INFINITY")}}</dt> + <dd>Специальное значение для представления отрицательной бесконечности; возвращается при переполнении.</dd> + <dt>{{jsxref("Number.POSITIVE_INFINITY")}}</dt> + <dd>Специальное значение для представления положительной бесконечности; возвращается при переполнении.</dd> + <dt>{{jsxref("Number.prototype")}}</dt> + <dd>Позволяет добавлять свойства к объекту <code>Number</code>.</dd> +</dl> + +<div>{{jsOverrides("Function", "properties", "MAX_VALUE", "MIN_VALUE", "NaN", "NEGATIVE_INFINITY", "POSITIVE_INFINITY", "protoype")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Number.isNaN()")}} {{experimental_inline}}</dt> + <dd>Определяет, является ли переданнное значение значением {{jsxref("Global_Objects/NaN", "NaN")}}.</dd> + <dt>{{jsxref("Number.isFinite()")}} {{experimental_inline}}</dt> + <dd>Определяет, является ли переданное значение конечным числом.</dd> + <dt>{{jsxref("Number.isInteger()")}} {{experimental_inline}}</dt> + <dd>Определяет, является ли тип переданного значения «числом», а само число — целым значением.</dd> + <dt>{{jsxref("Number.isSafeInteger()")}} {{experimental_inline}}</dt> + <dd>Определяет, является ли переданное значение безопасным целым числом (числом в диапазоне от <code>-(2<sup>53</sup> - 1)</code> до <code>2<sup>53</sup> - 1</code>).</dd> + <dt><s class="obsoleteElement">{{jsxref("Number.toInteger()")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Использовался для вычисления переданного значения и преобразования его в целое число (или бесконечность {{jsxref("Global_Objects/Infinity", "Infinity")}}), но был удалён.</s></dd> + <dt>{{jsxref("Number.parseFloat()")}} {{experimental_inline}}</dt> + <dd>Представляет собой тот же самый метод, что и метод {{jsxref("Global_Objects/parseFloat", "parseFloat")}} глобального объекта.</dd> + <dt>{{jsxref("Number.parseInt()")}} {{experimental_inline}}</dt> + <dd>Представляет собой тот же самый метод, что и метод {{jsxref("Global_Objects/parseInt", "parseInt")}} глобального объекта.</dd> +</dl> + +<div>{{jsOverrides("Function", "methods", "isNaN")}}</div> + +<h2 id="Number_instances" name="Number_instances">Экземпляры объекта <code>Number</code></h2> + +<p>Все экземпляры объекта <code>Number</code> наследуются от {{jsxref("Number.prototype")}}. Объект прототипа конструктора <code>Number</code> может быть изменён, чтобы затронуть все экземпляры объекта <code>Number</code>.</p> + +<h3 id="Methods_of_Number_instance" name="Methods_of_Number_instance">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Number/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_the_Number_object_to_assign_values_to_numeric_variables" name="Example:_Using_the_Number_object_to_assign_values_to_numeric_variables">Пример: использование объекта <code>Number</code> для присваивания значений числовым переменным</h3> + +<p>В следующем примере для присваивания значений числовым переменным используются свойства объекта <code>Number</code>:</p> + +<pre class="brush: js">var biggestNum = Number.MAX_VALUE; +var smallestNum = Number.MIN_VALUE; +var infiniteNum = Number.POSITIVE_INFINITY; +var negInfiniteNum = Number.NEGATIVE_INFINITY; +var notANum = Number.NaN; +</pre> + +<h3 id="Example_Using_Number_to_convert_a_Date_object" name="Example:_Using_Number_to_convert_a_Date_object">Пример: целочисленный диапазон для объекта <code>Number</code></h3> + +<p>Следующий пример показывает, какие минимальное и максимальное целочисленные значения может представить объект <code>Number</code> (за подробностями обращайтесь к стандарту EcmaScript, главе <em>8.5 Тип Number</em>):</p> + +<pre class="brush: js">var biggestInt = 9007199254740992; +var smallestInt = -9007199254740992; +</pre> + +<p>При разборе данных, сериализованных в JSON, можно ожидать, что целые значения, выпадающие из этого диапазона будут повреждены, когда парсер JSON приведёт их к типу <code>Number</code>. Возможным обходным путём может быть использование объекта {{jsxref("Global_Objects/String", "String")}}.</p> + +<h3 id="Example_Using_Number_to_convert_a_Date_object" name="Example:_Using_Number_to_convert_a_Date_object">Пример: использование <code>Number</code> для преобразования объекта <code>Date</code></h3> + +<p>В следующем примере объект {{jsxref("Global_Objects/Date", "Date")}} преобразуется в числовое значение с использование объекта <code>Number</code> в качестве функции:</p> + +<pre class="brush: js">var d = new Date('December 17, 1995 03:24:00'); +console.log(Number(d)); +</pre> + +<p>Пример выведет "819199440000".</p> + +<h3 id="Example_Convert_numeric_strings_to_numbers" name="Example:_Convert_numeric_strings_to_numbers">Пример: преобразование строк с числами в числа</h3> + +<pre class="brush: js">Number('123') // 123 +Number('') // 0 +Number('0x11') // 17 +Number('0b11') // 3 +Number('0o11') // 9 +Number('foo') // NaN +Number('100a') // NaN +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7', 'Number')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number-objects', 'Number')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Добавлены новые методы и свойства: ({{jsxref("Number.EPSILON", "EPSILON")}}, {{jsxref("Number.isFinite", "isFinite")}}, {{jsxref("Number.isInteger", "isInteger")}}, {{jsxref("Number.isNaN", "isNaN")}}, {{jsxref("Number.parseFloat", "parseFloat")}} и {{jsxref("Number.parseInt", "parseInt")}})</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-number-objects', 'Number')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Number")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li> + <li>Глобальный объект {{jsxref("Global_Objects/Math", "Math")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html b/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html new file mode 100644 index 0000000000..26ed94a8c9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isfinite/index.html @@ -0,0 +1,130 @@ +--- +title: Number.isFinite() +slug: Web/JavaScript/Reference/Global_Objects/Number/isFinite +tags: + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Number + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isFinite +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Number.isFinite()</code></strong> определяет, является ли переданное значение конечным числом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Number.isFinite(<var>testValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>testValue</code></dt> + <dd>Значение, проверяемое на конечность.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>В отличии от глобальной функции {{jsxref("Global_Objects/isFinite", "isFinite()")}}, этот метод принудительно не преобразует параметр в число. Это означает, что он возвращает <code>true</code> только для конечных значений числового типа.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Number.isFinite(Infinity); // false +Number.isFinite(NaN); // false +Number.isFinite(-Infinity); // false + +Number.isFinite(0); // true +Number.isFinite(2e64); // true + +Number.isFinite('0'); // false, при использовании глобальной + // функции isFinite('0') было бы true +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">Number.isFinite = Number.isFinite || function(value) { + return typeof value === 'number' && isFinite(value); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td> + <p>{{SpecName('ES6', '#sec-number.isfinite', 'Number.isInteger')}}</p> + </td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("19")}}</td> + <td>{{CompatGeckoDesktop("16")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("16")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Global_Objects/Number", "Number")}}, которому принадлежит этот метод.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html b/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html new file mode 100644 index 0000000000..433a19f64b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isinteger/index.html @@ -0,0 +1,95 @@ +--- +title: Number.isInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isInteger +tags: + - JavaScript + - Method + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isInteger +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<p>Метод <strong><code>Number.isInteger()</code></strong> определяет, является ли переданное значение целым числом.</p> + +<p>{{EmbedInteractiveExample("pages/js/number-isinteger.html")}}</p> + + + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Number.isInteger(<var>value</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, проверяемое на целочисленность.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Boolean")}} сообщающий о том, является ли переданное значение целочисленным числом.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если целевое значение является целым числом, возвращает <code>true</code>. Если значение {{jsxref("NaN")}} или {{jsxref("Infinity")}}, то возвращает <code>false</code>. Метод также возвращает <code>true</code>, если это вещественное число с точкой, которое может быть представлено в целочисленном виде.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Number.isInteger(0); // true +Number.isInteger(1); // true +Number.isInteger(-100000); // true +Number.isInteger(99999999999999999999999); // true + +Number.isInteger(0.1); // false +Number.isInteger(Math.PI); // false + +Number.isInteger(NaN); // false +Number.isInteger(Infinity); // false +Number.isInteger(-Infinity); // false +Number.isInteger('10'); // false +Number.isInteger(true); // false +Number.isInteger(false); // false +Number.isInteger([1]); // false + +Number.isInteger(5.0); // true +Number.isInteger(5.000000000000001); // false +Number.isInteger(5.0000000000000001); // true</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">Number.isInteger = Number.isInteger || function(value) { + return typeof value === 'number' && + isFinite(value) && + Math.floor(value) === value; +};</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td> + <p>{{SpecName('ESDraft', '#sec-number.isinteger', 'Number.isInteger')}}</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + + + +<div></div> + +<div>{{Compat("javascript.builtins.Number.isInteger")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Number")}}, которому принадлежит этот метод.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/isnan/index.html b/files/ru/web/javascript/reference/global_objects/number/isnan/index.html new file mode 100644 index 0000000000..173fd76c17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/isnan/index.html @@ -0,0 +1,96 @@ +--- +title: Number.isNaN() +slug: Web/JavaScript/Reference/Global_Objects/Number/isNaN +tags: + - ECMAScript6 + - JavaScript + - Method + - Number + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isNaN +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Number.isNaN()</code></strong> определяет, является ли переданное значение {{jsxref("Global_Objects/NaN", "NaN")}}. Это более надёжная версия оригинальной глобальной функции {{jsxref("Global_Objects/isNaN", "isNaN()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Number.isNaN(<var>value</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, проверяемое на {{jsxref("Global_Objects/NaN", "NaN")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку оба оператора проверки на равенство, {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} и {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}, вычисляются в <code>false</code> при проверке, что {{jsxref("Global_Objects/NaN", "NaN")}} <em>и есть</em> {{jsxref("Global_Objects/NaN", "NaN")}}, появляется необходимость в функции <code>Number.isNaN()</code>. Эта ситуация отличается от всех других возможных сравнений в JavaScript.</p> + +<p>В отличие от глобальной функции {{jsxref("Global_Objects/isNaN", "isNaN()")}}, <code>Number.isNaN()</code> не имеет проблемы принудительного преобразования параметра в число. Это значит, что в него безопасно передавать значения, которые обычно превращаются в {{jsxref("Global_Objects/NaN", "NaN")}}, но на самом деле {{jsxref("Global_Objects/NaN", "NaN")}} не являются. Также это значит, что метод возвращает <code>true</code> только для числовых значений, имеющих значение {{jsxref("Global_Objects/NaN", "NaN")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Number.isNaN(NaN); // true +Number.isNaN(Number.NaN); // true +Number.isNaN(0 / 0) // true + +// При использовании глобальной функции isNaN() это всё будет true +Number.isNaN('NaN'); // false +Number.isNaN(undefined); // false +Number.isNaN({}); // false +Number.isNaN('blabla'); // false + +// А это всё в любом случае будет false +Number.isNaN(true); +Number.isNaN(null); +Number.isNaN(37); +Number.isNaN('37'); +Number.isNaN('37.37'); +Number.isNaN(''); +Number.isNaN(' '); +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">Number.isNaN = Number.isNaN || function(value) { + return typeof value === 'number' && isNaN(value); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td> + <p>{{SpecName('ES6', '#sec-number.isnan', 'Number.isnan')}}</p> + </td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Number.isNaN")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Number", "Number")}}</li> + <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html b/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html new file mode 100644 index 0000000000..9fbc3bb7d9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/issafeinteger/index.html @@ -0,0 +1,95 @@ +--- +title: Number.isSafeInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>Number.isSafeInteger()</code></strong> определяет, является ли переданное значение <dfn>безопасным целым числом</dfn>.</p> + +<div>{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}</div> + + + +<p>Безопасное целое число это такое число, которое:</p> + +<ul> + <li>может быть точно представлено числом IEEE-754 двойной точности и</li> + <li>чьё представление IEEE-754 не может быть результатом округления любого другого целого числа, соответствующего представлению IEEE-754.</li> +</ul> + +<p>Например, число <code>2<sup>53</sup> - 1</code> является безопасным целым числом: оно может быть представлено точно и никакое другое целое число не округляется к нему ни в каком режиме округления IEEE-754. В противовес ему, число <code>2<sup>53</sup></code> <em>не является</em> безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число <code>2<sup>53</sup> + 1</code> не может быть напрямую представлено в IEEE-754 и округляется к числу <code>2<sup>53</sup></code> в режимах округления к ближайшему и к нулю. Безопасные целые числа состоят из всех целых чисел в диапазоне от <code>-(2<sup>53</sup> - 1)</code> до <code>2<sup>53</sup> - 1</code> включительно (± <code>9007199254740991</code> или ± 9,007,199,254,740,991).</p> + +<p>Обработка значений, больших или меньших чем ~9 квадриллионов, с высокой точностью требует использования <a href="https://ru.wikipedia.org/wiki/%D0%94%D0%BB%D0%B8%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D0%B8%D1%84%D0%BC%D0%B5%D1%82%D0%B8%D0%BA%D0%B0">библиотеки, умеющей работать с длиной арифметикой</a>. Ознакомьтесь с <a href="http://floating-point-gui.de/">Что Каждому Программисту Необходимо Знать об Арифметике с Вещественными числами</a> для получения дополнительной информации о представлении чисел, с плавающей запятой.</p> + +<p>Для больших целочисленных значений, рассмотрите возможность использования типа {{jsxref("BigInt")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>Number.isSafeInteger(<var>testValue</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>testValue</code></dt> + <dd>Значение, проверяемое на целочисленную «безопасность».</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Boolean")}} значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js notranslate">Number.isSafeInteger(3); // true +Number.isSafeInteger(Math.pow(2, 53)); // false +Number.isSafeInteger(Math.pow(2, 53) - 1); // true +Number.isSafeInteger(NaN); // false +Number.isSafeInteger(Infinity); // false +Number.isSafeInteger('3'); // false +Number.isSafeInteger(3.1); // false +Number.isSafeInteger(3.0); // true +</pre> + +<h2 id="Specifications" name="Specifications">Полифилл</h2> + +<pre class="brush: js notranslate">Number.isSafeInteger = Number.isSafeInteger || function (value) { + return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER; +};</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td> + <p>{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Number.isSafeInteger")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Number")}}, которому принадлежит этот метод.</li> + <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li> + <li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li> + <li>{{jsxref("BigInt")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html b/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html new file mode 100644 index 0000000000..652a6aa821 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/max_safe_integer/index.html @@ -0,0 +1,65 @@ +--- +title: Number.MAX_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +tags: + - ECMAScript6 + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Константа <strong><code>Number.MAX_SAFE_INTEGER</code></strong> представляет максимальное безопасное целочисленное значение в JavaScript (<code>2<sup>53</sup> - 1</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Константа <code>MAX_SAFE_INTEGER</code> имеет значение <code>9007199254740991</code>. Смысл этого числа в том, что в JavaScript используется <a href="https://ru.wikipedia.org/wiki/Число_двойной_точности">формат чисел с плавающей запятой двойной точности</a>, как определено в стандарте <a href="https://ru.wikipedia.org/wiki/IEEE_754">IEEE 754</a>, а он может безопасно представлять числа только в диапазоне от <code>-(2<sup>53</sup> - 1)</code> до <code>2<sup>53</sup> - 1</code>.</p> + +<p>Поскольку <code>MAX_SAFE_INTEGER</code> является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как <code>Number.MAX_SAFE_INTEGER</code>, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Number.MAX_SAFE_INTEGER // 9007199254740991 +Math.pow(2, 53) - 1 // 9007199254740991 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">if (!Number.MAX_SAFE_INTEGER) { + Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1; +}</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.max_safe_integer', 'Number.MAX_SAFE_INTEGER')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Number.MAX_SAFE_INTEGER")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li> + <li>{{jsxref("Number.isSafeInteger()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/max_value/index.html b/files/ru/web/javascript/reference/global_objects/number/max_value/index.html new file mode 100644 index 0000000000..7472d91e57 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/max_value/index.html @@ -0,0 +1,110 @@ +--- +title: Number.MAX_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MAX_VALUE +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Number.MAX_VALUE</code></strong> представляет максимальное числовое значение, представимое в JavaScript.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Свойство <code>MAX_VALUE</code> имеет значение, приблизительно равное <code>1.79E+308</code>. Значения, большие <code>MAX_VALUE</code> представляются как «бесконечность».</p> +<p>Поскольку <code>MAX_VALUE</code> является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как <code>Number.MAX_VALUE</code>, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_MAX_VALUE" name="Example:_Using_MAX_VALUE">Пример: использование <code>MAX_VALUE</code></h3> +<p>В следующем примере кода производится умножение двух значений. Если результат меньше или равен <code>MAX_VALUE</code>, вызывается функция <code>func1</code>; в противном случае вызывается функция <code>func2</code>.</p> +<pre class="brush: js">if (num1 * num2 <= Number.MAX_VALUE) { + func1(); +} else { + func2(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.3.2', 'Number.MAX_VALUE')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.max_value', 'Number.MAX_VALUE')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Number.MIN_VALUE")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html b/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html new file mode 100644 index 0000000000..58a21e845c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/min_safe_integer/index.html @@ -0,0 +1,105 @@ +--- +title: Number.MIN_SAFE_INTEGER +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +tags: + - ECMAScript6 + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_SAFE_INTEGER +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Константа <strong><code>Number.MIN_SAFE_INTEGER</code></strong> представляет минимальное безопасное целочисленное значение в JavaScript (<code>-(2<sup>53</sup> - 1)</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Константа <code>MIN_SAFE_INTEGER</code> имеет значение <code>-9007199254740991</code>. Смысл этого числа в том, что в JavaScript используется <a href="https://ru.wikipedia.org/wiki/Число_двойной_точности">формат чисел с плавающей запятой двойной точности</a>, как определено в стандарте <a href="https://ru.wikipedia.org/wiki/IEEE_754">IEEE 754</a>, а он может безопасно представлять числа только в диапазоне от <code>-(2<sup>53</sup> - 1)</code> до <code>2<sup>53</sup> - 1</code>.</p> + +<p>Поскольку <code>MIN_SAFE_INTEGER</code> является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как <code>Number.MIN_SAFE_INTEGER</code>, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Number.MIN_SAFE_INTEGER // -9007199254740991 +-(Math.pow(2, 53) - 1) // -9007199254740991 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.min_safe_integer', 'Number.MIN_SAFE_INTEGER')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("34")}}</td> + <td>{{CompatGeckoDesktop("31")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("32")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li> + <li>{{jsxref("Number.isSafeInteger()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/min_value/index.html b/files/ru/web/javascript/reference/global_objects/number/min_value/index.html new file mode 100644 index 0000000000..0c9c2fded1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/min_value/index.html @@ -0,0 +1,122 @@ +--- +title: Number.MIN_VALUE +slug: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/MIN_VALUE +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>Number.</code><span style="font-family: consolas,monaco,andale mono,monospace;">MIN_VALUE</span></strong> представляет минимальное положительное числовое значение, представимое в JavaScript.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Свойство <code>MIN_VALUE</code> является положительным ближайшим к нулю числом, которое может быть представлено в JavaScript.</p> + +<p><code>MIN_VALUE</code> имеет значение, приблизительно равное <code>5e-324</code>. Значения, меньшие <code>MIN_VALUE</code>, преобразуются в 0 (так называемое «исчезновение порядка» или «антипереполнение»).</p> + +<p>Поскольку <code>MIN_VALUE</code> является статическим свойством объекта {{jsxref("Global_Objects/Number", "Number")}}, вы всегда должны использовать его как <code>Number.MIN_VALUE</code>, а не как свойство созданного вами объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_MIN_VALUE" name="Example:_Using_MIN_VALUE">Пример: использование <code>MIN_VALUE</code></h3> + +<p>В следующем примере кода производится деление одного значения на другое. Если результат больше или равен <code>MIN_VALUE</code>, вызывается функция <code>func1</code>; в противном случае вызывается функция <code>func2</code>.</p> + +<pre class="brush: js">if (num1 / num2 >= Number.MIN_VALUE) { + func1(); +} else { + func2(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.3.3', 'Number.MIN_VALUE')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.min_value', 'Number.MIN_VALUE')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.MAX_VALUE")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/nan/index.html b/files/ru/web/javascript/reference/global_objects/number/nan/index.html new file mode 100644 index 0000000000..c85c806eb3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/nan/index.html @@ -0,0 +1,97 @@ +--- +title: Number.NaN +slug: Web/JavaScript/Reference/Global_Objects/Number/NaN +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NaN +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Number.NaN</code></strong> представляет «не число». Эквивалентно глобальному объекту {{jsxref("Global_Objects/NaN", "NaN")}}.</p> +<p>Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте <code>Number.NaN</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.3.4', 'Number.NaN')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.nan', 'Number.NaN')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>Глобальный объект {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>Объект {{jsxref("Global_Objects/Number", "Number")}}, которому принадлежит это свойство.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html b/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html new file mode 100644 index 0000000000..7f65de76b3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/negative_infinity/index.html @@ -0,0 +1,125 @@ +--- +title: Number.NEGATIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/NEGATIVE_INFINITY +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Number.NEGATIVE_INFINITY</code></strong> представляет значение отрицательной бесконечности.</p> +<p>Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте <code>Number.NEGATIVE_INFINITY</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение <code>Number.NEGATIVE_INFINITY</code> является тем же самым по модулю, только отрицательным значением, что содержит свойство {{jsxref("Global_Objects/Infinity", "Infinity")}} глобального объекта.</p> +<p>Это значение ведёт себя несколько иначе, нежели математическая бесконечность:</p> +<ul> + <li>Любое положительное значение, включая {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}, умноженное на <code>NEGATIVE_INFINITY</code> даёт <code>NEGATIVE_INFINITY</code>.</li> + <li>Любое отрицательное значение, включая <code>NEGATIVE_INFINITY</code>, умноженное на <code>NEGATIVE_INFINITY</code> даёт {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}.</li> + <li>Ноль, умноженный на <code>NEGATIVE_INFINITY</code>, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}, умноженный на <code>NEGATIVE_INFINITY</code>, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li><code>NEGATIVE_INFINITY</code>, делённое на любое отрицательное значение, исключая <code>NEGATIVE_INFINITY</code>, даёт {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}.</li> + <li><code>NEGATIVE_INFINITY</code>, делённое на любое положительное значение, исключая {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}, даёт <code>NEGATIVE_INFINITY</code>.</li> + <li><code>NEGATIVE_INFINITY</code>, делённое на <code>NEGATIVE_INFINITY</code> или {{jsxref("Number.POSITIVE_INFINITY", "POSITIVE_INFINITY")}}, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>Любое число, делённое на <code>NEGATIVE_INFINITY</code>, даёт ноль.</li> +</ul> +<p>Вы можете использовать свойство <code>Number.NEGATIVE_INFINITY</code> для проверки на ошибки и возвращать конечное число в случае успеха. Однако, обратите внимание, что в этом случае более уместным было бы использование функции {{jsxref("Global_Objects/isFinite", "isFinite")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_NEGATIVE_INFINITY" name="Example:_Using_NEGATIVE_INFINITY">Пример: использование <code>NEGATIVE_INFINITY</code></h3> +<p>В следующем примере переменной <code>smallNumber</code> присваивается значение, меньшее минимального. Когда выполняется инструкция {{jsxref("Statements/if...else", "if")}}, переменная <code>smallNumber</code> имеет значение <code>-Infinity</code>, так что перед продолжением вычислений она устанавливается в более приемлимое значение.</p> +<pre class="brush: js">var smallNumber = (-Number.MAX_VALUE) * 2; + +if (smallNumber == Number.NEGATIVE_INFINITY) { + smallNumber = returnFinite(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.3.5', 'Number.NEGATIVE_INFINITY')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.negative_infinity', 'Number.NEGATIVE_INFINITY')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Number.POSITIVE_INFINITY")}}</li> + <li>{{jsxref("Number.isFinite()")}}</li> + <li>{{jsxref("Global_Objects/Infinity", "Infinity")}}</li> + <li>{{jsxref("Global_Objects/isFinite", "isFinite()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html b/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html new file mode 100644 index 0000000000..ab4a2e0dc7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/parsefloat/index.html @@ -0,0 +1,108 @@ +--- +title: Number.parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseFloat +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Number.parseFloat()</code></strong> разбирает строковый аргумент и возвращает число с плавающей запятой. Этот метод ведёт себя идентично глобальной функции {{jsxref("Global_Objects/parseFloat", "parseFloat()")}} и является частью ECMAScript 6 (его целью является модуляризация глобальных сущностей).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Number.parseFloat(<var>string</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>string</code></dt> + <dd>Строка, представляющая значение, которое вы хотите разобрать.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Пожалуйста, обратитесь к документации по глобальной функции {{jsxref("Global_Objects/parseFloat", "parseFloat()")}} для просмотра подробного описания и примеров.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td> + <p>{{SpecName('ES6', '#sec-number.parsefloat', 'Number.parseFloat')}}</p> + </td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("25")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Global_Objects/Number", "Number")}}, которому принадлежит этот метод.</li> + <li>Глобальная функция {{jsxref("Global_Objects/parseFloat", "parseFloat()")}}.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/parseint/index.html b/files/ru/web/javascript/reference/global_objects/number/parseint/index.html new file mode 100644 index 0000000000..66bc26675f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/parseint/index.html @@ -0,0 +1,82 @@ +--- +title: Number.parseInt() +slug: Web/JavaScript/Reference/Global_Objects/Number/parseInt +tags: + - ECMAScript6 + - JavaScript + - Method + - Number +translation_of: Web/JavaScript/Reference/Global_Objects/Number/parseInt +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Number.parseInt()</code></strong> разбирает строковый аргумент и возвращает целое число. Этот метод ведёт себя идентично глобальной функции {{jsxref("Global_Objects/parseInt", "parseInt()")}} и является частью ECMAScript 6 (его целью является модуляризация глобальных сущностей).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Number.parseInt(<var>string</var>[, <var>radix</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>string</code></dt> + <dd>Значение для разбора. Если параметр не является строкой, он будет в неё преобразован. Ведущие пробельные символы в строке игнорируются.</dd> + <dt><code>radix</code></dt> + <dd>Необязательный параметр. Целое число, представляющее основание системы счисления для числа в указанной выше строке. Для избежания непонятностей при чтении кода и гарантии предсказуемого поведения <strong>всегда определяйте этот параметр</strong>. Различные реализации дадут разные результаты, если основание системы счисления не будет указано.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ строки не может быть преобразован в число, то возвращается <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/NaN" title="Глобальное свойство NaN является значением, представляющим не-число (Not-A-Number)."><code>NaN</code></a>. </p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод имеет ту же функциональность, что и глобальная функция {{jsxref("parseInt", "parseInt()")}}:</p> + +<pre class="brush: js">Number.parseInt === parseInt; // true</pre> + +<p>Пожалуйства, обратитесь к документации по глобальной функции {{jsxref("Global_Objects/parseInt", "parseInt()")}} для просмотра подробного описания и примеров.</p> + +<h2 id="Полифилл">Полифилл</h2> + +<pre class="brush: js">if (Number.parseInt === undefined) { + Number.parseInt = window.parseInt; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td> + <p>{{SpecName('ES6', '#sec-number.parseint', 'Number.parseInt')}}</p> + </td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-number.parseint', 'Number.parseInt')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Number.parseInt")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Объект {{jsxref("Global_Objects/Number", "Number")}}, которому принадлежит этот метод.</li> + <li>Глобальная функция {{jsxref("Global_Objects/parseInt", "parseInt()")}}.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html b/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html new file mode 100644 index 0000000000..fd87dde80a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/positive_infinity/index.html @@ -0,0 +1,125 @@ +--- +title: Number.POSITIVE_INFINITY +slug: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +tags: + - JavaScript + - Number + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Number/POSITIVE_INFINITY +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Number.POSITIVE_INFINITY</code></strong> представляет значение положительной бесконечности.</p> +<p>Вам не нужно создавать объект {{jsxref("Global_Objects/Number", "Number")}} для доступа к этому статическому свойству (используйте <code>Number.POSITIVE_INFINITY</code>).</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение <code>Number.POSITIVE_INFINITY</code> является тем же самым значением, что содержит свойство {{jsxref("Global_Objects/Infinity", "Infinity")}} глобального объекта.</p> +<p>Это значение ведёт себя несколько иначе, нежели математическая бесконечность:</p> +<ul> + <li>Любое положительное значение, включая <code>POSITIVE_INFINITY</code>, умноженное на <code>POSITIVE_INFINITY</code> даёт <code>POSITIVE_INFINITY</code>.</li> + <li>Любое отрицательное значение, включая {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}, умноженное на <code>POSITIVE_INFINITY</code> даёт {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}.</li> + <li>Ноль, умноженный на <code>POSITIVE_INFINITY</code>, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}, умноженный на <code>POSITIVE_INFINITY</code>, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li><code>POSITIVE_INFINITY</code>, делённое на любое отрицательное значение, исключая {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}, даёт {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}}.</li> + <li><code>POSITIVE_INFINITY</code>, делённое на любое положительное значение, исключая <code>POSITIVE_INFINITY</code>, даёт <code>POSITIVE_INFINITY</code>.</li> + <li><code>POSITIVE_INFINITY</code>, делённое на {{jsxref("Number.NEGATIVE_INFINITY", "NEGATIVE_INFINITY")}} или <code>POSITIVE_INFINITY</code>, даёт {{jsxref("Global_Objects/NaN", "NaN")}}.</li> + <li>Любое число, делённое на <code>POSITIVE_INFINITY</code>, даёт ноль.</li> +</ul> +<p>Вы можете использовать свойство <code>Number.POSITIVE_INFINITY</code> для проверки на ошибки и возвращать конечное число в случае успеха. Однако, обратите внимание, что в этом случае более уместным было бы использование функции {{jsxref("Global_Objects/isFinite", "isFinite")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_POSITIVE_INFINITY" name="Example:_Using_POSITIVE_INFINITY">Пример: использование <code>POSITIVE_INFINITY</code></h3> +<p>В следующем примере переменной <code>bigNumber</code> присваивается значение, большее максимального. Когда выполняется инструкция {{jsxref("Statements/if...else", "if")}}, переменная <code>bigNumber</code> имеет значение <code>Infinity</code>, так что перед продолжением вычислений она устанавливается в более приемлимое значение.</p> +<pre class="brush: js">var bigNumber = Number.MAX_VALUE * 2; + +if (bigNumber == Number.POSITIVE_INFINITY) { + bigNumber = returnFinite(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.3.6', 'Number.POSITIVE_INFINITY')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.positive_infinity', 'Number.POSITIVE_INFINITY')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Number.NEGATIVE_INFINITY")}}</li> + <li>{{jsxref("Number.isFinite()")}}</li> + <li>{{jsxref("Global_Objects/Infinity", "Infinity")}}</li> + <li>{{jsxref("Global_Objects/isFinite", "isFinite()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/prototype/index.html b/files/ru/web/javascript/reference/global_objects/number/prototype/index.html new file mode 100644 index 0000000000..640e7ce716 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/prototype/index.html @@ -0,0 +1,123 @@ +--- +title: Number.prototype +slug: Web/JavaScript/Reference/Global_Objects/Number/prototype +tags: + - JavaScript + - Number + - Property + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>Number.prototype</code></strong> представляет прототип конструктора {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("Global_Objects/Number", "Number")}} наследуются от <code>Number.prototype</code>. Объект прототипа конструктора {{jsxref("Global_Objects/Number", "Number")}} может быть изменён для затрагивания всех экземпляров объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>Number.prototype.constructor</code></dt> + <dd>Возвращает функцию, создавшую этот экземпляр объекта. По умолчанию ей является объект {{jsxref("Global_Objects/Number", "Number")}}.</dd> +</dl> + +<div>{{jsOverrides("Object", "properties", "constructor")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> +<dl> + <dt>{{jsxref("Number.prototype.toExponential()")}}</dt> + <dd>Возвращает строку, представляющую число в экспоненциальной записи.</dd> + <dt>{{jsxref("Number.prototype.toFixed()")}}</dt> + <dd>Возвращает строку, представляющую число в записи с фиксированной запятой.</dd> + <dt>{{jsxref("Number.prototype.toLocaleString()")}}</dt> + <dd>Возвращает строку с языко-зависимым представлением числа. Переопределяет метод {{jsxref("Object.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("Number.prototype.toPrecision()")}}</dt> + <dd>Возвращает строку, представляющую число с указанной точностью в экспоненциальной записи, либо записи с фиксированной запятой.</dd> + <dt>{{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает объектный литерал, представляющий объект {{jsxref("Global_Objects/Number", "Number")}}; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Number.prototype.toString()")}}</dt> + <dd>Возвращает строку, представляющую указанный объект по указанному основанию системы счисления. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("Number.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение указанного объекта. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.</dd> +</dl> + +<div>{{jsOverrides("Object", "methods", "toExponential", "toFixed", "toLocaleString", "toPrecision", "toSource", "toString", "valueOf")}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4', 'Number')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-the-number-prototype-object', 'Number')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html b/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html new file mode 100644 index 0000000000..0f24f36542 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/toexponential/index.html @@ -0,0 +1,131 @@ +--- +title: Number.prototype.toExponential() +slug: Web/JavaScript/Reference/Global_Objects/Number/toExponential +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toExponential +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toExponential()</code></strong> возвращает строку, представляющую объект {{jsxref("Global_Objects/Number", "Number")}} в экспоненциальной записи.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>numObj</var>.toExponential([<var>fractionDigits</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>fractionDigits</code></dt> + <dd>Необязательный параметр. Целое число, определяющее количество цифр после десятичной запятой. По умолчанию используется столько цифр, сколько необходимо для указания числа.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Строка, представляющая объект {{jsxref("Global_Objects/Number", "Number")}} в экспоненциальной записи с одной цифрой перед десятичной запятой, округлённое до <code>fractionDigits</code> цифр после десятичной запятой. Если аргумент <code>fractionDigits</code> опущен, количество цифр после десятичной запятой по умолчанию устанавливается в количество цифр, необходимых для однозначного представления значения.</p> +<p>Если вы используете метод <code>toExponential()</code> с числовыми литералами и числовой литерал не имеет экспоненты и десятичной запятой, оставьте пробел перед точкой, предшествующей вызову метода для предотвращения интерпретации этой точки как десятичной запятой.</p> +<p>Если число имеет больше цифр, чем запрошено параметром <code>fractionDigits</code>, оно будет округлено к ближайшему числу, представляемому <code>fractionDigits</code> цифрами. Смотрите обсуждение округления в описании метода {{jsxref("Number.prototype.toFixed", "toFixed()")}}, которое так же применяется и к методу <code>toExponential()</code>.</p> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Если параметр <code>fractionDigits</code> слишком маленький или слишком большой. Значения между 0 и 20 включительно не будут порождать исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения.</dd> + <dt>{{jsxref("Global_Objects/TypeError", "TypeError")}}</dt> + <dd>Если этот метод вызывается на объекте, не являющимся объектом {{jsxref("Global_Objects/Number", "Number")}}.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toExponential" name="Example:_Using_toExponential">Пример: использование <code>toExponential</code></h3> +<pre class="brush: js">var numObj = 77.1234; + + +console.log(numObj.toExponential()); // выведет 7.71234e+1 +console.log(numObj.toExponential(4)); // выведет 7.7123e+1 +console.log(numObj.toExponential(2)); // выведет 7.71e+1 +console.log(77.1234.toExponential()); // выведет 7.71234e+1 +console.log(77 .toExponential()); // выведет 7.7e+1 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.6', 'Number.prototype.toExponential')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.toexponential', 'Number.prototype.toExponential')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Number.prototype.toFixed()")}}</li> + <li>{{jsxref("Number.prototype.toPrecision()")}}</li> + <li>{{jsxref("Number.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html b/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html new file mode 100644 index 0000000000..a7beb2afcc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tofixed/index.html @@ -0,0 +1,143 @@ +--- +title: Number.prototype.toFixed() +slug: Web/JavaScript/Reference/Global_Objects/Number/toFixed +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toFixed +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toFixed()</code></strong> форматирует число, используя запись с фиксированной запятой.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>numObj</var>.toFixed([<var>digits</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>digits</code></dt> + <dd>Необязательный параметр. Количество цифр после десятичной запятой; может быть значением между 0 и 20 включительно, хотя реализации могут поддерживать и больший диапазон значений. Если аргумент опущен, он считается равным 0.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Строка, представляющая <code>numObj</code>, не использующая экспоненциальную запись и содержащая ровно <code>digits</code> цифр после десятичной запятой. Число округляется при необходимости, а дробная часть дополняется нулями таким образом, чтобы иметь указанную длину. Если <code>numObj</code> больше или равно <code>1e+21</code>, этот метод просто вызывает метод {{jsxref("Number.prototype.toString()")}} и возвращает строку в экспоненциальной записи.</p> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Если параметр <code>digits</code> слишком маленький или слишком большой. Значения между 0 и 20 включительно не будут порождать исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения.</dd> + <dt>{{jsxref("Global_Objects/TypeError", "TypeError")}}</dt> + <dd>Если этот метод вызывается на объекте, не являющимся объектом {{jsxref("Global_Objects/Number", "Number")}}.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toFixed" name="Example:_Using_toFixed">Пример: использование <code>toFixed</code></h3> + +<pre class="brush: js">var numObj = 12345.6789; + +numObj.toFixed(); // Вернёт '12346': обратите внимание на округление, дробной части нет +numObj.toFixed(1); // Вернёт '12345.7': обратите внимание на округление +numObj.toFixed(6); // Вернёт '12345.678900': обратите внимание на дополнение нулями +(1.23e+20).toFixed(2); // Вернёт '123000000000000000000.00' +(1.23e-10).toFixed(2); // Вернёт '0.00' +2.34.toFixed(1); // Вернёт '2.3' +-2.34.toFixed(1); // Вернёт -2.3 (в соответствии с приоритетом операций, + // отрицательные числовые литералы не возвращают строку...) +(-2.34).toFixed(1); // Вернёт '-2.3' (...до тех пор, пока вы не заключите их в круглые скобки) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.5', 'Number.prototype.toFixed')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.tofixed', 'Number.prototype.toFixed')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.prototype.toExponential()")}}</li> + <li>{{jsxref("Number.prototype.toPrecision()")}}</li> + <li>{{jsxref("Number.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html b/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html new file mode 100644 index 0000000000..14260df0d5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tointeger/index.html @@ -0,0 +1,94 @@ +--- +title: Number.toInteger() +slug: Web/JavaScript/Reference/Global_Objects/Number/toInteger +tags: + - JavaScript + - Method + - Non-standard + - Number + - Obsolete +translation_of: Archive/Web/JavaScript/Number.toInteger +--- +<div>{{JSRef("Global_Objects", "Number")}} {{obsolete_header("33")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Number.toInteger()</code></strong> использовался для вычисления переданного значения и преобразования его в целое число, но его реализация была удалена.</p> +<p>Если целевым значением является {{jsxref("Global_Objects/NaN", "NaN")}}, {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, возвращается 0. Если целевым значением является <code>false</code>, возвращается 0, а если <code>true</code>, то 1.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Number.toInteger(<var>number</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>number</code></dt> + <dd>Значение, преобразуемое в целое число.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toInteger" name="Example:_Using_toInteger">Пример: использование <code>toInteger</code></h3> +<p>Вывод на некоторых тестовых значениях:</p> +<pre class="brush:js">Number.toInteger(0.1); // 0 +Number.toInteger(1); // 1 +Number.toInteger(Math.PI); // 3 +Number.toInteger(null); // 0 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<ul> + <li><code>Number.toInteger()</code> был частью черновика спецификации ECMAScript 6, но он был удалён 23 августа 2013 г. в 17 ревизии черновика.</li> +</ul> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>Firefox с версии 16 по версию 32</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>Firefox с версии 16 по версию 32</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>Объект {{jsxref("Global_Objects/Number", "Number")}}, которому принадлежит этот метод.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html new file mode 100644 index 0000000000..1c6048805a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tolocalestring/index.html @@ -0,0 +1,164 @@ +--- +title: Number.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +tags: + - Internationalization + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toLocaleString +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toLocaleString()</code></strong> возвращает строку с языко-зависимым представлением числа.</p> + +<p>Новые аргументы <code>locales</code> и <code>options</code> позволяют приложениям определять язык, чьё поведение и соглашения по форматированию которого оно хочет использовать. В старых реализациях, игнорирующих аргументы <code>locales</code> и <code>options</code>, используемая локаль и форма возвращённой строки целиком зависит от реализации.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>numObj</var>.toLocaleString([<var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Проверьте раздел <a href="#Browser_compatibility">Совместимость с браузерами</a>, чтобы увидеть, какие браузеры поддерживают аргументы <code>locales</code> и <code>options</code>, и <a href="#Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></a> для определения этой возможности.</p> + +<div class="note"> +<p><strong>Обратите внимание:</strong> API интернационализации ECMAScript, реализованное в Firefox 29, добавляет аргумент <code>locales</code> к методу <code>Number.toLocaleString()</code>. Если этот аргумент равен {{jsxref("Global_Objects/undefined", "undefined")}}, этот метод возвращает локализованные цифры на языке, определяемом ОС, в то время, как предыдущие версии Firefox возвращали цифры на английском языке. Это изменение было помечено, как регрессия, затрагивающая обратную совместимость, которая скоро может быть исправлена. ({{bug(999003)}})</p> +</div> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat', 'Parameters')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_toLocaleString" name="Example:_Using_toLocaleString">Пример: использование <code>toLocaleString</code></h3> + +<p>При базовом использовании без указания локали возвращается строка, отформатированная в соответствии с локалью и опциями по умолчанию.</p> + +<pre class="brush: js">var number = 3500; + +console.log(number.toLocaleString()); // Отобразит '3,500' в локали U.S. English +</pre> + +<h3 id="Example_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></h3> + +<p>Аргументы <code>locales</code> и <code>options</code> поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p> + +<pre class="brush: js">function toLocaleStringSupportsLocales() { + var number = 0; + try { + number.toLocaleString('i'); + } catch (e) { + return e.name === 'RangeError'; + } + return false; +} +</pre> + +<h3 id="Example_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Этот пример показывает некоторые локализованные числовые форматы. Для получения формата языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js">var number = 123456.789; + +// В Германии в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - точка +console.log(number.toLocaleString('de-DE')); +// → 123.456,789 + +// В России в качестве разделителя целой и дробной части используется запятая, а в качестве разделителя разрядов - пробел +console.log(number.toLocaleString('ru-RU')); +// → 123 456,789 + +// В большинстве арабоговорящих стран используют настоящие арабские цифры +console.log(number.toLocaleString('ar-EG')); +// → ١٢٣٤٥٦٫٧٨٩ + +// В Индии используют разделители для тысяч/лакх/крор +console.log(number.toLocaleString('en-IN')); +// → 1,23,456.789 + +// Ключ расширения nu запрашивает систему нумерации, например, китайскую десятичную +console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec')); +// → 一二三,四五六.七八九 + +// Если запрашиваемый язык может не поддерживаться, например +// балийский, откатываемся на запасной язык, в данном случае индонезийский +console.log(number.toLocaleString(['ban', 'id'])); +// → 123.456,789 +</pre> + +<h3 id="Example_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Результат, предоставляемый методом <code>toLocaleString()</code>, может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js">var number = 123456.789; + +// Запрашиваем формат валюты +console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' })); +// → 123.456,79 € + +console.log(number.toLocaleString('ru-RU', { style: 'currency', currency: 'RUB' })); +// → 123 456,79 ₽ + +// Японская йена не использует младшие единицы +console.log(number.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })) +// → ¥123,457 + +// Ограничиваем до трёх значащих цифр +console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 })); +// → 1,23,000 +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> + +<p>При форматировании большого количества чисел лучшим вариантом будет создание объекта {{jsxref("Global_Objects/NumberFormat", "NumberFormat")}} и использование функции, предоставляемой его свойством {{jsxref("NumberFormat.format")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.3', 'Number.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.tolocalestring', 'Number.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-13.2.1', 'Number.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Number.toLocaleString")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.prototype.toString()")}}</li> +</ul> + +<div id="gtx-trans" style="position: absolute; left: 47px; top: 4182px;"> +<div class="gtx-trans-icon"></div> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html b/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html new file mode 100644 index 0000000000..83157bf3d2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/toprecision/index.html @@ -0,0 +1,150 @@ +--- +title: Number.prototype.toPrecision() +slug: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toPrecision +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toPrecision()</code></strong> возвращает строку, представляющую объект {{jsxref("Global_Objects/Number", "Number")}} с указанной точностью.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>numObj</var>.toPrecision([<var>precision</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>precision</code></dt> + <dd>Необязательный параметр. Целое число, определяющее количество значащих цифр.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Строка, представляющая объект {{jsxref("Global_Objects/Number", "Number")}} в записи с фиксированной запятой или в экспоненциальной записи, округлённое до <code>precision</code> значащих цифр. Смотрите обсуждение округления в описании метода {{jsxref("Number.prototype.toFixed", "toFixed()")}}, которое таким же образом применяется и к методу <code>toPrecision()</code>.</p> + +<p>Если аргумент <code>precision</code> опущен, поведение аналогично методу {{jsxref("Number.prototype.toString()")}}. Если он не является целым числом, он будет округлён к ближайшему целому числу.</p> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Если параметр <code>precison</code> не находится в диапазоне от 1 до 100 (включительно), будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}. Также реализации могут поддерживать большие и меньшие значения. ECMA-262 требует точности только до 21 значащей цифры.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_toPrecision" name="Example:_Using_toPrecision">Пример: использование <code>toPrecision</code></h3> + +<pre class="brush: js">var numObj = 5.123456; + +console.log(numObj.toPrecision()); // выведет '5.123456' +console.log(numObj.toPrecision(5)); // выведет '5.1235' +console.log(numObj.toPrecision(2)); // выведет '5.1' +console.log(numObj.toPrecision(1)); // выведет '5'<code class="language-js"> + +numObj <span class="operator token">=</span> <span class="number token">0.000123;</span> + +console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>numObj<span class="punctuation token">.</span><span class="function token">toPrecision</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// выведет '0.000123'</span> +console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>numObj<span class="punctuation token">.</span><span class="function token">toPrecision</span><span class="punctuation token">(</span><span class="number token">5</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// выведет '0.00012300'</span> +console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>numObj<span class="punctuation token">.</span><span class="function token">toPrecision</span><span class="punctuation token">(</span><span class="number token">2</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// выведет '0.00012'</span> +console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>numObj<span class="punctuation token">.</span><span class="function token">toPrecision</span><span class="punctuation token">(</span><span class="number token">1</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// выведет '0.0001' </span></code> + +// Обратите внимание, что если заданного количества разрядов +// недостаточно для точного отображения целой части числа, +// значение может быть возвращено в экспоненциальной записи. +console.log((1234.5).toPrecision(2)); // выведет '1.2e+3' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.7', 'Number.prototype.toPrecision')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.toprecision', 'Number.prototype.toPrecision')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.prototype.toFixed()")}}</li> + <li>{{jsxref("Number.prototype.toExponential()")}}</li> + <li>{{jsxref("Number.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/tosource/index.html b/files/ru/web/javascript/reference/global_objects/number/tosource/index.html new file mode 100644 index 0000000000..780652ac86 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tosource/index.html @@ -0,0 +1,104 @@ +--- +title: Number.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Number/toSource +tags: + - JavaScript + - Method + - Non-standard + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toSource +--- +<div>{{JSRef("Global_Objects", "Number")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toSource()</code></strong> возвращает строку, представляющую исходный код объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>numObj</var>.toSource() +Number.toSource()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>toSource</code> возвращает следующие значения:</p> + +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Number", "Number")}} метод <code>toSource</code> возвращает следующую строку, указывающую, что исходный код недоступен: + + <pre class="brush: js">function Number() { + [native code] +} +</pre> + </li> + <li>Для экземпляров {{jsxref("Global_Objects/Number", "Number")}}, метод <code>toSource</code> возвращает строку, представляющую их исходный код.</li> +</ul> + +<p>Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/tostring/index.html b/files/ru/web/javascript/reference/global_objects/number/tostring/index.html new file mode 100644 index 0000000000..e3bfee048a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/tostring/index.html @@ -0,0 +1,148 @@ +--- +title: Number.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Number/toString +tags: + - JavaScript + - Method + - Number + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Number/toString +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toString()</code></strong> возвращает строковое представление указанного объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>numObj</var>.toString([<var>radix</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>radix</code></dt> + <dd>Необязательный параметр. Целое число между 2 и 36, определяющее основание системы счисления, используемой для представления числового значения.</dd> +</dl> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Если в метод <code>toString()</code> передано основание не в диапазоне от 2 до 36, будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объект {{jsxref("Global_Objects/Number", "Number")}} переопределяет метод {{jsxref("Object.prototype.toString", "toString")}}, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString")}}. Для объектов {{jsxref("Global_Objects/Number", "Number")}} метод <code>toString()</code> возвращает строку, представляющую объект в определённой системе счисления.</p> + +<p>Метод <code>toString()</code> разбирает свой первый аргумент и пытается вернуть строковое представление в системе счисления с указанным основанием. Для оснований, больших 10, при обозначении цифр, больших 9, используются буквы латинского алфавита. Например, для шестнадцатеричных чисел (основание 16), используются буквы с <code>a</code> по <code>f</code>.</p> + +<p>Если параметр <code>radix</code> не указан, предпочитаемое основание предполагается равным 10.</p> + +<p>Если число <code>numObj</code> отрицательно, его знак сохраняется. Это правило действует даже если основание равно 2; возвращённая строка является двоичным представлением положительного числа <code>numObj</code>, перед которым ставится знак <code>-</code>, а <strong>не</strong> дополнительным кодом числа <code>numObj</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toString" name="Example:_Using_toString">Пример: использование <code>toString</code></h3> + +<pre class="brush: js">var count = 10; + +console.log(count.toString()); // Выведет '10' +console.log((17).toString()); // Выведет '17' + +var x = 6; + +console.log(x.toString(2)); // Выведет '110' +console.log((254).toString(16)); // Выведет 'fe' + +console.log((-10).toString(2)); // Выведет '-1010' +console.log((-0xff).toString(2)); // Выведет '-11111111' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.2', 'Number.prototype.tostring')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.tostring', 'Number.prototype.tostring')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Number.prototype.toFixed()")}}</li> + <li>{{jsxref("Number.prototype.toExponential()")}}</li> + <li>{{jsxref("Number.prototype.toPrecision()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/number/valueof/index.html b/files/ru/web/javascript/reference/global_objects/number/valueof/index.html new file mode 100644 index 0000000000..33c284df26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/number/valueof/index.html @@ -0,0 +1,115 @@ +--- +title: Number.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Number/valueOf +tags: + - JavaScript + - Method + - Number + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Number/valueOf +--- +<div>{{JSRef("Global_Objects", "Number")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>valueOf()</code></strong> возвращает примитивное значение объекта {{jsxref("Global_Objects/Number", "Number")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>numObj</var>.valueOf()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_valueOf" name="Example:_Using_valueOf">Пример: использование <code>valueOf()</code></h3> +<pre class="brush: js">var numObj = new Number(10); +console.log(typeof numObj); // object + +var num = numObj.valueOf(); +console.log(num); // 10 +console.log(typeof num); // number +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.7.4.4', 'Number.prototype.valueOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-number.prototype.valueof', 'Number.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Number.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html new file mode 100644 index 0000000000..ecf5773d2e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__definegetter__/index.html @@ -0,0 +1,119 @@ +--- +title: Object.prototype.__defineGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__ +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>__defineGetter__()</code></strong> привязывает свойство объекта к функции, вызываемой каждый раз при поиске этого свойства.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__defineGetter__(<var>prop</var>, <var>func</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>prop</code></dt> + <dd>Строка, содержащая имя свойства, привязываемого к заданной функции.</dd> + <dt><code>func</code></dt> + <dd>Функция, привязываемая к поиску указанного свойства.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>__defineGetter__()</code> позволяет определить {{jsxref("Operators/get", "геттер", "", 1)}} на уже существующем объекте.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">// Нестандартный и устаревший способ + +var o = {}; +o.__defineGetter__('gimmeFive', function() { return 5; }); +console.log(o.gimmeFive); // 5 + + +// Способы, совместимые со стандартом + +// Использование оператора get +var o = { get gimmeFive() { return 5; } }; +console.log(o.gimmeFive); // 5 + + +// Использование Object.defineProperty() +var o = {}; +Object.defineProperty(o, 'gimmeFive', { + get: function() { + return 5; + } +}); +console.log(o.gimmeFive); // 5 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li> + <li>оператор {{jsxref("Operators/get", "get")}}</li> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li> + <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li> + <li><a href="ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B3.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2_.D0.B8_.D1.81.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2">Руководство по JS: определение геттеров и сеттеров</a></li> + <li><a href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">[Запись в блоге] Устаревание __defineGetter__ и __defineSetter__</a> (англ.)</li> + <li>{{bug(647423)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html new file mode 100644 index 0000000000..4d93278a6d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__definesetter__/index.html @@ -0,0 +1,132 @@ +--- +title: Object.prototype.__defineSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__defineSetter__ +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>__defineSetter__()</code></strong> привязывает свойство объекта к функции, вызываемой каждый раз при попытке установить значение этого свойства.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__defineSetter__(<var>prop</var>, <var>fun</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>prop</code></dt> + <dd>Строка, содержащая имя свойства, привязываемого к заданной функции.</dd> + <dt><code>fun</code></dt> + <dd>Функция, вызываемая при попытке установить значение указанному свойству. Эта функция имеет вид:</dd> + <dd> + <pre>function(<var>val</var>) { . . . }</pre> + <dl> + <dt><code>val</code></dt> + <dd>Псевдоним переменной, содержащей значение, которое пытаются присвоить свойству <code>prop</code>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>__defineSetter__()</code> позволяет определять {{jsxref("Operators/set", "сеттер", "", 1)}} на уже существующем объекте.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">// Нестандартный и устаревший способ + +var o = {}; +o.__defineSetter__('value', function(val) { this.anotherValue = val; }); +o.value = 5; +console.log(o.value); // undefined +console.log(o.anotherValue); // 5 + + +// Способ, совместимый со стандартом + +// Использование оператора set +var o = { set value(val) { this.anotherValue = val; } }; +o.value = 5; +console.log(o.value); // undefined +console.log(o.anotherValue); // 5 + +// Использование метода Object.defineProperty() +var o = {}; +Object.defineProperty(o, 'value', { + set: function(val) { + this.anotherValue = val; + } +}); +o.value = 5; +console.log(o.value); // undefined +console.log(o.anotherValue); // 5 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li> + <li>оператор {{jsxref("Operators/set", "set")}}</li> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li> + <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li> + <li><a href="ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B3.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2_.D0.B8_.D1.81.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2">Руководство по JS: определение геттеров и сеттеров</a></li> + <li><a href="http://whereswalden.com/2010/04/16/more-spidermonkey-changes-ancient-esoteric-very-rarely-used-syntax-for-creating-getters-and-setters-is-being-removed/">[Запись в блоге] Устаревание __defineGetter__ и __defineSetter__</a> (англ.)</li> + <li>{{bug(647423)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html new file mode 100644 index 0000000000..c08c8d1dde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__lookupgetter__/index.html @@ -0,0 +1,110 @@ +--- +title: Object.prototype.__lookupGetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupGetter__ +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>__lookupGetter__()</code></strong> возвращает функцию, привязанную к геттеру указанного свойства.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__lookupGetter__(<var>sprop</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>sprop</code></dt> + <dd>Строка, содержащая имя свойства, чей геттер должен быть возвращён.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если для свойства объекта был определён геттер, то на него невозможно сослаться через это свойство, поскольку оно ссылается на возвращаемое значение геттера. Метод <code>__lookupGetter__()</code> может использоваться для получения ссылки на геттер.</p> +<p>Сегодня это возможно сделать стандартным способом через {{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.getPrototypeOf()")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">var obj = { + get foo() { + return Math.random() > 0.5 ? 'foo' : 'bar'; + } +}; + + +// Нестандартный и устаревший способ +obj.__lookupGetter__('foo'); +// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; }) + + +// Способ, совместимый со стандартом +Object.getOwnPropertyDescriptor(obj, 'foo').get; +// (function() { return Math.random() > 0.5 ? 'foo' : 'bar'; }) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.__lookupSetter__()")}}</li> + <li>оператор {{jsxref("Operators/get", "get")}}</li> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.getPrototypeOf()")}}</li> + <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li> + <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B3.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2_.D0.B8_.D1.81.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2">Руководство по JS: определение геттеров и сеттеров</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html b/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html new file mode 100644 index 0000000000..1d9f91bf11 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/__lookupsetter__/index.html @@ -0,0 +1,110 @@ +--- +title: Object.prototype.__lookupSetter__() +slug: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +tags: + - Deprecated + - JavaScript + - Method + - Non-standard + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/__lookupSetter__ +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>__lookupSetter__()</code></strong> возвращает функцию, привязанную к сеттеру указанного свойства.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__lookupSetter__(<var>sprop</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>sprop</code></dt> + <dd>Строка, содержащая имя свойства, чей сеттер должен быть возвращён.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Если для свойства объекта был определён сеттер, то на него невозможно сослаться через это свойство, поскольку оно ссылается на возвращаемое значение сеттера. Метод <code>__lookupSetter__()</code> может использоваться для получения ссылки на сеттер.</p> +<p>Сегодня это возможно сделать стандартным способом через {{jsxref("Object.getOwnPropertyDescriptor()")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">var obj = { + set foo(value) { + return this.bar = value; + } +}; + + +// Нестандартный и устаревший способ +obj.__lookupSetter__('foo') +// (function(value) { this.bar = value; }) + + +// Способ, совместимый со стандартом +Object.getOwnPropertyDescriptor(obj, 'foo').set; +// (function(value) { this.bar = value; }) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.__lookupGetter__()")}}</li> + <li>оператор {{jsxref("Operators/set", "set")}}</li> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.getPrototypeOf()")}}</li> + <li>{{jsxref("Object.prototype.__defineGetter__()")}}</li> + <li>{{jsxref("Object.prototype.__defineSetter__()")}}</li> + <li><a href="ru/docs/Web/JavaScript/Guide_ru/Working_with_Objects#.D0.9E.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B3.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2_.D0.B8_.D1.81.D0.B5.D1.82.D1.82.D0.B5.D1.80.D0.BE.D0.B2">Руководство по JS: определение геттеров и сеттеров</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/assign/index.html b/files/ru/web/javascript/reference/global_objects/object/assign/index.html new file mode 100644 index 0000000000..f4c222cc26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/assign/index.html @@ -0,0 +1,216 @@ +--- +title: Object.assign() +slug: Web/JavaScript/Reference/Global_Objects/Object/assign +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/assign +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Object.assign()</strong></code> используется для копирования значений всех собственных перечисляемых свойств из одного или более исходных объектов в целевой объект. После копирования он возвращает целевой объект.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.assign(<var>target</var>, ...<var>sources</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Целевой объект.</dd> + <dt><code>sources</code></dt> + <dd>Исходные объекты.</dd> +</dl> + +<h3 id="Return_value" name="Return_value">Возвращаемое значение</h3> + +<p>Возвращается получившийся целевой объект.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Object.assign()</code> копирует из исходных объектов в целевой объект только <em>перечисляемые</em> и <em>собственные</em> свойства. Он использует внутренний метод <code>[[Get]]</code> на исходных объектах и внутренний метод <code>[[Set]]</code> на целевом объекте, так что он также вызывает геттеры и сеттеры. Именно поэтому он <em>присваивает</em> свойства вместо простого копирования или определения новых свойств. Это поведение может сделать метод непригодным для вливания новых свойств в прототип, если вливаемые исходные объекты содержат геттеры. Вместо него для копирования в прототипы определений свойств, включая признак их перечисляемости, следует использовать методы {{jsxref("Object.getOwnPropertyDescriptor()")}} и {{jsxref("Object.defineProperty()")}}.</p> + +<p>Копируются свойства типов как {{jsxref("String")}}, так и {{jsxref("Symbol")}}.</p> + +<p>В случае возникновения ошибки, например, когда свойство является незаписываемым, возбуждается исключение {{jsxref("TypeError")}}, а целевой объект <code>target</code> остаётся неизменным.</p> + +<p>Обратите внимание, что метод <code>Object.assign()</code> не выкидывает исключения, если в качестве исходных значений выступают {{jsxref("null")}} или {{jsxref("undefined")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Cloning_an_object" name="Example:_Cloning_an_object">Пример: клонирование объекта</h3> + +<pre class="brush: js">var obj = { a: 1 }; +var copy = Object.assign({}, obj); +console.log(copy); // { a: 1 } +</pre> + +<h3 id="Example:_Merging_objects" name="Example:_Merging_objects">Пример: слияние объектов</h3> + +<pre class="brush: js">var o1 = { a: 1 }; +var o2 = { b: 2 }; +var o3 = { c: 3 }; + +var obj = Object.assign(o1, o2, o3); +console.log(obj); // { a: 1, b: 2, c: 3 } +console.log(o1); // { a: 1, b: 2, c: 3 }, изменился и сам целевой объект. +</pre> + +<h3 id="Example:_Symbol_properties" name="Example:_Symbol_properties">Пример: копирование символьных свойств</h3> + +<pre class="brush: js">var o1 = { a: 1 }; +var o2 = { [Symbol('foo')]: 2 }; + +var obj = Object.assign({}, o1, o2); +console.log(obj); // { a: 1, [Symbol("foo")]: 2 } +</pre> + +<h3 id="Example:_Only_own_enumerable_properties" name="Example:_Only_own_enumerable_properties">Пример: наследуемые и неперечисляемые свойства не копируются</h3> + +<pre class="brush: js">var obj = Object.create({ foo: 1 }, { // foo является унаследованным свойством. + bar: { + value: 2 // bar является неперечисляемым свойством. + }, + baz: { + value: 3, + enumerable: true // baz является собственным перечисляемым свойством. + } +}); + +var copy = Object.assign({}, obj); +console.log(copy); // { baz: 3 } +</pre> + +<h3 id="Example:_Primitives" name="Example:_Primitives">Пример: примитивы оборачиваются в объекты</h3> + +<pre class="brush: js">var v1 = '123'; +var v2 = true; +var v3 = 10; +var v4 = Symbol('foo') + +var obj = Object.assign({}, v1, null, v2, undefined, v3, v4); +// Примитивы будут обёрнуты, а null и undefined - проигнорированы. +// Обратите внимание, что собственные перечисляемые свойства имеет только обёртка над строкой. +console.log(obj); // { "0": "1", "1": "2", "2": "3" } +</pre> + +<h3 id="Example:_Exceptions" name="Example:_Exceptions">Пример: исключения прерывают текущую задачу копирования</h3> + +<pre class="brush: js">var target = Object.defineProperty({}, 'foo', { + value: 1, + writable: false +}); // target.foo является свойством только-для-чтения + +Object.assign(target, { bar: 2 }, { foo2: 3, foo: 3, foo3: 3 }, { baz: 4 }); +// TypeError: "foo" is read-only +// При присваивании свойству target.foo выбрасывается исключение + +console.log(target.bar); // 2, первый исходный объект успешно скопировался. +console.log(target.foo2); // 3, первое свойство второго исходного объекта успешно скопировалось. +console.log(target.foo); // 1, здесь было выброшено исключение. +console.log(target.foo3); // undefined, метод assign завершился, свойство foo3 не скопировалось. +console.log(target.baz); // undefined, третий исходный объект так же не скопировался. +</pre> + +<h3 id="Example:_Copy_accessors" name="Example:_Copy_accessors">Пример: копирование методов доступа</h3> + +<pre class="brush: js">var obj = { + foo: 1, + get bar() { + return 2; + } +}; + +var copy = Object.assign({}, obj); +console.log(copy); +// { foo: 1, bar: 2 }, значением свойства copy.bar является значение, возвращаемое геттером obj.bar. + +// Такой вариант функции присваивания позволяет копировать методы доступа. +function myAssign(target, ...sources) { + sources.forEach(source => { + Object.defineProperties(target, Object.keys(source).reduce((descriptors, key) => { + descriptors[key] = Object.getOwnPropertyDescriptor(source, key); + return descriptors; + }, {})); + }); + return target; +} + +var copy = myAssign({}, obj); +console.log(copy); +// { foo:1, get bar() { return 2 } } +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот полифилл не поддерживает символьные свойства, поскольку ES5 всё равно не поддерживает символы:</p> + +<pre class="brush: js">if (!Object.assign) { + Object.defineProperty(Object, 'assign', { + enumerable: false, + configurable: true, + writable: true, + value: function(target, firstSource) { + 'use strict'; + if (target === undefined || target === null) { + throw new TypeError('Cannot convert first argument to object'); + } + + var to = Object(target); + for (var i = 1; i < arguments.length; i++) { + var nextSource = arguments[i]; + if (nextSource === undefined || nextSource === null) { + continue; + } + + var keysArray = Object.keys(Object(nextSource)); + for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) { + var nextKey = keysArray[nextIndex]; + var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + to[nextKey] = nextSource[nextKey]; + } + } + } + return to; + } + }); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.assign', 'Object.assign')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> </div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Object.assign")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.defineProperties()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/constructor/index.html b/files/ru/web/javascript/reference/global_objects/object/constructor/index.html new file mode 100644 index 0000000000..4db5ef3987 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/constructor/index.html @@ -0,0 +1,173 @@ +--- +title: Object.prototype.constructor +slug: Web/JavaScript/Reference/Global_Objects/Object/constructor +tags: + - JavaScript + - Object + - Property + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/constructor +--- +<div> + {{JSRef("Global_Objects", "Object")}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Возвращает ссылку на функцию {{jsxref("Global_Objects/Object", "Object")}}, создавшую прототип экземпляра. Обратите внимание, что значение этого свойства является ссылкой на саму функцию, а не строкой, содержащей имя функции. Для примитивных значений, вроде <code>1</code>, <code>true</code> или <code>"test"</code>, значение доступно только для чтения.</p> +<h2 id="Description" name="Description">Описание</h2> +<p>Все объекты наследуют свойство <code>constructor</code> из своего прототипа:</p> +<pre class="brush: js">var o = {}; +o.constructor === Object; // true + +var a = []; +a.constructor === Array; // true + +var n = new Number(3); +n.constructor === Number; // true +</pre> +<h2 id="Examples" name="Examples">Примеры</h2> +<h3 id="Example:_Displaying_the_constructor_of_an_object" name="Example:_Displaying_the_constructor_of_an_object">Пример: отображение конструктора объекта</h3> +<p>В следующем примере создаётся прототип <code>Tree</code> и объект этого типа <code>theTree</code>. Затем в примере отображается свойство <code>constructor</code> объекта <code>theTree</code>.</p> +<pre class="brush: js">function Tree(name) { + this.name = name; +} + +var theTree = new Tree("Красное дерево"); +console.log("theTree.constructor равен " + theTree.constructor); +</pre> +<p>Вывод примера будет следующим:</p> +<pre class="brush: js">theTree.constructor равен function Tree(name) { + this.name = name; +} +</pre> +<h3 id="Example:_Changing_the_constructor_of_an_object" name="Example:_Changing_the_constructor_of_an_object">Пример: изменение конструктора объекта</h3> +<p>Следующий пример показывает, как изменить конструктор значений общих объектов. Не затрагиваются только значения <code>true</code>, <code>1</code> и <code>"тест"</code>, поскольку они имеют родные конструкторы только для чтения. Этот пример показывает, что полагаться на свойство <code>constructor</code> объекта не всегда безопасно.</p> +<pre class="brush: js">function Type() {} + +var types = [ + new Array(), + [], + new Boolean(), + true, // останется неизменным + new Date(), + new Error(), + new Function(), + function() {}, + Math, + new Number(), + 1, // останется неизменным + new Object(), + {}, + new RegExp(), + /(?:)/, + new String(), + 'тест' // останется неизменным +]; + +for (var i = 0; i < types.length; i++) { + types[i].constructor = Type; + types[i] = [types[i].constructor, types[i] instanceof Type, types[i].toString()]; +} + +console.log(types.join('\n')); +</pre> +<p>Вывод примера будет следующим:</p> +<pre class="brush: js">function Type() {},false, +function Type() {},false, +function Type() {},false,false +function Boolean() { + [native code] +},false,true +function Type() {},false,Mon Sep 01 2014 16:03:49 GMT+0600 +function Type() {},false,Error +function Type() {},false,function anonymous() { + +} +function Type() {},false,function () {} +function Type() {},false,[object Math] +function Type() {},false,0 +function Number() { + [native code] +},false,1 +function Type() {},false,[object Object] +function Type() {},false,[object Object] +function Type() {},false,/(?:)/ +function Type() {},false,/(?:)/ +function Type() {},false, +function String() { + [native code] +},false,тест +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализовано в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.1', 'Object.prototype.constructor')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.constructor', 'Object.prototype.constructor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p> </p> diff --git a/files/ru/web/javascript/reference/global_objects/object/count/index.html b/files/ru/web/javascript/reference/global_objects/object/count/index.html new file mode 100644 index 0000000000..7308b40b0f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/count/index.html @@ -0,0 +1,83 @@ +--- +title: Object.prototype.__count__ +slug: Web/JavaScript/Reference/Global_Objects/Object/count +tags: + - JavaScript + - Object + - Obsolete + - Property + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Object.count +--- +<div>{{JSRef("Global_Objects", "Object")}} {{obsolete_header("2")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>__count__</code></strong> использовалось для хранения количества перечисляемых свойств объекта, но было удалено.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__count__</code></pre> + +<h2 id="Description" name="Description">Пример</h2> +<pre class="brush: js">{ 1: 1 }.__count__ // 1 +[].__count__ // 0 +[1].__count__ // 1 +[1, /* дыра */, 2, 3].__count__ // 3 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a class="external" href="http://whereswalden.com/2010/04/06/more-changes-coming-to-spidermonkey-the-magical-__count__-property-of-objects-is-being-removed/">[Запись в блоге] В SpiderMonkey грядут большие изменения: магическое свойство __count__ будет удалено</a> (англ.)</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/create/index.html b/files/ru/web/javascript/reference/global_objects/object/create/index.html new file mode 100644 index 0000000000..d17862e00d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/create/index.html @@ -0,0 +1,240 @@ +--- +title: Object.create() +slug: Web/JavaScript/Reference/Global_Objects/Object/create +tags: + - ECMAScript5 + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/create +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Object.create()</strong></code> создаёт новый объект с указанным прототипом и свойствами.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>Object.create(<var>proto</var>[, <var>propertiesObject</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>proto</code></dt> + <dd>Объект, который станет прототипом вновь созданного объекта.</dd> + <dt><code>propertiesObject</code></dt> + <dd>Необязательный параметр. Если указан и не равен {{jsxref("Global_Objects/undefined", "undefined")}}, должен быть объектом, чьи собственные перечисляемые свойства (то есть такие, которые определены на самом объекте, а не унаследованы по цепочке прототипов) указывают дескрипторы свойств, добавляемых в новый объект. Имена добавляемых свойств совпадают с именами свойств в этом объекте. Эти свойства соответствуют второму аргументу метода {{jsxref("Object.defineProperties()")}}.</dd> +</dl> + +<h3 id="Возвращаемые_значения">Возвращаемые значения</h3> + +<p>Новый объект с заданным прототипом и свойствами</p> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<p>Выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если параметр <code>proto</code> не является {{jsxref("Global_Objects/null", "null")}} или объектом (исключение составляют объекты-обертки примитивных типов).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example.3A_Classical_inheritance_with_Object.create" name="Example.3A_Classical_inheritance_with_Object.create()">Пример: классическое наследование с <code>Object.create()</code></h3> + +<p>Ниже показан пример использования <code>Object.create()</code> для имитации классического наследования. Это пример одиночного наследования, поскольку только его поддерживает JavaScript.</p> + +<pre class="brush: js notranslate">// Shape — суперкласс +function Shape() { + this.x = 0; + this.y = 0; +} + +// метод суперкласса +Shape.prototype.move = function(x, y) { + this.x += x; + this.y += y; + console.info('Фигура переместилась.'); +}; + +// Rectangle — подкласс +function Rectangle() { + Shape.call(this); // вызываем конструктор суперкласса +} + +// подкласс расширяет суперкласс +Rectangle.prototype = Object.create(Shape.prototype); +Rectangle.prototype.constructor = Rectangle; + +var rect = new Rectangle(); + +console.log('Является ли rect экземпляром Rectangle? ' + (rect instanceof Rectangle)); // true +console.log('Является ли rect экземпляром Shape? ' + (rect instanceof Shape)); // true +rect.move(1, 1); // выведет 'Фигура переместилась.' +</pre> + +<p>Если вы хотите унаследоваться от нескольких объектов, то это возможно сделать при помощи примесей.</p> + +<pre class="brush: js notranslate">function MyClass() { + SuperClass.call(this); + OtherSuperClass.call(this); +} + +MyClass.prototype = Object.create(SuperClass.prototype); // наследование +mixin(MyClass.prototype, OtherSuperClass.prototype); // примешивание + +MyClass.prototype.myMethod = function() { + // что-то делаем +}; +</pre> + +<p>Функция примешивания должна копировать функции из прототипа суперкласса в прототип подкласса, она должна предоставляться пользователем. Примером примеси может служить функция <a href="http://api.jquery.com/jQuery.extend/">jQuery.extend()</a>.</p> + +<h3 id="Example.3A_Using_propertiesObject_argument_with_Object.create" name="Example.3A_Using_propertiesObject_argument_with_Object.create()">Пример: использование аргумента <code>propertiesObject</code> с <code>Object.create()</code></h3> + +<pre class="brush: js notranslate">var o; + +// создаём объект с нулевым прототипом +o = Object.create(null); + + +o = {}; +// эквивалентно этому: +o = Object.create(Object.prototype); + + +// В этом примере мы создаём объект с несколькими свойствами. +// (Обратите внимание, что второй параметр отображает ключи на *дескрипторы свойств*.) +o = Object.create(Object.prototype, { + // foo является рядовым 'свойством-значением' + foo: { writable: true, configurable: true, value: 'привет' }, + // bar является свойством с геттером и сеттером (свойством доступа) + bar: { + configurable: false, + get: function() { return 10; }, + set: function(value) { console.log('Установка `o.bar` в', value); } +/* при использовании методов доступа ES5 наш код мог бы выглядеть так: + get function() { return 10; }, + set function(value) { console.log('Установка `o.bar` в', value); } */ + } +}); + + +function Constructor() {} +o = new Constructor(); +// эквивалентно этому: +o = Object.create(Constructor.prototype); +// Конечно, если бы в функции Constructor был бы реальный код инициализации, +// метод с Object.create() не был бы эквивалентным + + +// создаём новый объект, чей прототип является новым пустым объектом +// и добавляем простое свойство 'p' со значением 42 +o = Object.create({}, { p: { value: 42 } }); + +// по умолчанию свойства НЕ ЯВЛЯЮТСЯ записываемыми, перечисляемыми или настраиваемыми: +o.p = 24; +o.p; +// 42 + +o.q = 12; +for (var prop in o) { + console.log(prop); +} +// 'q' + +delete o.p; +// false + +// для определения свойства ES3 +o2 = Object.create({}, { + p: { + value: 42, + writable: true, + enumerable: true, + configurable: true + } +}); +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Для этого полифилла необходима правильно работающая Object.prototype.hasOwnProperty.</p> + +<pre class="brush: js notranslate">if (typeof Object.create != 'function') { + // Этапы производства ECMA-262, издание 5, 15.2.3.5 + // Ссылка: http://es5.github.io/#x15.2.3.5 + Object.create = (function() { + // Чтобы сэкономить память, используйте общий конструктор + function Temp() {} + + // делает безопасную ссылку на Object.prototype.hasOwnProperty + var hasOwn = Object.prototype.hasOwnProperty; + + return function (O) { + // 1. Если Type(O) не является Object or Null выдается исключениеTypeError. + if (typeof O != 'object') { + throw TypeError('Object prototype may only be an Object or null'); + } + + // 2. Пусть obj будет результатом создания нового объекта, как если бы + // выражение new Object(), где Object является стандартным встроенным + // конструктором с таким именем + // 3. Установите для внутреннего свойства [[Prototype]] объекта obj значение O. + Temp.prototype = O; + var obj = new Temp(); + Temp.prototype = null; // Давайте не будем держать случайные ссылки на О... + + // 4. Если аргумент Properties присутствует и не определен, добавляем + // собственные свойства к obj, как будто вызывая стандартную встроенную + // функцию Object.defineProperties с аргументами obj и + // Properties. + if (arguments.length > 1) { + // Object.defineProperties делает ToObject своим первым аргументом. + var Properties = Object(arguments[1]); + for (var prop in Properties) { + if (hasOwn.call(Properties, prop)) { + obj[prop] = Properties[prop]; + } + } + } + + // 5. Возращает obj + return obj; + }; + })(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.5', 'Object.create')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.create', 'Object.create')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.create")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.defineProperties()")}}</li> + <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li> + <li>Запись в блоге Джона Резига о <a href="http://ejohn.org/blog/objectgetprototypeof/">getPrototypeOf()</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html b/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html new file mode 100644 index 0000000000..30e95e65a1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/defineproperties/index.html @@ -0,0 +1,236 @@ +--- +title: Object.defineProperties() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperties +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Object.defineProperties()</strong></code> определяет новые или изменяет существующие свойства, непосредственно на объекте, возвращая этот объект.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.defineProperties(<var>obj</var>, <var>props</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, на котором определяются новые или изменяются существующие свойства.</dd> + <dt><code>props</code></dt> + <dd>Объект, чьи собственные перечисляемые свойства представляют собой дескрипторы для создаваемых или изменяемых свойств. Дескрипторы свойств обладают следующими дополнительными ключами: + <dl> + <dt><code>configurable</code></dt> + <dd>Равен <code>true</code> только в том случае, если тип этого дескриптора свойства может быть изменён и если свойство может быть удалено из содержащего его объекта.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> + <dt><code>enumerable</code></dt> + <dd>Равен <code>true</code> только в том случае, если это свойство можно увидеть через перечисление свойств содержащего его объекта.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> + <dt><code>value</code></dt> + <dd>Значение, ассоциированное со свойством. Может быть любым допустимым значением JavaScript (числом, объектом, функцией и т.д.).<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> + <dt><code>writable</code></dt> + <dd>Равен <code>true</code> только в том случае, если значение, ассоциированное со свойством, может быть изменено с помощью {{jsxref("Operators/Assignment_Operators", "оператора присваивания", "", 1)}}.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> + <dt><code>get</code></dt> + <dd>Функция, используемая как геттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет геттера. Возвращаемое значение функции будет использоваться как значение свойства.<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> + <dt><code>set</code></dt> + <dd>Функция, используемая как сеттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет сеттера. Функция принимает единственным аргументом новое значение, присваиваемое свойству.<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + + <p>Объект, переданный в функцию.</p> + </dt> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Object.defineProperties()</code>, по сути, определяет все свойства, соответствующие собственным свойствам объекта <code>props</code>, на объекте <code>obj</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Object.defineProperties(obj, { + 'property1': { + value: true, + writable: true + }, + 'property2': { + value: 'Hello', + writable: false + } + // и т.д. +}); +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Предполагается, что среда выполнения осталась нетронутой, все имена и свойства ссылаются на свои изначальные значения. Оригинальный метод <code>Object.defineProperties</code> почти полностью эквивалентен (смотрите комментарий в функции <code>isCallable</code>) следующей реализации на JavaScript:</p> + +<pre class="brush: js; highlight: [8];">function defineProperties(obj, properties) { + function convertToDescriptor(desc) { + function hasProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + } + + function isCallable(v) { + // NB: изменить при необходимости считать вызываемым что-то ещё, кроме функций. + return typeof v === 'function'; + } + + if (typeof desc !== 'object' || desc === null) { + throw new TypeError('bad desc'); + } + + var d = {}; + + if (hasProperty(desc, 'enumerable')) { + d.enumerable = !!obj.enumerable; + } + if (hasProperty(desc, 'configurable')) { + d.configurable = !!obj.configurable; + } + if (hasProperty(desc, 'value')) { + d.value = obj.value; + } + if (hasProperty(desc, 'writable')) { + d.writable = !!desc.writable; + } + if (hasProperty(desc, 'get')) { + var g = desc.get; + + if (!isCallable(g) && g !== 'undefined') { + throw new TypeError('bad get'); + } + d.get = g; + } + if (hasProperty(desc, 'set')) { + var s = desc.set; + if (!isCallable(s) && s !== 'undefined') { + throw new TypeError('bad set'); + } + d.set = s; + } + + if (('get' in d || 'set' in d) && ('value' in d || 'writable' in d)) { + throw new TypeError('identity-confused descriptor'); + } + + return d; + } + + if (typeof obj !== 'object' || obj === null) { + throw new TypeError('bad obj'); + } + + properties = Object(properties); + + var keys = Object.keys(properties); + var descs = []; + + for (var i = 0; i < keys.length; i++) { + descs.push([keys[i], convertToDescriptor(properties[keys[i]])]); + } + + for (var i = 0; i < descs.length; i++) { + Object.defineProperty(obj, descs[i][0], descs[i][1]); + } + + return obj; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.7', 'Object.defineProperties')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.defineproperties', 'Object.defineProperties')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Firefox (Gecko)</th> + <th>Chrome</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>{{CompatChrome("5")}} (предыдущие версии не проверялись)</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("11.60")}}</td> + <td>{{CompatSafari("5")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Firefox Mobile (Gecko)</th> + <th>Android</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatGeckoMobile("2")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatOperaMobile("11.50")}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li>{{jsxref("Object.keys()")}}</li> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html b/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html new file mode 100644 index 0000000000..41accdbee2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/defineproperty/index.html @@ -0,0 +1,399 @@ +--- +title: Object.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/defineProperty +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Object.defineProperty()</strong></code> определяет новое или изменяет существующее свойство непосредственно на объекте, возвращая этот объект.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.defineProperty(<var>obj</var>, <var>prop</var>, <var>descriptor</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, на котором определяется свойство.</dd> + <dt><code>prop</code></dt> + <dd>Имя определяемого или изменяемого свойства.</dd> + <dt><code>descriptor</code></dt> + <dd>Дескриптор определяемого или изменяемого свойства.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод позволяет точно добавлять или изменять свойства объекта. Обычное добавление свойств через присваивание создаёт свойства, которые можно увидеть через перечисление свойств (с помощью цикла {{jsxref("Statements/for...in", "for...in")}} или метода {{jsxref("Object.keys")}}), чьи значения могут быть изменены и которые могут быть {{jsxref("Operators/delete", "удалены", "", 1)}}. Этот же метод позволяет настроить эти дополнительные детали свойства.</p> + +<p>Дескрипторы свойств, присутствующие в объектах, бывают двух основных типов: дескрипторы данных и дескрипторы доступа. <em><dfn>Дескриптор данных</dfn></em> — это свойство, имеющее значение, которое может быть (а может и не быть) записываемым. <em><dfn>Дескриптор доступа</dfn></em> — это свойство, описываемое парой функций — геттером и сеттером. Дескриптор может быть только чем-то одним из этих двух типов; он не может быть одновременно обоими.</p> + +<p>И дескриптор данных, и дескриптор доступа являются объектами. Они обладают следующими обязательными ключами:</p> + +<dl> + <dt><code>configurable</code></dt> + <dd>Равен <code>true</code> только в том случае, если тип этого дескриптора свойства может быть изменён и если свойство может быть удалено из содержащего его объекта.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> + <dt><code>enumerable</code></dt> + <dd>Равен <code>true</code> только в том случае, если это свойство можно увидеть через перечисление свойств содержащего его объекта.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> +</dl> + +<p>Дескриптор данных также может содержать следующие дополнительные ключи:</p> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, ассоциированное со свойством. Может быть любым допустимым значением JavaScript (числом, объектом, функцией и т.д.).<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> + <dt><code>writable</code></dt> + <dd>Равен <code>true</code> только в том случае, если значение, ассоциированное со свойством, может быть изменено с помощью {{jsxref("Operators/Assignment_Operators", "оператора присваивания", "", 1)}}.<br> + <strong>Значение по умолчанию установлено в <code>false</code>.</strong></dd> +</dl> + +<p>Дескриптор доступа также может содержать следующие дополнительные ключи:</p> + +<dl> + <dt><code>get</code></dt> + <dd>Функция, используемая как геттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет геттера. Возвращаемое значение функции будет использоваться как значение свойства.<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> + <dt><code>set</code></dt> + <dd>Функция, используемая как сеттер свойства, либо {{jsxref("Global_Objects/undefined", "undefined")}}, если свойство не имеет сеттера. Функция принимает единственным аргументом новое значение, присваиваемое свойству.<br> + <strong>Значение по умолчанию установлено в {{jsxref("Global_Objects/undefined", "undefined")}}.</strong></dd> +</dl> + +<p>Имейте в виду, что эти ключи не обязательно должны принадлежать самому дескриптору свойства, если они унаследованы, они так же будут приниматься во внимание. Для сохранения этих ключей по умолчанию неизменными, вы можете заранее заморозить {{jsxref("Object.prototype")}}, явно определив все ключи, либо установить свойство {{jsxref("Object.prototype.__proto__", "__proto__")}} в {{jsxref("Global_Objects/null", "null")}}.</p> + +<pre class="brush:js">// Использование __proto__ +Object.defineProperty(obj, 'key', { + __proto__: null, // нет унаследованных свойств + value: 'static' // по умолчанию + // не перечисляется, + // не настраивается и + // не перезаписывается +}); + +// Явное определение свойства +Object.defineProperty(obj, 'key', { + enumerable: false, + configurable: false, + writable: false, + value: 'static' +}); + +// Переиспользование одного и того же объекта +function withValue(value) { + var d = withValue.d || ( + withValue.d = { + enumerable: false, + writable: false, + configurable: false, + value: null + } + ); + d.value = value; + return d; +} +// ... и ... +Object.defineProperty(obj, 'key', withValue('static')); + +// Если доступен метод freeze, предотвращаем добавление свойств +// value, get, set, enumerable, writable и configurable +// к прототипу Object +(Object.freeze || Object)(Object.prototype); +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<p>Если вы хотите посмотреть, как использовать метод <code>Object.defineProperty()</code> с синтаксисом <em>похожим-на-бинарные-флаги</em>, смотрите <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty/Additional_examples">дополнительные примеры</a>.</p> + +<h3 id="Example:_Creating_a_property" name="Example:_Creating_a_property">Пример: создание свойства</h3> + +<p>Если указанное свойство не существует в объекте, метод <code>Object.defineProperty()</code> создаст новое свойство по переданному описанию. Поля в дескрипторе могут быть опущены, в этом случае их значения будут значениями по умолчанию. Все логические поля будут по-умолчанию установлены в <code>false</code>. Поля <code>value</code>, <code>get</code> и <code>set</code> по умолчанию будут установлены в {{jsxref("Global_Objects/undefined", "undefined")}}. Свойство, определённое без атрибутов <code>get</code>/<code>set</code>/<code>value</code>/<code>writable</code> называется «общим», а дескриптор данных — «типовым».</p> + +<pre class="brush: js">var o = {}; // Создаём новый объект + +// Пример добавления свойства к объекту через defineProperty() +// с дескриптором данных +Object.defineProperty(o, 'a', { + value: 37, + writable: true, + enumerable: true, + configurable: true +}); +// Свойство 'a' существует в объекте o и имеет значение, равное 37 + +// Пример добавления свойства к объекту через defineProperty() +// с дескриптором доступа +var bValue = 38; +Object.defineProperty(o, 'b', { + get: function() { return bValue; }, + set: function(newValue) { bValue = newValue; }, + enumerable: true, + configurable: true +}); +o.b; // 38 +// Свойство 'b' существует в объекте o и имеет значение, равное 38 +// Значение свойства o.b теперь идентично значению bValue до тех пор, +// пока свойство o.b не будет переопределено + +// Вы не можете смешать два этих подхода: +Object.defineProperty(o, 'conflict', { + value: 0x9f91102, + get: function() { return 0xdeadbeef; } +}); +// Выкинет исключение TypeError: свойство value применимо только в +// дескрипторах данных, свойство get применимо только в дескрипторах +// доступа +</pre> + +<h3 id="Example:_Modifying_a_property" name="Example:_Modifying_a_property">Пример: изменение свойства</h3> + +<p>Если свойство уже существует, метод <code>Object.defineProperty()</code> попытается изменить свойство в соответствии со значениями в дескрипторе и текущим состоянием объекта. Если у старого дескриптора атрибут <code>configurable</code> был установлен в <code>false</code> (говорит, что свойство является «ненастраиваемым»), то никакие атрибуты, кроме атрибута <code>writable</code>, не смогут быть изменены. В этом случае так же невозможно переключаться между типами дескрипторов.</p> + +<p>Если свойство является ненастраиваемым, его атрибут <code>writable</code> может быть изменён только на значение <code>false</code>.</p> + +<p>При попытке изменить ненастраиваемые атрибуты свойства будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} (кроме случая изменения атрибута <code>writable</code>), даже в том случае, если текущее и новое значения идентичны.</p> + +<h4 id="Writable_attribute" name="Writable_attribute">Атрибут <code>writable</code></h4> + +<p>Если атрибут <code>writable</code> свойства установлен в <code>false</code>, свойство становится «незаписываемым». Ему невозможно будет присвоить новое значение.</p> + +<pre class="brush: js">var o = {}; // Создаём новый объект + +Object.defineProperty(o, 'a', { + value : 37, + writable : false +}); + +console.log(o.a); // Выведет 37 +o.a = 25; // Исключение не будет выброшено (будет выброшено только в + // строгом режиме, даже если значение будет тем же самым) +console.log(o.a); // Выведет 37. Присваивание не сработало. +</pre> + +<p>Как видно в этом примере, попытка записи в незаписываемое свойство его не изменило, но и исключение так же не было выброшено.</p> + +<h4 id="Enumerable_attribute" name="Enumerable_attribute">Атрибут <code>enumerable</code></h4> + +<p>Атрибут <code>enumerable</code> свойства определяет, просматривается ли свойство в цикле {{jsxref("Statements/for...in", "for...in")}} и методом {{jsxref("Object.keys()")}} или нет.</p> + +<pre class="brush: js">var o = {}; +Object.defineProperty(o, 'a', { value: 1, enumerable: true }); +Object.defineProperty(o, 'b', { value: 2, enumerable: false }); +// Атрибут enumerable по умолчанию установлен в false +Object.defineProperty(o, 'c', { value: 3 }); + +o.d = 4; // При создании свойства путём присваивания, атрибут enumerable + // по умолчанию установливается в true + +for (var i in o) { + console.log(i); +} +// Выведет 'a' и 'd' (порядок вывода не определён) + +Object.keys(o); // ['a', 'd'] + +o.propertyIsEnumerable('a'); // true +o.propertyIsEnumerable('b'); // false +o.propertyIsEnumerable('c'); // false +</pre> + +<h4 id="Configurable_attribute" name="Configurable_attribute">Атрибут <code>configurable</code></h4> + +<p>Атрибут <code>configurable</code> одновременно контролирует, может ли свойство быть удалено из объекта и могут ли быть изменены его атрибуты (кроме контроля изменения атрибута <code>writable</code>).</p> + +<pre class="brush: js">var o = {}; +Object.defineProperty(o, 'a', { + get: function() { return 1; }, + configurable: false +}); + +Object.defineProperty(o, 'a', { configurable: true }); // Выкинет TypeError +Object.defineProperty(o, 'a', { enumerable: true }); // Выкинет TypeError +Object.defineProperty(o, 'a', { set: function() {} }); // Выкинет TypeError (ранее свойство set дескриптора не было определено) +Object.defineProperty(o, 'a', { get: function() { return 1; } }); // Выкинет TypeError (даже несмотря на то, что get делает то же, что и раньше) +Object.defineProperty(o, 'a', { value: 12 }); // Выкинет TypeError + +console.log(o.a); // Выведет 1 +delete o.a; // Ничего не произойдёт +console.log(o.a); // Выведет 1 +</pre> + +<p>Если бы атрибут <code>configurable</code> объекта <code>o.a</code> был установлен в <code>true</code>, никакие ошибки не были бы выброшены и в конце свойство было бы удалено.</p> + +<h3 id="Example:_Adding_properties_and_default_values" name="Example:_Adding_properties_and_default_values">Пример: добавление свойств и значений по умолчанию</h3> + +<p>Важно понимать, как устанавливаются значения по умолчанию атрибутам свойств. Часто существует разница между простым назначением значения посредством точечной нотации и использованием метода <code>Object.defineProperty()</code>, что и показывает пример ниже.</p> + +<pre class="brush: js">var o = {}; + +o.a = 1; +// Эквивалентно записи: +Object.defineProperty(o, 'a', { + value: 1, + writable: true, + configurable: true, + enumerable: true +}); + + +// С другой стороны, +Object.defineProperty(o, 'a', { value: 1 }); +// эквивалентно записи: +Object.defineProperty(o, 'a', { + value: 1, + writable: false, + configurable: false, + enumerable: false +}); +</pre> + +<h3 id="Example:_Custom_setters_and_getters" name="Example:_Custom_setters_and_getters">Пример: пользовательские сеттеры и геттеры</h3> + +<p>Пример ниже показывает, как реализовать самоархивирующийся объект. При установке свойства <code>temperature</code> в массив <code>archive</code> попадает запись журнала.</p> + +<pre class="brush: js">function Archiver() { + var temperature = null; + var archive = []; + + Object.defineProperty(this, 'temperature', { + get: function() { + console.log('get!'); + return temperature; + }, + set: function(value) { + temperature = value; + archive.push({ val: temperature }); + } + }); + + this.getArchive = function() { return archive; }; +} + +var arc = new Archiver(); +arc.temperature; // 'get!' +arc.temperature = 11; +arc.temperature = 13; +arc.getArchive(); // [{ val: 11 }, { val: 13 }] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.6', 'Object.defineProperty')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.defineproperty', 'Object.defineProperty')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Firefox (Gecko)</th> + <th>Chrome</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>{{CompatChrome("5")}} (предыдущие версии не проверялись)</td> + <td>{{CompatIE("9")}} ({{CompatIE("8")}}, но только на объектах DOM с нестандартным поведением. <a href="#Internet_Explorer_8_specific_notes">Подробности смотрите ниже</a>.)</td> + <td>{{CompatOpera("11.60")}}</td> + <td>{{CompatSafari("5.1")}} ({{CompatSafari("5")}}, кроме объектов DOM)</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Firefox Mobile (Gecko)</th> + <th>Android</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatGeckoMobile("2")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatIE("9")}} и выше</td> + <td>{{CompatOperaMobile("11.50")}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h3 id="Redefining_the_length_property_of_an_Array_object" name="Redefining_the_length_property_of_an_Array_object">Переопределение свойства <code>length</code> на объекте <code>Array</code></h3> + +<p>На массивах возможно переопределить свойство {{jsxref("Array.length", "length")}}, при условии соблюдения обычных ограничений на переопределение. (Изначально свойство {{jsxref("Array.length", "length")}} является ненастраиваемым, неперечисляемым и записываемым. Таким образом, на неизменнённом массиве возможно изменить значение свойства {{jsxref("Array.length", "length")}} либо сделать его незаписываемым. Его перечисляемость или настраиваемость изменить нельзя, так же как и его записываемость, если оно сделано не записываемым.) Однако не все браузеры поддерживают такое переопределение.</p> + +<p>Firefox с версии 4 по версию 22 бросает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} на любую попытку (вне зависимости от того, разрешена ли она или нет) переопределить свойство {{jsxref("Array.length", "length")}} массива.</p> + +<p>Версии Chrome, реализующие метод <code>Object.defineProperty()</code>, в некоторых случаях игнорируют значение <code>length</code> отличное от текущего значения свойства {{jsxref("Array.length", "length")}} массива. В некоторых случаях изменение записываемости свойства просто не работает без каких-либо сообщений об ошибках (и выбрасываемых исключений). Также, в связи с вышесказанным, некоторые методы изменения массива, вроде метода {{jsxref("Array.prototype.push")}}, не обращают внимания на незаписываемое свойство {{jsxref("Array.length", "length")}}.</p> + +<p>Версии Safari, реализующие метод <code>Object.defineProperty()</code>, игнорируют значение <code>length</code>, отличное от текущего значения свойства {{jsxref("Array.length", "length")}} массива, и попытка изменить записываемость свойства выполнится без ошибок, но на самом деле записываемость свойства не изменится.</p> + +<p>Только Internet Explorer 9 и выше, а так же Firefox 23 и выше, по-видимому, полностью и правильно реализуют переопределение свойства {{jsxref("Array.length", "length")}} массивов. В настоящее время не стоит полагаться на работу переопределения свойства {{jsxref("Array.length", "length")}} массива, или что оно работает определённым образом. И даже если вы <em>можете</em> положиться на это, <a href="http://whereswalden.com/2013/08/05/new-in-firefox-23-the-length-property-of-an-array-can-be-made-non-writable-but-you-shouldnt-do-it/">есть действительно веская причина не делать этого</a>.</p> + +<h3 id="Internet_Explorer_8_specific_notes" name="Internet_Explorer_8_specific_notes">Примечания по Internet Explorer 8</h3> + +<p>Реализация метода <code>Object.defineProperty()</code> в Internet Explorer 8 предусматривает, что он может быть <a class="external" href="http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx">использован только для объектов DOM</a>. Нужно также отметить несколько моментов:</p> + +<ul> + <li>Попытка использовать <code>Object.defineProperty()</code> на родных объектах приведёт к ошибке.</li> + <li>Атрибуты свойств должны быть равны определённым значениям. Атрибуты <code>configurable</code>, <code>enumerable</code> и <code>writable</code> дескриптора данных должны содержать значения <code>true</code>, <code>true</code> и <code>true</code>, а атрибуты <code>configurable</code> и <code>enumerable</code> дескриптора доступа должны содержать значения <code>true</code> и <code>false</code> соответственно.(?) Любая попытка присвоить атрибутам другие значения приведёт к ошибке.</li> + <li>Для того, чтобы изменить конфигурацию свойства, сначала его нужно удалить. Если свойство не будет удалено, оно останется в том же виде, что и до попытки изменения его конфигурации.</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> + <li>{{jsxref("Object.defineProperties()")}}</li> + <li>{{jsxref("Object.propertyIsEnumerable()")}}</li> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li> + <li>{{jsxref("Object.prototype.watch()")}}</li> + <li>{{jsxref("Object.prototype.unwatch()")}}</li> + <li>{{jsxref("Operators/get", "get")}}</li> + <li>{{jsxref("Operators/set", "set")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty/Additional_examples">Дополнительные примеры по <code>Object.defineProperty()</code></a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/entries/index.html b/files/ru/web/javascript/reference/global_objects/object/entries/index.html new file mode 100644 index 0000000000..505065970b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/entries/index.html @@ -0,0 +1,121 @@ +--- +title: Object.entries() +slug: Web/JavaScript/Reference/Global_Objects/Object/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Object/entries +--- +<div>{{JSRef}}</div> + +<p><code><strong>Object.entries()</strong></code> метод возвращает массив собственных перечисляемых свойств указанного объекта в формате <code>[key, value]</code>, в том же порядке, что и в цикле {{jsxref("Statements/for...in", "for...in")}} (разница в том, что for-in перечисляет свойства из цепочки прототипов). Порядок элементов в массиве который возвращается <code><strong>Object.entries()</strong></code> не зависит от того как объект обьявлен. Если существует необходимость в определенном порядке, то массив должен быть отсортирован до вызова метода, например <code>Object.entries(obj).sort((a, b) => a[0] - b[0]);</code>.</p> + +<p>{{EmbedInteractiveExample("pages/js/object-entries.html")}}</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>Object.entries(<var>obj</var>)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чьи перечислимые свойства будут возвращены в виде массива <code>[key, value]</code>.</dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + </dt> + <dd>Массив перечислений собственных свойств объекта с парами <code>[key, value]</code>.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p><code>Object.entries()</code> возвращает массив, элементами которого являются массивы, соответсвующие перечисляемому свойству пары <code>[key, value],</code> найденной прямо в <code>object</code>. Порядок свойств тот же, что и при прохождении циклом по свойствам объекта вручную.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js notranslate">var obj = { foo: "bar", baz: 42 }; +console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ] + +// массив как объект +var obj = { 0: 'a', 1: 'b', 2: 'c' }; +console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ] + +// массив как объект c random сортировкой ключей +var an_obj = { 100: 'a', 2: 'b', 7: 'c' }; +console.log(Object.entries(an_obj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ] + +// getFoo is property which isn't enumerable +var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } }); +my_obj.foo = "bar"; +console.log(Object.entries(my_obj)); // [ ['foo', 'bar'] ] + +// non-object argument will be coerced to an object +console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]</pre> + +<pre class="notranslate"><code>// returns an empty array for any primitive type, since primitives have no own properties +console.log(Object.entries(100)); // [ ] + +// iterate through key-value gracefully +const obj = { a: 5, b: 7, c: 9 }; +for (const [key, value] of Object.entries(obj)) { + console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" +} + +// Or, using array extras +Object.entries(obj).forEach(([key, value]) => { + console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" +});</code></pre> + +<h3 id="Преобразование_Object_в_Map">Преобразование <code>Object</code> в <code>Map</code></h3> + +<p>Конструктор {{jsxref("Map", "new Map()")}} принимает повторение <em>значений</em>. С <code>Object.entries </code>вы легко можете преобразовать {{jsxref("Object")}} в {{jsxref("Map")}}:</p> + +<pre class="brush: js notranslate">var obj = { foo: "bar", baz: 42 }; +var map = new Map(Object.entries(obj)); +console.log(map); // Map { foo: "bar", baz: 42 }</pre> + +<h3 id="Итерация_по_Object">Итерация по <code>Object</code></h3> + +<p>Используя <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#%D0%A0%D0%B0%D0%B7%D0%B1%D0%BE%D1%80_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D0%BE%D0%B2">метод Разбора Массивов</a> Вы можете легко итерировать объекты.</p> + +<pre class="notranslate"><code>const obj = { foo: 'bar', baz: 42 }; +Object.entries(obj).forEach(([key, value]) => console.log(`${key}: ${value}`)); // "foo: bar", "baz: 42"</code></pre> + +<h2 id="Полифил">Полифил</h2> + +<p>Чтобы добавить поддержку <code>Object.entries</code> в более старых окружениях, которые не поддерживают его нативно, вы можете найти полифил в <a href="https://github.com/tc39/proposal-object-values-entries">tc39/proposal-object-values-entries</a> или <a href="https://github.com/es-shims/Object.entries">es-shims/Object.entries</a> репозиториях.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.entries', 'Object.entries')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Пока не включена в официальный проект. Смотрите это <a href="https://github.com/tc39/proposal-object-values-entries">предложение stage3</a> для проекта текста текущей спецификации</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div> +<div class="hidden">Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</div> + +<p>{{Compat("javascript.builtins.Object.entries")}}</p> +</div> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">Enumerability and ownership of properties</a></li> + <li>{{jsxref("Object.keys()")}}</li> + <li>{{jsxref("Object.values()")}} {{experimental_inline}}</li> + <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/eval/index.html b/files/ru/web/javascript/reference/global_objects/object/eval/index.html new file mode 100644 index 0000000000..e6b8e3668f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/eval/index.html @@ -0,0 +1,81 @@ +--- +title: Object.prototype.eval() +slug: Web/JavaScript/Reference/Global_Objects/Object/eval +tags: + - JavaScript + - Method + - Object + - Obsolete + - Prototype +translation_of: Archive/Web/JavaScript/Object.eval +--- +<div> + {{JSRef("Global_Objects", "Object")}} {{obsolete_header}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>Object.eval()</strong></code> использовался для вычисления строки JavaScript-кода в контексте объекта, однако, был удалён.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.eval(<var>string</var>)</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt> + <code>string</code></dt> + <dd> + Любая строка, представляющая выражение, инструкцию или последовательность инструкций JavaScript. Выражение может содержать переменые и свойства существующих объектов.</dd> +</dl> +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>eval</code> больше не используется как метод объекта. Вместо него используйте глобальную функцию {{jsxref("Global_Objects/eval", "eval()")}}.</p> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Global_Objects/eval", "eval()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/freeze/index.html b/files/ru/web/javascript/reference/global_objects/object/freeze/index.html new file mode 100644 index 0000000000..bd987a2915 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/freeze/index.html @@ -0,0 +1,165 @@ +--- +title: Object.freeze() +slug: Web/JavaScript/Reference/Global_Objects/Object/freeze +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/freeze +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<p>Метод <code><strong>Object.freeze()</strong></code> замораживает объект: это значит, что он предотвращает добавление новых свойств к объекту, удаление старых свойств из объекта и изменение существующих свойств или значения их атрибутов перечисляемости, настраиваемости и записываемости. В сущности, объект становится эффективно неизменным. Метод возвращает замороженный объект.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.freeze(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект для заморозки.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Замороженный объект</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>К замороженному объекту нельзя добавить никаких свойств, так же как и удалить свойства из замороженного объекта. Любые попытки сделать это потерпят неудачу, либо молча, либо выбросив исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Functions_and_function_scope/Strict_mode", "строгом режиме", "", 1)}}).</p> + +<p>Значения свойств-данных не могут быть изменены. Свойства-доступы (геттеры и сеттеры) работают как положено (и всё ещё создают иллюзию, что вы изменили значение). Обратите внимание, что значения, являющиеся объектами, всё ещё могут быть изменены, если только они так же не были заморожены.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var obj = { + prop: function() {}, + foo: 'bar' +}; + +// Можно добавлять новые свойства, существующие свойства можно изменять или удалять +obj.foo = 'baz'; +obj.lumpy = 'woof'; +delete obj.prop; + +// Оба объекта эквивалентны, а также возвращаемый объект будет заморожен. +// Необязательно сохранять возвращаемый объект при заморозке оригинала. +var o = Object.freeze(obj); + +o === obj; // true +Object.isFrozen(obj); // === true; + +// Теперь все изменения будут заканчиваться с ошибкой +obj.foo = 'quux'; // тихо ничего не делает +obj.quaxxor = 'the friendly duck'; // тихо не добавляет свойство + +// ...а в строгом режиме такие попытки вызовут выброс исключения TypeError +function fail() { + 'use strict'; + obj.foo = 'sparky'; // выбросит TypeError + delete obj.quaxxor; // выбросит TypeError + obj.sparky = 'arf'; // выбросит TypeError +} + +fail(); + +// Попытки внести изменения через метод Object.defineProperty также выбросят исключение +Object.defineProperty(obj, 'ohai', { value: 17 }); // выбросит TypeError +Object.defineProperty(obj, 'foo', { value: 'eit' }); // выбросит TypeError +</pre> + +<p>Следующий пример показывает, что значения-объекты в замороженном объекте могут быть изменены (заморозка неглубокая).</p> + +<pre class="brush: js">obj = { + internal: {} +}; + +Object.freeze(obj); +obj.internal.a = 'значениеA'; + +obj.internal.a // 'значениеA' + +// Чтобы сделать объект obj полностью неизменяемым, замораживаем каждый объект в объекте obj. +// Для этого воспользуемся этой функцией. +function deepFreeze(obj) { + + // Получаем имена свойств из объекта obj + var propNames = Object.getOwnPropertyNames(obj); + + // Замораживаем свойства для заморозки самого объекта + propNames.forEach(function(name) { + var prop = obj[name]; + + // Заморозка свойства prop, если оно объект + if (typeof prop == 'object' && prop !== null) + deepFreeze(prop); + }); + + // Заморозить сам объект obj (ничего не произойдёт, если он уже заморожен) + return Object.freeze(obj); +} + +obj2 = { + internal: {} +}; + +deepFreeze(obj2); +obj2.internal.a = 'другоеЗначение'; +obj2.internal.a; // undefined +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5 если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES2015 такой аргумент будет рассматриваться, как простой замороженный объект и метод его просто вернёт.</p> + +<pre class="brush: js">> Object.freeze(1) +TypeError: 1 is not an object // код ES5 + +> Object.freeze(1) +1 // код ES2015 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.9', 'Object.freeze')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-object.freeze', 'Object.freeze')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.freeze', 'Object.freeze')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.freeze")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.isFrozen()")}}</li> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.isSealed()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html new file mode 100644 index 0000000000..6935cd3ec6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/fromentries/index.html @@ -0,0 +1,108 @@ +--- +title: Object.fromEntries() +slug: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +tags: + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/fromEntries +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Object.fromEntries()</strong></code> преобразует список пар ключ-значение в объект.</p> + +<div>{{EmbedInteractiveExample("pages/js/object-fromentries.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на извлечение.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Object.fromEntries(<var>iterable</var>);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Итерируемый объект, такой как {{jsxref("Array")}} или {{jsxref("Map")}} или другие объекты, реализующие <a href="/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterable_protocol">iterable протокол</a>.</dd> +</dl> + +<h3 id="Возращаемое_значение">Возращаемое значение</h3> + +<p>Новый объект, свойства которого задаются записями iterable.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>Object.fromEntries()</code> принимает список пар ключ-значение и возвращает новый объект, свойства которого задаются этими записями. Ожидается, что аргумент <em>iterable </em>будет объектом, который реализует метод <code>@@iterator</code>, который возращает объект итератора, который создает двуэлементный массивоподобный объект, первый элемент которого является значением, которое будет использоваться в качестве ключа свойства, а второй элемент — значением связанного с этим ключом свойства.</p> + +<p><code>Object.fromEntries()</code> выполняет процедуру, обратную {{jsxref("Object.entries()")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Преобразование_Map_в_Object">Преобразование <code>Map</code> в <code>Object</code></h3> + +<p>С <code>Object.fromEntries</code> вы можете преобразовать {{jsxref("Map")}} в {{jsxref("Object")}}:</p> + +<pre class="brush: js">const map = new Map([ ['foo', 'bar'], ['baz', 42] ]); +const obj = Object.fromEntries(map); +console.log(obj); // { foo: "bar", baz: 42 } +</pre> + +<h3 id="Преобразование_Array_в_Object">Преобразование <code>Array</code> в <code>Object</code></h3> + +<p>С <code>Object.fromEntries</code> вы можете преобразовать {{jsxref("Array")}} в {{jsxref("Object")}}:</p> + +<pre class="brush: js">const arr = [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]; +const obj = Object.fromEntries(arr); +console.log(obj); // { 0: "a", 1: "b", 2: "c" } +</pre> + +<h3 id="Трансформации_объектов">Трансформации объектов</h3> + +<p>С <code>Object.fromEntries</code>, обратным ему методом {{jsxref("Object.entries()")}} и <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Methods_2">методами манипулирования массивами</a> вы можете преобразовывать объекты следующим образом:</p> + +<pre class="brush: js">const object1 = { a: 1, b: 2, c: 3 }; + +const object2 = Object.fromEntries( + Object.entries(object1) + .map(([ key, val ]) => [ key, val * 2 ]) +); + +console.log(object2); +// { a: 2, b: 4, c: 6 }</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.fromentries', 'Object.fromEntries')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Изначальное определение в ECMAScript 2019.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</div> + +<p>{{Compat("javascript.builtins.Object.fromEntries")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.entries()")}}</li> + <li>{{jsxref("Object.keys()")}}</li> + <li>{{jsxref("Object.values()")}}</li> + <li>{{jsxref("Map.prototype.entries()")}}</li> + <li>{{jsxref("Map.prototype.keys()")}}</li> + <li>{{jsxref("Map.prototype.values()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html b/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html new file mode 100644 index 0000000000..1947d51f73 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getnotifier/index.html @@ -0,0 +1,47 @@ +--- +title: Object.getNotifier() +slug: Web/JavaScript/Reference/Global_Objects/Object/getNotifier +translation_of: Archive/Web/JavaScript/Object.getNotifier +--- +<div>{{JSRef}} {{obsolete_header}}</div> + +<p>Метод <strong><code>Object.getNotifer()</code></strong> использовался для создания объекта, который позволяет синтетически инициировать изменение, но не рекомендуется и удаляется в браузерах.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Object.getNotifier(<em>obj</em>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект для извлечения уведомителя.</dd> +</dl> + +<h3 id="Возращаемое_значение">Возращаемое значение</h3> + +<p>Объект увидомителя, связанный с объектом, передаваемым в функцию.</p> + +<h2 id="Описание">Описание</h2> + +<p>Уведомитель используется для запуска искусственных изменений, которые будут обнаружены <code>Object.observe()</code>.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification.</a></p> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</div> + +<p>{{Compat("javascript.builtins.Object.getNotifier")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> + <li>{{jsxref("Object.unobserve()")}} {{obsolete_inline}}</li> + <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html new file mode 100644 index 0000000000..94c1bce570 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptor/index.html @@ -0,0 +1,148 @@ +--- +title: Object.getOwnPropertyDescriptor() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +tags: + - ECMAScript5 + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>Object.getOwnPropertyDescriptor()</strong></code> возвращает дескриптор свойства для <dfn>собственного свойства</dfn> (то есть такого, которое находится непосредственно в объекте, а не получено через цепочку прототипов) переданного объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Object.getOwnPropertyDescriptor(<var>obj</var>, <var>prop</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>obj</code></dt> + <dd>Объект, в котором ищется свойство.</dd> + <dt><code>prop</code></dt> + <dd>Имя свойства, чьё описание будет возвращено.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> +<p>Дескриптор переданного свойства, если оно присутствует в объекте, либо {{jsxref("undefined")}}, если его там нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Этот метод позволяет просмотреть точное описание свойства. <dfn>Свойство</dfn> в JavaScript состоит из строкового имени и дескриптора свойства. Подробная информация о типах дескрипторов свойств и их атрибутах может быть найдена в описании метода {{jsxref("Object.defineProperty()")}}.</p> +<p><dfn>Дескриптор свойства</dfn> — это запись с некоторыми из следующих атрибутов:</p> +<dl> + <dt><code>value</code></dt> + <dd>Значение, ассоциированное со свойством (только в дескрипторе данных).</dd> + <dt><code>writable</code></dt> + <dd>Значение <code>true</code>, если значение, ассоциированное со свойством, может быть изменено, иначе <code>false</code> (только в дескрипторе данных).</dd> + <dt><code>get</code></dt> + <dd>Функция, возвращающая значение свойства, либо {{jsxref("undefined")}}, если такая функция отсутствует (только в дескрипторе доступа).</dd> + <dt><code>set</code></dt> + <dd>Функция, изменяющая значение свойства, либо {{jsxref("undefined")}}, если такая функция отсутствует (только в дескрипторе доступа).</dd> + <dt><code>configurable</code></dt> + <dd>Значение <code>true</code>, если тип дескриптора этого свойства может быть изменён и если свойство может быть удалено из содержащего его объекта, иначе <code>false</code>.</dd> + <dt><code>enumerable</code></dt> + <dd>Значение <code>true</code>, если это свойство доступно при перечислении свойств содержащего его объекта, иначе <code>false</code>.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">var o, d; + +o = { get foo() { return 17; } }; +d = Object.getOwnPropertyDescriptor(o, 'foo'); +// d равен { configurable: true, enumerable: true, get: /*функция геттера*/, set: undefined } + +o = { bar: 42 }; +d = Object.getOwnPropertyDescriptor(o, 'bar'); +// d равен { configurable: true, enumerable: true, value: 42, writable: true } + +o = {}; +Object.defineProperty(o, 'baz', { value: 8675309, writable: false, enumerable: false }); +d = Object.getOwnPropertyDescriptor(o, 'baz'); +// d равен { value: 8675309, writable: false, enumerable: false, configurable: false } +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> +<p>В ES5, если первый аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет сначала приведён к объекту.</p> +<pre class="brush: js">> Object.getOwnPropertyDescriptor('foo', 0) +TypeError: "foo" is not an object // код ES5 + +> Object.getOwnPropertyDescriptor('foo', 0) +{ configurable: false, enumerable: true, value: 'f', writable: false } // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.3', 'Object.getOwnPropertyDescriptor')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.getownpropertydescriptor', 'Object.getOwnPropertyDescriptor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("5")}}</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>{{CompatIE("8")}}</td> + <td>{{CompatOpera("12 alpha")}}</td> + <td>{{CompatSafari("5")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.defineProperty()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html new file mode 100644 index 0000000000..3b1c545f1b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertydescriptors/index.html @@ -0,0 +1,115 @@ +--- +title: Object.getOwnPropertyDescriptors() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Object.getOwnPropertyDescriptors()</strong></code> возвращает все собственные дескрипторы свойств данного объекта.</p> + +<div>{{EmbedInteractiveExample("pages/js/object-getownpropertydescriptors.html")}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Object.getOwnPropertyDescriptors(<var>obj</var>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, для которого нужно получить все собственные дескрипторы свойств.</dd> +</dl> + +<h3 id="Возращаемое_значение">Возращаемое значение</h3> + +<p>Объект, содержащий все собственные дескрипторы свойств объекта. Может быть пустой объект, если нет свойств.</p> + +<h2 id="Описание">Описание</h2> + +<p>Этот метод позволяет изучить точное описание всех собственных свойств объекта. Свойство в JavaScript состоит из строкового имени или {{jsxref("Symbol")}} и свойства дескриптора. Дополнительную информацию о типах свойств дескрипторов и их атрибутах можно найти в {{jsxref("Object.defineProperty()")}}.</p> + +<p>Свойство дескриптора это запись с некоторыми из следующих атрибутов:</p> + +<dl> + <dt><code>value</code></dt> + <dd>Значение, связанное со свойством (только дескрипторы данных).</dd> + <dt><code><strong>writable</strong></code></dt> + <dd><code>true</code> тогда и только тогда когда значение, связанное со свойством, может быть изменено (только дескрипторы данных).</dd> + <dt><code>get</code></dt> + <dd>Функция, которая служит в качестве получателя для свойства, или {{jsxref("undefined")}} если нет получателя (только дескрипторы доступа).</dd> + <dt><code>set</code></dt> + <dd>Функция, которая служит установщиком для свойства, или {{jsxref("undefined")}} если установщика нет (только дескрипторы доступа).</dd> + <dt><code>configurable</code></dt> + <dd><code>true</code> тогда и только тогда, когда тип этого свойства дескриптора может быть изменен, и если свойство может быть удалено из соответствующего объекта.</dd> + <dt><code>enumerable</code></dt> + <dd><code>true</code> тогда и только тогда, когда это свойство отображается при перечислении свойств соответствующего объекта. + <p> </p> + </dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Создание_поверхностного_клона">Создание поверхностного клона</h3> + +<p>В то время как метод {{jsxref("Object.assign()")}} будет только копировать перечисяемые и собственные свойствва из исходного объекат в целевой объект, вы можете использовать этот метод и {{jsxref("Object.create()")}} для поверхностного копирования между двумя неизвестными объектами:</p> + +<pre class="brush: js">Object.create( + Object.getPrototypeOf(obj), + Object.getOwnPropertyDescriptors(obj) +); +</pre> + +<h3 id="Создание_подкласса">Создание подкласса</h3> + +<p>Типичный способ создания подкласса это определить подкласс, определить свойства этого экземпляра. Это может быть неудобно особенно для получателей и установщиков. Вместо этого, вы можете использовать этот код для установки прототипа:</p> + +<pre class="brush: js">function superclass() {} +superclass.prototype = { + // Определите ваши методы и свойства здесь +}; +function subclass() {} +subclass.prototype = Object.create( + superclass.prototype, + { + // Определите ваши методы и свойства здесь + } +); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Начальное определение в ECMAScript 2017.</td> + </tr> + <tr> + <td>{{SpecName('ES2017', '#sec-object.getownpropertydescriptors', 'Object.getOwnPropertyDescriptors')}}</td> + <td>{{Spec2('ES2017')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</div> + +<p>{{Compat("javascript.builtins.Object.getOwnPropertyDescriptors")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.getOwnPropertyDescriptor()")}}</li> + <li>{{jsxref("Object.defineProperty()")}}</li> + <li><a href="https://github.com/tc39/proposal-object-getownpropertydescriptors">Polyfill</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html new file mode 100644 index 0000000000..c280afe9ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertynames/index.html @@ -0,0 +1,161 @@ +--- +title: Object.getOwnPropertyNames() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<p>Метод <strong><code>Object.getOwnPropertyNames()</code></strong> возвращает массив со всеми свойствами (независимо от того, перечисляемые они или нет), найденными непосредственно в переданном объекте.</p> + +<p>{{EmbedInteractiveExample("pages/js/object-getownpropertynames.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="brush: js"><code>Object.getOwnPropertyNames(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чьи перечисляемые <em>и неперечисляемые</em> собственные свойства будут возвращены.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив строк, который соответствует свойствам, найденным непосредственно в данном объекте.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Object.getOwnPropertyNames</code> возвращает массив строк, соответствующих перечисляемым <em>и неперечисляемым</em> свойствам, найденным непосредственно в объекте <code>obj</code>. Порядок перечисляемых свойств в массиве соответствует порядку при обходе объекта циклом {{jsxref("Statements/for...in", "for...in")}} (или при возврате методом {{jsxref("Object.keys")}}). Порядок неперечисляемых свойств в массиве, а также их местоположение среди перечисляемых свойств не определены.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_Object.getOwnPropertyNames" name="Example:_Using_Object.getOwnPropertyNames">Пример: использование <code>Object.getOwnPropertyNames()</code></h3> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; +console.log(Object.getOwnPropertyNames(arr).sort()); // напечатает '0,1,2,length' + +// Массивоподобный объект +var obj = { 0: 'a', 1: 'b', 2: 'c' }; +console.log(Object.getOwnPropertyNames(obj).sort()); // напечатает '0,1,2' + +// Печать имён и значений свойств с помощью Array.forEach +Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) { + console.log(val + ' -> ' + obj[val]); +}); +// напечатает +// 0 -> a +// 1 -> b +// 2 -> c + +// Не перечисляемое свойство +var my_obj = Object.create({}, { + getFoo: { + value: function() { return this.foo; }, + enumerable: false + } +}); +my_obj.foo = 1; + +console.log(Object.getOwnPropertyNames(my_obj).sort()); // напечатает 'foo,getFoo' +</pre> + +<p>Если вы хотите обработать только перечисляемые свойства, смотрите в сторону метода {{jsxref("Object.keys()")}} или используйте цикл {{jsxref("Statements/for...in", "for...in")}} (хотя стоит отметить, что он пройдётся по перечисляемым свойствам, присутствующим не только непосредственно в самом объекте, но и унаследованным из цепочки прототипов объекта; последние можно отфильтровать с помощью метода {{jsxref("Object.prototype.hasOwnProperty()", "hasOwnProperty()")}}).</p> + +<p>Элементы в цепочке прототипов не перечисляются:</p> + +<pre class="brush: js">function ParentClass() {} +ParentClass.prototype.inheritedMethod = function() {}; + +function ChildClass() { + this.prop = 5; + this.method = function() {}; +} +ChildClass.prototype = new ParentClass; +ChildClass.prototype.prototypeMethod = function() {}; + +alert( + Object.getOwnPropertyNames( + new ChildClass() // ['prop', 'method'] + ) +); +</pre> + +<h3 id="Example:_Get_Non-Enumerable_Only" name="Example:_Get_Non-Enumerable_Only">Пример: получение только не перечисляемых свойств</h3> + +<p>Здесь используется функция {{jsxref("Array.prototype.filter()")}} для удаления перечисляемых ключей (полученных через метод {{jsxref("Object.keys()")}}) из списка всех ключей (полученных через метод <code>Object.getOwnPropertyNames()</code>) и, таким образом, оставляющая только неперечисляемые ключи.</p> + +<pre class="brush: js">var target = myObject; +var enum_and_nonenum = Object.getOwnPropertyNames(target); +var enum_only = Object.keys(target); +var nonenum_only = enum_and_nonenum.filter(function(key) { + var indexInEnum = enum_only.indexOf(key); + if (indexInEnum == -1) { + // если ключ не найден в массиве enum_only, значит ключ является не перечисляемым + // и нужно вернуть true, чтобы он попал в результирующий массив + return true; + } else { + return false; + } +}); + +console.log(nonenum_only); +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет приведён к объекту.</p> + +<pre class="brush: js">> Object.getOwnPropertyNames('foo') +TypeError: "foo" is not an object // код ES5 + +> Object.getOwnPropertyNames('foo') +['length', '0', '1', '2'] // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.4', 'Object.getOwnPropertyNames')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.getownpropertynames', 'Object.getOwnPropertyNames')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.getOwnPropertyNames")}}</div> + +<p> </p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> + <li>{{jsxref("Object.prototype.hasOwnProperty()")}}</li> + <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li>{{jsxref("Object.keys()")}}</li> + <li>{{jsxref("Array.forEach()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html b/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html new file mode 100644 index 0000000000..e86deefc78 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getownpropertysymbols/index.html @@ -0,0 +1,94 @@ +--- +title: Object.getOwnPropertySymbols() +slug: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertySymbols +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<p>Метод <code><strong>Object.getOwnPropertySymbols()</strong></code> возвращает массив всех символьных свойств, найденных непосредственно на переданном объекте.</p> + +<p>{{EmbedInteractiveExample("pages/js/object-getownpropertysymbols.html")}}</p> + +<div class="hidden"> +<p>Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, пожалуйста, клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам запрос на извлечение.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="brush: js"><code>Object.getOwnPropertySymbols(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чьи символьные будут возвращены.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив всех свойств символа, найденных прямо на данном объекте.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Подобно методу {{jsxref("Object.getOwnPropertyNames()")}}, вы можете получить все символьные свойства указанного объекта в качестве массива символов. Обратите внимание, что метод {{jsxref("Object.getOwnPropertyNames()")}} сам не возвращает символьные свойства объекта, он возвращает только строковые свойства.</p> + +<p>Поскольку изначально никакой объект не содержит собственных символьных свойств, метод <code>Object.getOwnPropertySymbols()</code> будет возвращать пустой массив, пока вы не установите символьные свойства на вашем объекте.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var obj = {}; +var a = Symbol('a'); +var b = Symbol.for('b'); + +obj[a] = 'localSymbol'; +obj[b] = 'globalSymbol'; + +var objectSymbols = Object.getOwnPropertySymbols(obj); + +console.log(objectSymbols.length); // 2 +console.log(objectSymbols); // [Symbol(a), Symbol(b)] +console.log(objectSymbols[0]); // Symbol(a) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.getownpropertysymbols', 'Object.getOwnPropertySymbols')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>Таблица совместимости на этой странице генерируется из структурированных данных. Если вы хотите внести свой вклад в эти данные, просмотрите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на извлечение.</p> +</div> + +<p>{{Compat("javascript.builtins.Object.getOwnPropertySymbols")}}</p> + +<div id="compat-desktop"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> + <li>{{jsxref("Symbol")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html new file mode 100644 index 0000000000..540fddb350 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/getprototypeof/index.html @@ -0,0 +1,139 @@ +--- +title: Object.getPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +tags: + - ECMAScript5 + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Object.getPrototypeOf()</code></strong> возвращает прототип (то есть, внутреннее свойство <code>[[Prototype]]</code>) указанного объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.getPrototypeOf(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чей прототип будет возвращён.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var proto = {}; +var obj = Object.create(proto); +Object.getPrototypeOf(obj) === proto; // true +</pre> + +<pre class="brush: js">> Object.getPrototypeOf('foo') +TypeError: "foo" is not an object // код ES5 +> Object.getPrototypeOf('foo') +String.prototype // код ES6 +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если параметр <code>obj</code> не является объектом, будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6, параметр будет приведён к объекту {{jsxref("Global_Objects/Object", "Object")}}.</p> + +<pre class="brush: js">> Object.getPrototypeOf('foo') +TypeError: "foo" is not an object // код ES5 +> Object.getPrototypeOf('foo') +String.prototype // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.2', 'Object.getPrototypeOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.getprototypeof', 'Object.getProtoypeOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("5")}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("12.10")}} (может быть и более ранние)</td> + <td>{{CompatSafari("5")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h3 id="Opera-specific_notes" name="Opera-specific_notes">Примечания по Opera</h3> + +<p>Хотя старые версии Opera и не поддерживают меотод <code>Object.getPrototypeOf()</code>, Opera поддерживает нестандартное свойство {{jsxref("Object.proto", "__proto__")}}, начиная с версии Opera 10.50.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li> + <li>{{jsxref("Object.setPrototypeOf()")}} {{experimental_inline}}</li> + <li>{{jsxref("Object.prototype.__proto__")}}</li> + <li>Запись в блоге Джона Резига о <a href="http://ejohn.org/blog/objectgetprototypeof/">getPrototypeOf()</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html b/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html new file mode 100644 index 0000000000..c1fa2f6464 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/hasownproperty/index.html @@ -0,0 +1,145 @@ +--- +title: Object.prototype.hasOwnProperty() +slug: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>hasOwnProperty()</strong></code> возвращает логическое значение, указывающее, содержит ли объект указанное свойство.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>obj</var>.hasOwnProperty(<var>prop</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>prop</code></dt> + <dd>Имя проверяемого свойства.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Каждый объект, произошедший от {{jsxref("Global_Objects/Object", "Object")}}, наследует метод <code>hasOwnProperty</code>. Этот метод может использоваться для определения того, содержит ли объект указанное свойство в качестве собственного свойства объекта; в отличие от оператора {{jsxref("Operators/in", "in")}}, этот метод не проверяет существование свойств в цепочке прототипов объекта.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_hasOwnProperty_to_test_for_a_property.27s_existence" name="Example:_Using_hasOwnProperty_to_test_for_a_property.27s_existence">Пример: использование <code>hasOwnProperty</code> для проверки существования свойства</h3> + +<p>В следующем примере определяется, содержит ли объект <code>o</code> свойство с именем <code>prop</code>:</p> + +<pre class="brush: js">o = new Object(); +o.prop = 'существует'; + +function changeO() { + o.newprop = o.prop; + delete o.prop; +} + +o.hasOwnProperty('prop'); // вернёт true +changeO(); +o.hasOwnProperty('prop'); // вернёт false +</pre> + +<h3 id="Example:_Direct_versus_inherited_properties" name="Example:_Direct_versus_inherited_properties">Пример: собственные и унаследованные свойства</h3> + +<p>Следующий пример показывает разницу между собственными свойствами и свойствами, унаследоваными через цепочку прототипов:</p> + +<pre class="brush: js">o = new Object(); +o.prop = 'существует'; +o.hasOwnProperty('prop'); // вернёт true +o.hasOwnProperty('toString'); // вернёт false +o.hasOwnProperty('hasOwnProperty'); // вернёт false +</pre> + +<h3 id="Example:_Itarate_over_properties_not_considering_inherited_properties" name="Example:_Itarate_over_properties_not_considering_inherited_properties">Пример: обход свойств объекта</h3> + +<p>Следующий пример показывает, как итерироваться по свойствам объекта с пропуском унаследованных свойств. Обратите внимание, что цикл {{jsxref("Statements/for...in", "for...in")}} уже проходит только по перечисляемым элементам, так что не надо на основании отсутствия не перечисляемых свойств, показываемых в цикле, считать, что метод <code>hasOwnProperty</code> сам ограничивает свойства только перечисляемыми элементами (как это делает метод {{jsxref("Object.getOwnPropertyNames()")}}).</p> + +<pre class="brush: js">var buz = { + fog: 'stack' +}; + +for (var name in buz) { + if (buz.hasOwnProperty(name)) { + alert('это точно туман (' + name + '). Значение: ' + buz[name]); + } + else { + alert(name); // toString или что-то ещё + } +} +</pre> + +<h3 id="Example:_hasOwnProperty_as_a_property" name="Example:_hasOwnProperty_as_a_property">Пример: <code>hasOwnProperty</code> как свойство</h3> + +<p>JavaScript не защищает имя свойства <code>hasOwnProperty</code>; таким образом, вполне может существовать объект с таким свойством, поэтому для получения правильного результата нужно использовать <em>внешний</em> метод <code>hasOwnProperty</code>:</p> + +<pre class="brush: js">var foo = { + hasOwnProperty: function() { + return false; + }, + bar: 'Тут драконы' +}; + +foo.hasOwnProperty('bar'); // всегда возвращает false + +// Используем метод hasOwnProperty другого объекта и вызываем его с передачей foo в качестве this +({}).hasOwnProperty.call(foo, 'bar'); // true + +// Также для этих целей можно использовать свойство hasOwnProperty из прототипа Object +Object.prototype.hasOwnProperty.call(foo, 'bar'); // true +</pre> + +<p>Обратите внимание, что в последнем случае новые объекты не создаются.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3rd Edition.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.5.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.5', 'Object.prototype.hasOwnProperty')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> +<p>{{Compat("javascript.builtins.Object.hasOwnProperty")}}</p> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> + <li>{{jsxref("Statements/for...in", "for...in")}}</li> + <li>{{jsxref("Operators/in", "in")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Guide/Inheritance_Revisited">Руководство по JavaScript: повторное наследование</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/index.html b/files/ru/web/javascript/reference/global_objects/object/index.html new file mode 100644 index 0000000000..0286dff0dd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/index.html @@ -0,0 +1,216 @@ +--- +title: Object +slug: Web/JavaScript/Reference/Global_Objects/Object +tags: + - Constructor + - JavaScript + - Object + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Конструктор <code><strong>Object</strong></code> создаёт объект-обёртку.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>// Инициализатор объекта или литерал +{ [ <var>nameValuePair1</var>[, <var>nameValuePair2</var>[, ...<var>nameValuePairN</var>] ] ] } + +// Вызов в качестве конструктора +new Object([<var>value</var>]) +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>nameValuePair1, nameValuePair2, ... nameValuePair<em>N</em></code></dt> + <dd>Пары из имён (строки) и значений (любые значения), где имя отделяется от значения двоеточием.</dd> + <dt><code>value</code></dt> + <dd>Любое значение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Конструктор <code>Object</code> создаёт объект-обёртку для переданного значения. Если значением является {{jsxref("Global_Objects/null", "null")}} или {{jsxref("Global_Objects/undefined", "undefined")}}, создаёт и возвращает пустой объект, в противном случае возвращает объект такого типа, который соответствует переданному значению. Если значение уже является объектом, конструктор вернёт это значение.</p> + +<p>При вызове в не-конструкторном контексте, <code>Object</code> ведёт себя идентично коду <code>new Object()</code>.</p> + +<p>Так же смотрите {{jsxref("Operators/Object_initializer", "синтаксис инициализатора объекта / литеральный синтаксис", "", 1)}}.</p> + +<h2 id="Properties" name="Properties">Свойства конструктора <code>Object</code></h2> + +<dl> + <dt><code>Object.length</code></dt> + <dd>Имеет значение 1.</dd> + <dt>{{jsxref("Object.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам типа <code>Object</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы конструктора <code>Object</code></h2> + +<dl> + <dt>{{jsxref("Object.assign()")}}</dt> + <dd>Создаёт новый объект путём копирования значений всех собственных перечислимых свойств из одного или более исходных объектов в целевой объект.</dd> + <dt>{{jsxref("Object.create()")}}</dt> + <dd>Создаёт новый объект с указанными объектом прототипа и свойствами.</dd> + <dt>{{jsxref("Object.defineProperty()")}}</dt> + <dd>Добавляет к объекту именованное свойство, описываемое переданным дескриптором.</dd> + <dt>{{jsxref("Object.defineProperties()")}}</dt> + <dd>Добавляет к объекту именованные свойства, описываемые переданными дескрипторами.</dd> + <dt>{{jsxref("Object.freeze()")}}</dt> + <dd>Замораживает объект: другой код не сможет удалить или изменить никакое свойство.</dd> + <dt>{{jsxref("Object.getOwnPropertyDescriptor()")}}</dt> + <dd>Возвращает дескриптор свойства для именованного свойства объекта.</dd> + <dt>{{jsxref("Object.getOwnPropertyNames()")}}</dt> + <dd>Возвращает массив, содержащий имена всех переданных объекту <strong>собственных</strong> перечисляемых и неперечисляемых свойств.</dd> + <dt>{{jsxref("Object.getOwnPropertySymbols()")}}</dt> + <dd>Возвращает массив всех символьных свойств, найденных непосредственно в переданом объекте.</dd> + <dt>{{jsxref("Object.getPrototypeOf()")}}</dt> + <dd>Возвращает прототип указанного объекта.</dd> + <dt>{{jsxref("Object.is()")}}</dt> + <dd>Определяет, являются ли два значения различимыми (то есть, одинаковыми)</dd> + <dt>{{jsxref("Object.isExtensible()")}}</dt> + <dd>Определяет, разрешено ли расширение объекта.</dd> + <dt>{{jsxref("Object.isFrozen()")}}</dt> + <dd>Определяет, был ли объект заморожен.</dd> + <dt>{{jsxref("Object.isSealed()")}}</dt> + <dd>Определяет, является ли объект запечатанным (sealed).</dd> + <dt>{{jsxref("Object.keys()")}}</dt> + <dd>Возвращает массив, содержащий имена всех <strong>собственных</strong> перечислимых свойств переданного объекта.</dd> + <dt>{{jsxref("Object.observe()")}}</dt> + <dd>Асинхронно наблюдает за изменениями в объекте.</dd> + <dt>{{jsxref("Object.preventExtensions()")}}</dt> + <dd>Предотвращает любое расширение объекта.</dd> + <dt>{{jsxref("Object.seal()")}}</dt> + <dd>Предотвращает удаление свойств объекта другим кодом.</dd> + <dt>{{jsxref("Object.setPrototypeOf()")}}</dt> + <dd>Устанавливает прототип (т.е. внутреннее свойство <code>[[Prototype]]</code>)</dd> +</dl> + +<h2 id="Object_instances" name="Object_instances">Экземпляры и прототип объекта <code>Object</code></h2> + +<p>Все объекты в JavaScript являются потомками <code>Object</code>; все объекты наследуют методы и свойства из прототипа объекта {{jsxref("Object.prototype")}}, хотя они и могут быть переопределены. Например, прототипы других конструкторов переопределяют свойство <code>constructor</code> и предоставляют свои собственные методы <code>toString()</code>. Изменения в объекте прототипа <code>Object</code> распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.</p> + +<h3 id="Properties_of_Object_instances" name="Properties_of_Object_instances">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_Object_instances" name="Methods_of_Object_instances">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example.3A_Using_Object_given_undefined_and_null_types" name="Example.3A_Using_Object_given_undefined_and_null_types">Пример: использование <code>Object</code> с типами <code>undefined</code> и <code>null</code></h3> + +<p>Следующий пример сохраняет пустой объект <code>Object</code> в переменную <code>o</code>:</p> + +<pre class="brush: js">var o = new Object(); +</pre> + +<pre class="brush: js">var o = new Object(undefined); +</pre> + +<pre class="brush: js">var o = new Object(null); +</pre> + +<h3 id="Пример_использование_Object_для_создания_объектов_Boolean">Пример: использование <code>Object</code> для создания объектов <code>Boolean</code></h3> + +<p>Следующий пример сохраняет объекты {{jsxref("Global_Objects/Boolean", "Boolean")}} в переменную <code>o</code>:</p> + +<pre class="brush: js">// эквивалентно o = new Boolean(true); +var o = new Object(true); +</pre> + +<pre class="brush: js">// эквивалентно o = new Boolean(false); +var o = new Object(Boolean()); +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2', 'Object')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object-objects', 'Object')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Object_initializer">Инициализатор объекта</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/is/index.html b/files/ru/web/javascript/reference/global_objects/object/is/index.html new file mode 100644 index 0000000000..c9f061a3a9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/is/index.html @@ -0,0 +1,122 @@ +--- +title: Object.is() +slug: Web/JavaScript/Reference/Global_Objects/Object/is +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/is +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Object.is()</strong></code> определяет, являются ли два значения <a href="/ru/docs/Web/JavaScript/Guide/Sameness">одинаковыми значениями</a>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>var <var>isSame</var> = Object.is(<var>value1</var>, <var>value2</var>);</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>value1</code></dt> + <dd>Первое сравниваемое значение.</dd> + <dt><code>value2</code></dt> + <dd>Второе сравниваемое значение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Object.is()</code> определяет, являются ли два значения <a href="/ru/docs/Web/JavaScript/Guide/Sameness">одинаковыми значениями</a>. Два значения являются одинаковыми в следующих случаях:</p> + +<ul> + <li>оба равны {{jsxref("undefined")}}</li> + <li>оба равны {{jsxref("null")}}</li> + <li>оба равны <code>true</code>, либо оба равны <code>false</code></li> + <li>оба являются строками с одинаковой длиной и одинаковыми символами</li> + <li>оба являются одним и тем же объектом</li> + <li>оба являются числами и + <ul> + <li>оба равны <code>+0</code></li> + <li>оба равны <code>-0</code></li> + <li>оба равны {{jsxref("NaN")}}</li> + <li>либо оба не равны нулю или {{jsxref("NaN")}} и оба имеют одинаковое значение</li> + </ul> + </li> +</ul> + +<p>Поведение этого метода <em>не</em> аналогично оператору {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}. Оператор {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}} использует приведение типов обоих операндов (если они имеют различный тип) перед проверкой на равенство (в результате получается, что проверка <code>"" == false</code> даёт <code>true</code>), а метод <code>Object.is</code> приведение типов не выполняет.</p> + +<p>Поведение этого метода <em>не</em> аналогично оператору {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}}. Оператор {{jsxref("Operators/Comparison_Operators", "===", "#Identity")}} (также как и оператор {{jsxref("Operators/Comparison_Operators", "==", "#Equality")}}) считает числовые значения <code>-0</code> и <code>+0</code> равными, а значение {{jsxref("Number.NaN")}} не равным самому себе.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">Object.is('foo', 'foo'); // true +Object.is(window, window); // true + +Object.is('foo', 'bar'); // false +Object.is([], []); // false + +var test = { a: 1 }; +Object.is(test, test); // true + +Object.is(null, null); // true + +// Специальные случаи +Object.is(0, -0); // false +Object.is(-0, -0); // true +Object.is(NaN, 0/0); // true +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>Object.is</code> предложен в дополнение к стандарту ECMA-262; поэтому он может быть недоступен в некоторых браузерах. Это можно обойти, вставив приведённый ниже фрагмент кода в начало ваших скриптов. Он позволит вам использовать метод <code>Object.is</code> в случаях, когда он не имеет родной поддержки браузером.</p> + +<pre><code>if (!Object.is) { + Object.is = function(x, y) { + // SameValue algorithm + if (x === y) { // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return x !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } + }; +}</code></pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.is', 'Object.is')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.is', 'Object.is')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.is")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Guide/Sameness">Руководство по JavaScript: одинаковость</a> — сравнение всех трёх встроенных способов проверки на одинаковость</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html b/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html new file mode 100644 index 0000000000..99b44f9654 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isextensible/index.html @@ -0,0 +1,134 @@ +--- +title: Object.isExtensible() +slug: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isExtensible +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>Object.isExtensible()</code></strong> определяет, является ли объект расширяемым (то есть, можно ли к нему добавлять новые свойства).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Object.isExtensible(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>obj</code></dt> + <dd>Проверяемый объект.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объекты являются расширяемыми по умолчанию: к ним можно добавлять новые свойства и (в движках, поддерживающих свойство {{jsxref("Object.proto", "__proto__")}}) их можно изменять. Объект может быть помечен, как не изменяемый с помощью методов {{jsxref("Object.preventExtensions()")}}, {{jsxref("Object.seal()")}} или {{jsxref("Object.freeze()")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">// Новые объекты являются расширяемыми. +var empty = {}; +assert(Object.isExtensible(empty) === true); + +// ...но это может быть изменено. +Object.preventExtensions(empty); +assert(Object.isExtensible(empty) === false); + +// Запечатанные объекты по определению не расширяемы. +var sealed = Object.seal({}); +assert(Object.isExtensible(sealed) === false); + +// Замороженные объекты также по определению не расширяемы. +var frozen = Object.freeze({}); +assert(Object.isExtensible(frozen) === false); +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой не расширяемый объект и метод просто вернёт <code>false</code>.</p> +<pre class="brush: js">> Object.isExtensible(1) +TypeError: 1 is not an object // код ES5 + +> Object.isExtensible(1) +false // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.13', 'Object.isExtensible')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.isextensible', 'Object.isExtensible')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("6")}}</td> + <td>{{CompatGeckoDesktop("2.0")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("12")}}</td> + <td>{{CompatSafari("5.1")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.isSealed()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.isFrozen()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html b/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html new file mode 100644 index 0000000000..1970718f05 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isfrozen/index.html @@ -0,0 +1,142 @@ +--- +title: Object.isFrozen() +slug: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isFrozen +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Object.isFrozen()</strong></code> определяет, был ли объект заморожен.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.isFrozen(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Проверяемый объект.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объект является замороженным только в том случае, если он не {{jsxref("Object.isExtensible()", "расширяем", "", 1)}}, все его свойства являются не настраиваемыми и все его свойства данных (то есть такие, которые не являются свойствами доступа с функциями сеттера или геттера) являются не записываемыми.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">// Новый объект является расширяемым, так что он не заморожен. +assert(Object.isFrozen({}) === false); + +// Пустой не расширяемый объект по определению заморожен. +var vacuouslyFrozen = Object.preventExtensions({}); +assert(Object.isFrozen(vacuouslyFrozen) === true); + +// Новый объект с одним свойством является расширяемым, поэтому он не заморожен. +var oneProp = { p: 42 }; +assert(Object.isFrozen(oneProp) === false); + +// Предотвращение расширения объекта всё ещё не делает его замороженным, +// поскольку свойство всё ещё остаётся настраиваемым (и записываемым). +Object.preventExtensions(oneProp); +assert(Object.isFrozen(oneProp) === false); + +// ...но при удалении этого свойства объект становится замороженным по определению. +delete oneProp.p; +assert(Object.isFrozen(oneProp) === true); + +// Не расширяемый объект с не записываемым, но всё ещё настраиваемым свойством, не является замороженным. +var nonWritable = { e: 'plep' }; +Object.preventExtensions(nonWritable); +Object.defineProperty(nonWritable, 'e', { writable: false }); // делаем свойство не записываемым +assert(Object.isFrozen(nonWritable) === false); + +// Изменение свойства на не настраиваемое делает объект замороженным. +Object.defineProperty(nonWritable, 'e', { configurable: false }); // делаем свойство не настраиваемым +assert(Object.isFrozen(nonWritable) === true); + +// Не расширяемый объект с не настраиваемым, но всё ещё записываемым свойством, также не является замороженным. +var nonConfigurable = { release: 'кракен!' }; +Object.preventExtensions(nonConfigurable); +Object.defineProperty(nonConfigurable, 'release', { configurable: false }); +assert(Object.isFrozen(nonConfigurable) === false); + +// Изменение свойства на не записываемое делает объект замороженным. +Object.defineProperty(nonConfigurable, 'release', { writable: false }); +assert(Object.isFrozen(nonConfigurable) === true); + +// Не расширяемый объект с настраиваемым свойством доступа не является замороженным. +var accessor = { get food() { return 'ням'; } }; +Object.preventExtensions(accessor); +assert(Object.isFrozen(accessor) === false); + +// ...но сделав это свойство не настраиваемым, объект становится замороженным. +Object.defineProperty(accessor, 'food', { configurable: false }); +assert(Object.isFrozen(accessor) === true); + +// Самым же простым способом заморозить объект можно через вызов на нём метода Object.freeze. +var frozen = { 1: 81 }; +assert(Object.isFrozen(frozen) === false); +Object.freeze(frozen); +assert(Object.isFrozen(frozen) === true); + +// По определению, замороженный объект является не расширяемым. +assert(Object.isExtensible(frozen) === false); + +// Также, по определению, замороженный объект является запечатанным. +assert(Object.isSealed(frozen) === true); +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой замороженный объект и метод просто вернёт <code>true</code>.</p> + +<pre class="brush: js">> Object.isFrozen(1) +TypeError: 1 is not an object // код ES5 + +> Object.isFrozen(1) +true // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.12', 'Object.isFrozen')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.isfrozen', 'Object.isFrozen')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.isFrozen")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.isSealed()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html new file mode 100644 index 0000000000..d9ece7c245 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/isprototypeof/index.html @@ -0,0 +1,159 @@ +--- +title: Object.prototype.isPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isPrototypeOf +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>isPrototypeOf()</strong></code> проверяет, входит ли объект в цепочку прототипов другого объекта.</p> + +<div class="note"> +<p><strong>Обратите внимание:</strong> метод <code>isPrototypeOf()</code> отличается от оператора {{jsxref("Operators/instanceof", "instanceof")}}. Выражение "<code>object instanceof AFunction</code>" проверяет, присутствует ли в цепочке прототипов объекта <code>object</code> объект <code>AFunction.prototype</code>, а не сам объект <code>AFunction</code>.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>prototypeObj</var>.isPrototypeOf(<var>object</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>prototypeObj</code></dt> + <dd>Объект, проверяемый на каждую ссылку в цепочке прототипов аргумента <strong>object</strong>.</dd> + <dt><code>object</code></dt> + <dd>Объект, в чьей цепочке прототипов производится поиск.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>isPrototypeOf()</code> позволяет вам проверять, существует ли объект в цепочке прототипов другого объекта.</p> + +<p>Например, рассмотрим следующую цепочку прототипов:</p> + +<pre class="brush: js">function Fee() { + // ... +} + +function Fi() { + // ... +} +Fi.prototype = new Fee(); + +function Fo() { + // ... +} +Fo.prototype = new Fi(); + +function Fum() { + // ... +} +Fum.prototype = new Fo(); +</pre> + +<p>Если позже вы создадите экземпляр объекта <code>Fum</code> и захотите проверить, что прототип <code>Fi</code> существует в цепочке прототипов <code>Fum</code>, вы можете сделать следующее:</p> + +<pre class="brush: js">var fum = new Fum(); +// ... + +if (Fi.prototype.isPrototypeOf(fum)) { + // здесь безопасно что-то делать +} +</pre> + +<p>Таким образом, вместе с оператором {{jsxref("Operators/instanceof", "instanceof")}}, это особенно пригождается, если у вас есть код, который может работать только с объектами, имеющими определённую цепочку прототипов, к примеру, чтобы он мог гарантировать, что в объекте присутствуют определённые методы или свойства.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.5', 'Object.prototype.hasOwnProperty')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.hasownproperty', 'Object.prototype.hasOwnProperty')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Operators/instanceof", "instanceof")}}</li> + <li>{{jsxref("Object.getPrototypeOf()")}}</li> + <li>{{jsxref("Object.setPrototypeOf()")}}</li> + <li>{{jsxref("Object.prototype.__proto__")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/issealed/index.html b/files/ru/web/javascript/reference/global_objects/object/issealed/index.html new file mode 100644 index 0000000000..a0f0ad8c5e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/issealed/index.html @@ -0,0 +1,147 @@ +--- +title: Object.isSealed() +slug: Web/JavaScript/Reference/Global_Objects/Object/isSealed +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/isSealed +--- +<div> + {{JSRef("Global_Objects", "Object")}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>Object.isSealed()</strong></code> определяет, является ли объект запечатанным.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>Object.isSealed(<var>obj</var>)</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt> + <code>obj</code></dt> + <dd> + Проверяемый объект.</dd> +</dl> +<h2 id="Description" name="Description">Описание</h2> +<p>Возвращает <code>true</code>, если объект является запечатанным, иначе возвращает <code>false</code>. Объект является запечатанным, если он является не {{jsxref("Object.isExtensible", "расширяемым", "", 1)}} и если все его свойства являются не настраиваемыми и, следовательно, не удаляемыми (но не обязательно не записываемыми).</p> +<h2 id="Examples" name="Examples">Примеры</h2> +<pre class="brush: js">// По умолчанию объекты не запечатаны. +var empty = {}; +assert(Object.isSealed(empty) === false); + +// Если вы сделаете пустой объект не расширяемым, он по определению станет запечатанным. +Object.preventExtensions(empty); +assert(Object.isSealed(empty) === true); + +// То же самое не верно для не пустого объекта, пока все его свойства не станут не настраиваемыми. +var hasProp = { fee: 'fie foe fum' }; +Object.preventExtensions(hasProp); +assert(Object.isSealed(hasProp) === false); + +// Но сделав все его свойства не настраиваемыми, объект становится запечатанным. +Object.defineProperty(hasProp, 'fee', { configurable: false }); +assert(Object.isSealed(hasProp) === true); + +// Простейшим способом запечатать объект, конечно, является использование метода Object.seal. +var sealed = {}; +Object.seal(sealed); +assert(Object.isSealed(sealed) === true); + +// Запечатанный объект по определению является не расширяемым. +assert(Object.isExtensible(sealed) === false); + +// Запечатанный объект может быть замороженным, но это не всегда так. +assert(Object.isFrozen(sealed) === true); // все свойства также являются не записываемыми + +var s2 = Object.seal({ p: 3 }); +assert(Object.isFrozen(s2) === false); // свойство 'p' всё ещё записываемое + +var s3 = Object.seal({ get p() { return 0; } }); +assert(Object.isFrozen(s3) === true); // для свойств доступа значение имеет только их настраиваемость +</pre> +<h2 id="Notes" name="Notes">Примечания</h2> +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой запечатанный объект и метод просто вернёт <code>true</code>.</p> +<pre class="brush: js">> Object.isSealed(1) +TypeError: 1 is not an object // код ES5 + +> Object.isSealed(1) +true // код ES6 +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.11', 'Object.isSealed')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.issealed', 'Object.isSealed')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("6")}}</td> + <td>{{CompatGeckoDesktop("2.0")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("12")}}</td> + <td>{{CompatSafari("5.1")}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<p>На основе <a class="external" href="http://kangax.github.com/es5-compat-table/">таблицы совместимости Kangax</a>.</p> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.isFrozen()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/keys/index.html b/files/ru/web/javascript/reference/global_objects/object/keys/index.html new file mode 100644 index 0000000000..d5700bbb4e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/keys/index.html @@ -0,0 +1,153 @@ +--- +title: Object.keys() +slug: Web/JavaScript/Reference/Global_Objects/Object/keys +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/keys +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>Object.keys()</strong></code> возвращает массив из собственных перечисляемых свойств переданного объекта, в том же порядке, в котором они бы обходились циклом {{jsxref("Statements/for...in", "for...in")}} (разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.keys(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чьи собственные перечисляемые свойства будут возвращены.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>Object.keys</code> возвращает массив строковых элементов, соответствующих именам перечисляемых свойств, найденных непосредственно в самом объекте. Порядок свойств такой же, как и при ручном перечислении свойств в объекте через цикл.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var arr = ['a', 'b', 'c']; +console.log(Object.keys(arr)); // консоль: ['0', '1', '2'] + +// Массивоподобный объект +var obj = { 0: 'a', 1: 'b', 2: 'c' }; +console.log(Object.keys(obj)); // консоль: ['0', '1', '2'] + +// Массивоподобный объект со случайным порядком ключей +var an_obj = { 100: 'a', 2: 'b', 7: 'c' }; +console.log(Object.keys(an_obj)); // консоль: ['2', '7', '100'] + +// Свойство getFoo является не перечисляемым свойством +var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } }); +my_obj.foo = 1; + +console.log(Object.keys(my_obj)); // консоль: ['foo'] +</pre> + +<p>Если вы хотите увидеть все свойства, а не только перечисляемые, смотрите метод {{jsxref("Object.getOwnPropertyNames()")}}.</p> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES2015 такой аргумент будет приведён к объекту.</p> + +<pre class="brush: js">> Object.keys('foo') +TypeError: 'foo' is not an object // код ES5 + +> Object.keys('foo') +['0', '1', '2'] // код ES2015 +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Для добавления поддержки совместимого метода <code>Object.keys</code> в старых окружениях, которые его ещё не реализуют, скопируйте следующий кусок кода:</p> + +<pre class="brush: js">// From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys +if (!Object.keys) { + Object.keys = (function() { + 'use strict'; + var hasOwnProperty = Object.prototype.hasOwnProperty, + hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString'), + dontEnums = [ + 'toString', + 'toLocaleString', + 'valueOf', + 'hasOwnProperty', + 'isPrototypeOf', + 'propertyIsEnumerable', + 'constructor' + ], + dontEnumsLength = dontEnums.length; + + return function(obj) { + if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) { + throw new TypeError('Object.keys called on non-object'); + } + + var result = [], prop, i; + + for (prop in obj) { + if (hasOwnProperty.call(obj, prop)) { + result.push(prop); + } + } + + if (hasDontEnumBug) { + for (i = 0; i < dontEnumsLength; i++) { + if (hasOwnProperty.call(obj, dontEnums[i])) { + result.push(dontEnums[i]); + } + } + } + return result; + }; + }()); +} +</pre> + +<p>Пожалуйста, обратите внимание, что вышеприведённый код в IE7 (и, может быть, в IE8) включает и не перечисляемые ключи, если объект передаётся из другого окна.</p> + +<p>Более простой полифилл может быть найден в статье <a href="http://tokenposts.blogspot.com.au/2012/04/javascript-objectkeys-browser.html">Javascript - Object.keys Browser Compatibility</a> (англ.).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.14', 'Object.keys')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-object.keys', 'Object.keys')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Object.keys")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> + <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html b/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html new file mode 100644 index 0000000000..6f0827751f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/nosuchmethod/index.html @@ -0,0 +1,195 @@ +--- +title: Object.prototype.__noSuchMethod__ +slug: Web/JavaScript/Reference/Global_Objects/Object/noSuchMethod +tags: + - JavaScript + - Non-standard + - Object + - Property + - Prototype + - Reference +translation_of: Archive/Web/JavaScript/Object.noSuchMethod +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}}</div> + +<div>Хотя свойство <strong><code>__noSuchMethod__</code></strong> и нестандартно, спецификация ECMAScript Harmony (ES6) содержит объект <strong>{{jsxref("Proxy")}}</strong>, с помощью которого вы можете сделать всё тоже самое, что и при использовании этого свойством (и даже больше).</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>__noSuchMethod__</code></strong> ссылается на функцию, выполняющуюся каждый раз при вызове на объекте несуществующего метода.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__noSuchMethod__ = <var>fun</var></code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>fun</code></dt> + <dd>Функция, имеющая вид</dd> + <dd> + <pre><code>function(<var>id</var>, <var>args</var>) { . . . }</code></pre> + <dl> + <dt><code>id</code></dt> + <dd>Имя вызванного несуществующего метода</dd> + <dt><code>args</code></dt> + <dd>Массив аргументов, переданный в метод</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>По умолчанию, при попытке вызвать не существующий в объекте метод, будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Это поведение можно обойти, определив функцию <code>__noSuchMethod__</code> в качестве члена объекта. Функция принимает два аргумента, первый является именем метода, который попытались вызвать, а второй — массивом аргументов, которые были переданы в метод при его вызове. Второй аргумент является настойщим массивом (то есть, он наследуется через цепочку прототипов от {{jsxref("Array.prototype")}}), а не массивоподобным <a href="/ru/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments">объектом arguments</a>.</p> +<p>Если данный метод не может быть вызван, либо по причине того, что он установлен в {{jsxref("Global_Objects/undefined", "undefined")}} по умолчанию, либо удалён, либо вручную установлен в не-функцию, движок JavaScript вернётся к выбрасыванию исключения {{jsxref("Global_Objects/TypeError", "TypeError")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Simple_test_of___noSuchMethod__" name="Example:_Simple_test_of___noSuchMethod__">Пример: простая проверка свойства <code>__noSuchMethod__</code></h3> +<pre class="brush: js">var o = { + __noSuchMethod__: function(id, args) { console.log(id, '(' + args.join(', ') + ')'); } +}; + +o.foo(1, 2, 3); +o.bar(4, 5); +o.baz(); + +// Вывод +// foo (1, 2, 3) +// bar (4, 5) +// baz () +</pre> + +<h3 id="Example:_Using___noSuchMethod___to_simulate_multiple_inheritance" name="Example:_Using___noSuchMethod___to_simulate_multiple_inheritance">Пример: использование свойства <code>__noSuchMethod__</code> для симуляции множественного наследования</h3> +<p>Ниже показан пример кода, реализующего примитивную форму множественного наследования.</p> +<pre class="brush: js">// Не работает с множественным наследованием объектов в качестве родителей +function noMethod(name, args) { + var parents = this.__parents_; + + // Пройдёмся по всем родителям + for (var i = 0; i < parents.length; i++) { + // Если нашли функцию в родителе, вызовем её + if (typeof parents[i][name] == 'function') { + return parents[i][name].apply(this, args); + } + } + + // Если мы здесь, метод не был найден + throw new TypeError; +} + +// Используется для добавления родителя при множественном наследовании +function addParent(obj, parent) { + // Если объект ещё не инициализирован, инициализируем его + if (!obj.__parents_) { + obj.__parents_ = []; + obj.__noSuchMethod__ = noMethod; + } + + // Добавляем родителя + obj.__parents_.push(parent); +} +</pre> +<p>Ниже показан пример использования этой идеи.</p> +<pre class="brush: js">// Пример первого базового класса + +function NamedThing(name) { + this.name = name; +} + +NamedThing.prototype = { + getName: function() { return this.name; }, + setName: function(newName) { this.name = newName; } +} + +// Пример второго базового класса + +function AgedThing(age){ + this.age = age; +} + +AgedThing.prototype = { + getAge: function() { return this.age; }, + setAge: function(age) { this.age = age; } +} + +// Дочерний класс. Наследуется от NamedThing и AgedThing, а также определяет свойство address + +function Person(name, age, address) { + addParent(this, NamedThing.prototype); + NamedThing.call(this, name); + addParent(this, AgedThing.prototype); + AgedThing.call(this, age); + this.address = address; +} + +Person.prototype = { + getAddr: function() { return this.address; }, + setAddr: function(addr) { this.address = addr; } +} + +var bob = new Person('Боб', 25, 'Нью-Йорк'); + +console.log('getAge лежит ' + (('getAge' in bob) ? 'в' : 'не в') + ' объекте bob'); +console.log('возраст Боба: ' + bob.getAge()); +console.log('getName лежит ' + (('getName' in bob) ? 'в' : 'не в') + ' объекте bob'); +console.log('имя Боба: ' + bob.getName()); +console.log('getAddr лежит ' + (('getAddr' in bob) ? 'в' : 'не в') + ' объекте bob'); +console.log('адрес Боба: ' + bob.getAddr()); +</pre> +<p>Вывод примера будет следующим:</p> +<pre>getAge лежит не в объекте bob +возраст Боба: 25 +getName лежит не в объекте bob +имя Боба: Боб +getAddr лежит в объекте bob +адрес Боба: Нью-Йорк +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/object/observe/index.html b/files/ru/web/javascript/reference/global_objects/object/observe/index.html new file mode 100644 index 0000000000..25fe9c879b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/observe/index.html @@ -0,0 +1,142 @@ +--- +title: Object.observe() +slug: Web/JavaScript/Reference/Global_Objects/Object/observe +tags: + - ECMAScript7 + - Experimental + - JavaScript + - Method + - Object + - Reference +translation_of: Archive/Web/JavaScript/Object.observe +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Object.observe()</code></strong> используется для асинхронного обзора изменений в объекте. Он предоставляет поток изменений в порядке их возникновения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.observe(<var>obj</var>, <var>callback</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Обозреваемый объект.</dd> + <dt><code>callback</code></dt> + <dd>Функция, вызываемая при возникновении изменений в объекте, принимает следующий аргумент: + <dl> + <dt><code>changes</code></dt> + <dd>Массив объектов, представляющих одно изменение. Объекты с изменениями содержат следующие свойства: + <ul> + <li><strong><code>name</code></strong>: имя изменённого свойства.</li> + <li><strong><code>object</code></strong>: изменённый объект после изменения.</li> + <li><strong><code>type</code></strong>: строка, указывающая тип произошедшего изменения. Может принимать одно из значений: <code>"add"</code>, <code>"update"</code> или <code>"delete"</code>.</li> + <li><strong><code>oldValue</code></strong>: только для типов <code>"update"</code> и <code>"delete"</code>. Значение до изменения.</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Функция <code>callback</code> вызывается каждый раз при возникновении изменений в объекте <code>obj</code> с массивом всех изменений в порядке их возникновения.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example.3A_Logging_all_three_different_types" name="Example.3A_Logging_all_three_different_types">Пример: журналирование всех трёх типов изменений</h3> + +<pre class="brush: js">var obj = { + foo: 0, + bar: 1 +}; + +Object.observe(obj, function(changes) { + console.log(changes); +}); + +obj.baz = 2; +// [{name: 'baz', object: <obj>, type: 'add'}] + +obj.foo = 'hello'; +// [{name: 'foo', object: <obj>, type: 'update', oldValue: 0}] + +delete obj.baz; +// [{name: 'baz', object: <obj>, type: 'delete', oldValue: 2}] +</pre> + +<h3 id="Example.3A_Data_Binding" name="Example.3A_Data_Binding">Пример: привязка данных</h3> + +<pre class="brush: js">// Пользовательская модель +var user = { + id: 0, + name: 'Брендан Айк', + title: 'М-р.' +}; + +// Создаёт приветствие для пользователя +function updateGreeting() { + user.greeting = 'Здравствуйте, ' + user.title + ' ' + user.name + '!'; +} +updateGreeting(); + +Object.observe(user, function(changes) { + changes.forEach(function(change) { + // Любое изменение имени или обращения обновит привествие + if (change.name === 'name' || change.name === 'title') { + updateGreeting(); + } + }); +}); +</pre> + +<p> </p> + +<h3 id="Custom_change_type">Custom change type</h3> + +<pre><code>// A point on a 2D plane +var point = {x: 0, y: 0, distance: 0}; + +function setPosition(pt, x, y) { + // Performing a custom change + Object.getNotifier(pt).performChange('reposition', function() { + var oldDistance = pt.distance; + pt.x = x; + pt.y = y; + pt.distance = Math.sqrt(x * x + y * y); + return {oldDistance: oldDistance}; + }); +} + +Object.observe(point, function(changes) { + console.log('Distance change: ' + (point.distance - changes[0].oldDistance)); +}, ['reposition']); + +setPosition(point, 3, 4); +// Distance change: 5</code></pre> + +<p> </p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p><a href="https://github.com/arv/ecmascript-object-observe">Черновое предложение к обсуждению для ECMAScript 7</a>.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> </div> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Object.observe")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.unobserve()")}} {{experimental_inline}}</li> + <li>{{jsxref("Array.observe()")}} {{experimental_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/parent/index.html b/files/ru/web/javascript/reference/global_objects/object/parent/index.html new file mode 100644 index 0000000000..d9e5c1ddd9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/parent/index.html @@ -0,0 +1,75 @@ +--- +title: Object.prototype.__parent__ +slug: Web/JavaScript/Reference/Global_Objects/Object/parent +tags: + - JavaScript + - Object + - Obsolete + - Property + - Prototype +translation_of: Archive/Web/JavaScript/Object.parent +--- +<div> + {{JSRef("Global_Objects", "Object")}} {{obsolete_header("2")}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>__parent__</code></strong> использовалось для указания контекста объекта, но было удалено.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.__parent__</code></pre> +<h2 id="Description" name="Description">Описание</h2> +<p>Для объектов верхнего уровня, это, например, окно.</p> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a class="external" href="http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/">Изменение дня в SpiderMonkey: специальное свойство __parent__ будет удалено</a></li> + <li><a href="/ru/docs/Components.utils.getGlobalForObject">Components.utils.getGlobalForObject</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html b/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html new file mode 100644 index 0000000000..6488f99506 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/preventextensions/index.html @@ -0,0 +1,120 @@ +--- +title: Object.preventExtensions() +slug: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object +translation_of: Web/JavaScript/Reference/Global_Objects/Object/preventExtensions +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<p>Метод <code><strong>Object.preventExtensions()</strong></code> предотвращает добавление новых свойств к объекту (то есть, предотвращает расширение этого объекта в будущем).</p> + +<p>{{EmbedInteractiveExample("pages/js/object-preventextensions.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="brush: js"><code>Object.preventExtensions(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, который нужно сделать нерасширяемым.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Объект, который делается нерасширяемым.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объект называется расширяемым, если к нему могут быть добавлены новые свойства. <code>Object.preventExtensions()</code> помечает объект как нерасширяемый, так что он никогда не будет иметь других свойств, кроме тех, что были у него на момент пометки его нерасширяемым. Обратите внимание, что, в общем случае, свойства нерасширяемого объекта всё ещё могут быть <em>удалены</em>. Попытка добавить новые свойства к нерасширяемому объекту потерпит неудачу, либо молча, либо с выбрасыванием исключения {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Functions_and_function_scope/Strict_mode", "строгом режиме", "", 1)}}).</p> + +<p>Метод <code>Object.preventExtensions()</code> предотвращает добавление только собственных свойств. Свойства всё ещё могут быть добавлены в прототип объекта. Однако, вызов <code>Object.preventExtensions()</code> на объекте также предотвращает расширение его свойства {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}}.</p> + +<p>Если превратить расширяемый объект в нерасширяемый возможно, в ECMAScript 5 нет никакого способа сделать обратную операцию.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">// Object.preventExtensions возвращает объект, который нужно сделать нерасширяемым. +var obj = {}; +var obj2 = Object.preventExtensions(obj); +assert(obj === obj2); + +// Объекты по умолчанию являются расширяемыми. +var empty = {}; +assert(Object.isExtensible(empty) === true); + +// ...но это может быть изменено. +Object.preventExtensions(empty); +assert(Object.isExtensible(empty) === false); + +// Object.defineProperty выбрасывает исключение при добавлении нового свойства в нерасширяемый объект. +var nonExtensible = { removable: true }; +Object.preventExtensions(nonExtensible); +Object.defineProperty(nonExtensible, 'new', { value: 8675309 }); // выбросит TypeError + +// В строгом режиме, попытки добавить новые свойства к нерасширяемому объекту, будут выбрасывать исключение TypeError. +function fail() { + 'use strict'; + nonExtensible.newProperty = 'ОШИБКА'; // выбросит TypeError +} +fail(); + +// РАСШИРЕНИЕ (работает только в движках, поддерживающих свойство __proto__ +// (которое является устаревшим. Используйте вместо него метод Object.getPrototypeOf)): +// нерасширяемые объекты неизменны. +var fixed = Object.preventExtensions({}); +fixed.__proto__ = { oh: 'hai' }; // выбросит TypeError +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться как простой нерасширяемый объект и метод его просто вернёт.</p> + +<pre class="brush: js">> Object.preventExtensions(1) +TypeError: 1 is not an object // код ES5 + +> Object.preventExtensions(1) +1 // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.10', 'Object.preventExtensions')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.preventextensions', 'Object.preventExtensions')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.preventExtensions")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.seal()")}}</li> + <li>{{jsxref("Object.isSealed()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.isFrozen()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html new file mode 100644 index 0000000000..018edd3ca3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/propertyisenumerable/index.html @@ -0,0 +1,173 @@ +--- +title: Object.prototype.propertyIsEnumerable() +slug: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +tags: + - JavaScript + - Method + - Object + - Prototype + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/propertyIsEnumerable +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>propertyIsEnumerable()</strong></code> возвращает логическое значение, указывающее, является ли указанное свойство перечисляемым.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.propertyIsEnumerable(<var>prop</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>prop</code></dt> + <dd>Имя проверяемого свойства.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Каждый объект имеет метод <code>propertyIsEnumerable</code>. Этот метод может определять, является ли указанное свойство в объекте перечисляемым в цикле {{jsxref("Statements/for...in", "for...in")}}, за исключением свойств, унаследованных из цепочки прототипов. Если объект не имеет указанного свойства, метод вернёт <code>false</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_A_basic_use_of_propertyIsEnumerable" name="Example:_A_basic_use_of_propertyIsEnumerable">Пример: базовое использование <code>propertyIsEnumerable</code></h3> +<p>Следующий пример показывает использование метода <code>propertyIsEnumerable</code> на объектах и массивах:</p> +<pre class="brush: js">var o = {}; +var a = []; +o.prop = 'перечисляемое'; +a[0] = 'перечисляемое'; + +o.propertyIsEnumerable('prop'); // вернёт true +a.propertyIsEnumerable(0); // вернёт true +</pre> + +<h3 id="Example:_User-defined_versus_built-in_objects" name="Example:_User-defined_versus_built-in_objects">Пример: определённые пользователем и встроенные объекты</h3> +<p>Следующий пример демонстрирует перечисляемость свойств, определённых пользователем и встроенных свойств:</p> +<pre class="brush: js">var a = ['перечисляемое']; + +a.propertyIsEnumerable(0); // вернёт true +a.propertyIsEnumerable('length'); // вернёт false + +Math.propertyIsEnumerable('random'); // вернёт false +this.propertyIsEnumerable('Math'); // вернёт false +</pre> + +<h3 id="Example:_Direct_versus_inherited_properties" name="Example:_Direct_versus_inherited_properties">Пример: собственные и унаследованные свойства</h3> +<pre class="brush: js">var a = []; +a.propertyIsEnumerable('constructor'); // вернёт false + +function firstConstructor() { + this.property = 'не перечисляемое'; +} + +firstConstructor.prototype.firstMethod = function() {}; + +function secondConstructor() { + this.method = function method() { return 'перечисляемый'; }; +} + +secondConstructor.prototype = new firstConstructor; +secondConstructor.prototype.constructor = secondConstructor; + +var o = new secondConstructor(); +o.arbitraryProperty = 'перечисляемое'; + +o.propertyIsEnumerable('arbitraryProperty'); // вернёт true +o.propertyIsEnumerable('method'); // вернёт true +o.propertyIsEnumerable('property'); // вернёт false + +o.property = 'перечисляемое'; + +o.propertyIsEnumerable('property'); // вернёт true + +// Эти вызовы вернут false, поскольку все свойства находятся в прототипе, +// который метод propertyIsEnumerable не просматривает (даже несмотря на то, +// что последние два свойства перечисляются через цикл for...in) +o.propertyIsEnumerable('prototype'); // вернёт false (в JS 1.8.1/FF3.6) +o.propertyIsEnumerable('constructor'); // вернёт false +o.propertyIsEnumerable('firstMethod'); // вернёт false +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.7', 'Object.prototype.propertyIsEnumerable')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.propertyisenumerable', 'Object.prototype.propertyIsEnumerable')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Особый случай с Gecko</h3> +<p>Начиная с JavaScript 1.8.1 (в Firefox 3.6), метод <code>propertyIsEnumerable('prototype')</code> возвращает <code>false</code> вместо <code>true</code>; это делает результат совместимым с ECMAScript 5.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a href="/ru/docs/Enumerability_and_ownership_of_properties">Перечисляемость и собственность свойств</a></li> + <li>{{jsxref("Statements/for...in", "for...in")}}</li> + <li>{{jsxref("Object.keys()")}}</li> + <li>{{jsxref("Object.defineProperty()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/proto/index.html b/files/ru/web/javascript/reference/global_objects/object/proto/index.html new file mode 100644 index 0000000000..3ee717a370 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/proto/index.html @@ -0,0 +1,151 @@ +--- +title: Object.prototype.__proto__ +slug: Web/JavaScript/Reference/Global_Objects/Object/proto +tags: + - JavaScript + - Object + - Property + - Prototype + - Reference + - Référence(2) +translation_of: Web/JavaScript/Reference/Global_Objects/Object/proto +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<div class="warning"> +<p><strong>Предупреждение:</strong> Изменение прототипа <code>[[Prototype]]</code> объекта является, по самой природе оптимизации доступа к свойствам в современных движках JavaScript, очень медленной операцией, это справедливо для <strong><em>любого</em></strong> браузера и движка JavaScript. Изменение прототипов очень тонко и обширно влияет на производительность, причём это влияние не ограничивается просто временем для операции присваивания <code>obj.__proto__ = ...</code>, оно может распространяться на <strong><em>любой</em></strong> код, который имеет доступ к <strong><em>любому</em></strong> объекту, чей прототип <code>[[Prototype]]</code> был изменён. Если вы заботитесь о производительности, вы никогда не должны изменять прототип <code>[[Prototype]]</code> объекта. Вместо этого создайте объект с нужным прототипом <code>[[Prototype]]</code>, с помощью метода {{jsxref("Object.create()")}}.</p> +</div> + +<div class="warning"> +<p><strong>Предупреждение:</strong> хотя на сегодняшний момент большинство браузеров поддерживают свойство <code>Object.prototype.__proto__</code>, его поведение только недавно было стандартизировано в новой спецификации ECMAScript 6. Если вам требуется поддержка браузеров до этой спецификации, рекомендуется использовать вместо него метод {{jsxref("Object.getPrototypeOf()")}}.</p> +</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <code>__proto__</code> объекта {{jsxref("Object.prototype")}} является свойством доступа (комбинацией геттера и сеттера), которое расширяет внутренний прототип <code>[[Prototype]]</code> объекта (являющийся объектом или {{jsxref("Global_Objects/null", "null")}}), через который осуществлялся доступ.</p> + +<p>Использование свойства <code>__proto__</code> вызывает споры и многих оно разочаровало. Ранее оно никогда не включалось в спецификацию EcmaScript, но современные браузеры всё равно решили его реализовать. Сегодня свойство <code>__proto__</code> стандартизировано в спецификации ECMAScript 6 и будет поддерживаться в будущем. Тем не менее, изменение прототипа <code>[[Prototype]]</code> объекта всё ещё остаётся медленной операцией, которую следует избегать, если вы беспокоитесь о производительности.</p> + +<p>Свойство <code>__proto__</code> также может использоваться при определении литерала объекта, устанавливая прототип <code>[[Prototype]]</code> объекта при его создании. Этот способ может рассматриваться как альтернатива методу {{jsxref("Object.create()")}}. Смотрите также <a href="/ru/docs/Web/JavaScript/Reference/Operators/Object_initializer">литеральный синтаскис инициализации объекта</a>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="brush: js">var shape = {}, circle = new Circle(); + +// Установка прототипа объекта +shape.__proto__ = circle; +// Получение прототипа объекта +console.log(shape.__proto__ === circle); // true +</pre> + +<p>Обратите внимание: название свойства состоит из двух подчёркиваний, следующих за ними пяти символов «proto» и следующих за ними ещё двух подчёркиваний.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Геттер свойства <code>__proto__</code> расширяет значение внутреннего прототипа <code>[[Prototype]]</code> объекта. Для объектов, созданных с использованием литеральной формы создания объекта, это значение равно {{jsxref("Object.prototype")}}. Для функций это значение равно {{jsxref("Function.prototype")}}. Для объектов, созданных с использованием формы <code>new fun</code>, где <code>fun</code> является одной из встроенных функций-конструкторов, предоставляемых JavaScript ({{jsxref("Global_Objects/Array", "Array")}}, {{jsxref("Global_Objects/Boolean", "Boolean")}}, {{jsxref("Global_Objects/Date", "Date")}}, {{jsxref("Global_Objects/Number", "Number")}}, {{jsxref("Global_Objects/Object", "Object")}}, {{jsxref("Global_Objects/String", "String")}} и так далее — включая новые конструкторы, добавленные в процессе развития JavaScript), это значение равно <code>fun.prototype</code>. Для объектов, созданных с использованием формы <code>new fun</code>, где <code>fun</code> является функцией, определённой в скрипте, это значение равно значению <code>fun.prototype</code> во время вычисления <code>new fun</code>. Именно поэтому при присваивании <code>fun.prototype</code> нового значения, ранее созданные экземпляры <code>fun</code> продолжат использовать предыдущее значение в качестве своего прототипа <code>[[Prototype]]</code>, а последующие вызовы <code>new fun</code> будут использовать вновь присвоенное значение в качестве своего прототипа <code>[[Prototype]]</code>.</p> + +<p>Геттер <code>__proto__</code> позволяет прототипу <code>[[Prototype]]</code> объекта быть изменяемым. Объект должен быть расширяемым в соответствии с {{jsxref("Object.isExtensible()")}}: если это не так, выкидывается исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. Предоставляемое значение должно быть объектом или {{jsxref("Global_Objects/null", "null")}}. Предоставление любого другого значения ничего не даст.</p> + +<p>Для понимания того, как прототипы используются для наследования, смотрите статью руководства <a href="/ru/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain">«Наследование и цепочки прототипов»</a>.</p> + +<p>Свойство <code>__proto__</code> является простым свойством доступа на объекте {{jsxref("Object.prototype")}} — свойством, состоящим из геттера и сеттера. Свойство <code>__proto__</code> будет найдено, если, в конечном итоге, его поиск пройдёт через {{jsxref("Object.prototype")}}, но при доступе к нему не через {{jsxref("Object.prototype")}}, оно найдено не будет. Если перед просмотром {{jsxref("Object.prototype")}} буден найдено какое-нибудь другое свойство <code>__proto__</code>, оно скроет искомое свойство {{jsxref("Object.prototype")}}.</p> + +<pre class="brush: js">var noProto = Object.create(null); + +console.log(typeof noProto.__proto__); // undefined +console.log(Object.getPrototypeOf(noProto)); // null + +noProto.__proto__ = 17; + +console.log(noProto.__proto__); // 17 +console.log(Object.getPrototypeOf(noProto)); // null + +var protoHidden = {}; +Object.defineProperty(protoHidden, '__proto__', + { value: 42, writable: true, configurable: true, enumerable: true }); + +console.log(protoHidden.__proto__); // 42 +console.log(Object.getPrototypeOf(protoHidden) === Object.prototype); // true +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<p>В следующем примере создаётся новый экземпляр <code>Employee</code>, а затем проверяется, что его свойство <code>__proto__</code> является тем же самым объектом, что и его конструктор <code>prototype</code>.</p> + +<pre class="brush: js">// Декларируем функцию, используемую как конструктор +function Employee() { + /* инициализируем экземпляр */ +} + +// Создаём новый экземпляр Employee +var fred = new Employee(); + +// Проверка на эквивалентность +fred.__proto__ === Employee.prototype; // true +</pre> + +<p>В этот момент <code>fred</code> унаследован от <code>Employee</code>, однако присваивание другого объекта в <code>fred.__proto__</code> может изменить это:</p> + +<pre class="brush: js">function Cow() { + /* инициализируем экземпляр */ +} + +// Присваиваем __proto__ новый объект +fred.__proto__ = Cow.prototype; +</pre> + +<p>Теперь <code>fred</code> наследуется непосредственно от <code>Cow.prototype</code>, а не от <code>Employee.prototype</code>, и теряет свойства, изначально унаследованные от <code>Employee.prototype</code>.</p> + +<p>Однако, это применяется только к {{jsxref("Object.isExtensible()", "расширяемым", "", 1)}} объектам, у нерасширяемых объектов свойство <code>__proto__</code> не может быть изменено:</p> + +<pre class="brush: js">var obj = {}; +Object.preventExtensions(obj); + +obj.__proto__ = {}; // выкинет TypeError +</pre> + +<p>Обратите внимание, что свойство <code>__proto__</code> может быть переопределено даже у объекта <code>Object.prototype</code>, если новая цепочка заканчивается {{jsxref("Global_Objects/null", "null")}}:</p> + +<pre class="brush: js">var b = {}; + +Object.prototype.__proto__ = + Object.create(null, // [[Prototype]] + { hi: { value: function() { alert('hi'); } } }); + +b.hi(); +</pre> + +<p>Если свойство <code>__proto__</code> объекта {{jsxref("Object.prototype")}} не установлено в {{jsxref("Global_Objects/null", "null")}}, или в другой объект, чья цепочка прототипов, в конечном итоге, явно не заканчивается значением {{jsxref("Global_Objects/null", "null")}}, будет выкинуто исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} «циклическое значение __proto__», поскольку цепочка должна заканчиваться {{jsxref("Global_Objects/null", "null")}} (как это и происходит на {{jsxref("Object.prototype")}} при нормальных обстоятельствах).</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-additional-properties-of-the-object.prototype-object', 'Object.prototype.__proto__')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Включён в (нормативное) приложение для дополнительных возможностей ECMAScript для веб-браузеров (обратите внимание, что спецификация закрепляет то, что уже реализовано).</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="note"> +<p><strong>Примечание:</strong> спецификация ES6 требует поддержку свойства <code>__proto__</code> только в браузерах и не требует его поддержку в других окружениях (хотя оно и рекомендуется в качестве обязательного). Если ваш код должен работать в не-браузерных окружениях, вместо свойства рекомендуется использовать методы {{jsxref("Object.getPrototypeOf()")}} и {{jsxref("Object.setPrototypeOf()")}}.</p> +</div> + +<div>{{Compat("javascript.builtins.Object.proto")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li> + <li>{{jsxref("Object.getPrototypeOf()")}}</li> + <li>{{jsxref("Object.setPrototypeOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/prototype/index.html b/files/ru/web/javascript/reference/global_objects/object/prototype/index.html new file mode 100644 index 0000000000..2a93da56b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/prototype/index.html @@ -0,0 +1,204 @@ +--- +title: Object.prototype +slug: Web/JavaScript/Reference/Global_Objects/Object/prototype +tags: + - JavaScript + - Object + - Property + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <code><strong>Object.prototype</strong></code> представляет объект прототипа {{jsxref("Global_Objects/Object", "Object")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Все объекты в JavaScript являются потомками {{jsxref("Global_Objects/Object", "Object")}}; все объекты наследуют методы и свойства из прототипа объекта <code>Object.prototype</code>, хотя они и могут быть переопределены (за исключением объекта <code>Object</code> с прототипом <code>null</code>, то есть, созданным вызовом <code>Object.create(null)</code>). Например, прототипы других конструкторов переопределяют свойство <code>constructor</code> и предоставляют свои собственные методы {{jsxref("Object.prototype.toString()", "toString()")}}. Изменения в объекте прототипа {{jsxref("Global_Objects/Object", "Object")}} распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("Object.prototype.constructor")}}</dt> + <dd>Определяет функцию, создающую прототип объекта.</dd> + <dt>{{jsxref("Object.proto", "Object.prototype.__proto__")}} {{non-standard_inline}}</dt> + <dd>Указывает на объект, который использовался в качестве прототипа при инстанцировании объекта.</dd> + <dt>{{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} {{non-standard_inline}}</dt> + <dd>Позволяет определить функцию, выполняющуюся при вызове в качестве метода неопределённого члена объекта.</dd> + <dt><s class="obsoleteElement">{{jsxref("Object.count", "Object.prototype.__count__")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Использовалось для возврата количества перечисляемых свойств, определённых напрямую на пользовательском объекте, но было удалено.</s></dd> + <dt><s class="obsoleteElement">{{jsxref("Object.parent", "Object.prototype.__parent__")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Использовалось для указания контекста объекта, но было удалено.</s></dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Object.defineGetter", "Object.prototype.__defineGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt> + <dd>Ассоциирует функцию со свойством, которое, при доступе к нему, выполняет эту функцию и возвращает её возвращаемое значение.</dd> + <dt>{{jsxref("Object.defineSetter", "Object.prototype.__defineSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt> + <dd>Ассоциирует функцию со свойством, которое, при его установке, выполняет эту функцию, изменяющую свойство.</dd> + <dt>{{jsxref("Object.lookupGetter", "Object.prototype.__lookupGetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt> + <dd>Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineGetter", "__defineGetter__")}}.</dd> + <dt>{{jsxref("Object.lookupSetter", "Object.prototype.__lookupSetter__()")}} {{non-standard_inline}} {{deprecated_inline}}</dt> + <dd>Возвращает функцию, ассоциированную с указанным свойством методом {{jsxref("Object.defineSetter", "__defineSetter__")}}.</dd> + <dt>{{jsxref("Object.prototype.hasOwnProperty()")}}</dt> + <dd>Возвращает логическое значение, указывающее, содержит ли указанное свойство непосредственно объект, или он унаследовал его по цепочке прототипов.</dd> + <dt>{{jsxref("Object.prototype.isPrototypeOf()")}}</dt> + <dd>Возвращает логическое значение, указывающее, состоит ли указанный объект в цепочке прототипов объекта, на котором был вызван данный метод.</dd> + <dt>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</dt> + <dd>Возвращает логическое значение, указывающее, установлен ли внутренний <a href="/ru/docs/ECMAScript_DontEnum_attribute">атрибут ECMAScript DontEnum</a>.</dd> + <dt>{{jsxref("Object.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает строку, содержащую исходный код объекта в литеральной форме, представляющего объект, на котором был вызван данный метод; вы можете использовать это значение для создания нового объекта.</dd> + <dt>{{jsxref("Object.prototype.toLocaleString()")}}</dt> + <dd>Вызывает {{jsxref("Object.toString", "toString()")}}.</dd> + <dt>{{jsxref("Object.prototype.toString()")}}</dt> + <dd>Возвращает строковое представление объекта.</dd> + <dt>{{jsxref("Object.prototype.unwatch()")}} {{non-standard_inline}}</dt> + <dd>Удаляет точку наблюдения (watchpoint) со свойства объекта.</dd> + <dt>{{jsxref("Object.prototype.valueOf()")}}</dt> + <dd>Возвращает значение примитива указанного объекта.</dd> + <dt>{{jsxref("Object.prototype.watch()")}} {{non-standard_inline}}</dt> + <dd>Добавляет точку наблюдения (watchpoint) к свойству объекта.</dd> + <dt><s class="obsoleteElement">{{jsxref("Object.prototype.eval()")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Использовался для вычисления строки с JavaScript-кодом в контексте указанного объекта, но был удалён.</s></dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<p>Поскольку Javascript, строго говоря, не имеет объекты подклассов, прототип является полезным обходным путём создания объекта «базового класса» из определённых функций, которые выступают в роли объектов. Например:</p> + +<pre class="brush: js">var Person = function(name) { + this.name = name; + this.canTalk = true; + this.greet = function() { + if (this.canTalk) { + console.log('Привет, я ' + this.name); + } + }; +}; + +var Employee = function(name, title) { + this.name = name; + this.title = title; + this.greet = function() { + if (this.canTalk) { + console.log('Привет, я ' + this.name + ', ' + this.title); + } + }; +}; +Employee.prototype = new Person(); + +var Customer = function(name) { + this.name = name; +}; +Customer.prototype = new Person(); + +var Mime = function(name) { + this.name = name; + this.canTalk = false; +}; +Mime.prototype = new Person(); + +var bob = new Employee('Боб', 'Строитель'); +var joe = new Customer('Джо'); +var rg = new Employee('Ред Грин', 'Разнорабочий'); +var mike = new Customer('Майк'); +var mime = new Mime('Мим'); +bob.greet(); +joe.greet(); +rg.greet(); +mike.greet(); +mime.greet(); +</pre> + +<p>Вывод будет следующим:</p> + +<pre class="brush: js">Привет, я Боб, Строитель +Привет, я Джо +Привет, я Ред Грин, Разнорабочий +Привет, я Майк +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.1', 'Object.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype', 'Object.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/object/seal/index.html b/files/ru/web/javascript/reference/global_objects/object/seal/index.html new file mode 100644 index 0000000000..6514429ca6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/seal/index.html @@ -0,0 +1,119 @@ +--- +title: Object.seal() +slug: Web/JavaScript/Reference/Global_Objects/Object/seal +tags: + - ECMAScript5 + - JavaScript + - JavaScript 1.8.5 + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/seal +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<p>Метод <strong><code>Object.seal()</code></strong> запечатывает объект, предотвращая добавление новых свойств к объекту и делая все существующие свойства не настраиваемыми. Значения представленных свойств всё ещё могут изменяться, поскольку они остаются записываемыми.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.seal(<var>obj</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Запечатываемый объект.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>По умолчанию, объекты являются {{jsxref("Object.isExtensible()", "расширяемыми", "", 1)}} (к ним могут добавляться новые свойства). Запечатывание объекта предотвращает добавление к нему новых свойств и делает все существующие свойства не настраиваемыми. Оно делает все свойства объекта фиксированными и неизменными. Пометка всех свойств объекта как не настраиваемых также предотвращает их преобразование из свойств данных в свойства доступа и наоборот, но не предотвращает изменение значения свойств данных. Попытки удаления или добавления свойств к запечатанному объекту, либо преобразования свойств данных в свойства доступа и наоборот, будут терпеть неудачу, либо молча, либо с выбрасыванием исключения {{jsxref("Global_Objects/TypeError", "TypeError")}} (как правило, но не обязательно, это происходит в {{jsxref("Strict_mode", "строгом режиме", "", 1)}}).</p> + +<p>Цепочка прототипов не затрагивается. Однако, свойство {{jsxref("Object.proto", "__proto__")}} {{deprecated_inline}} также запечатыватся.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var obj = { + prop: function() {}, + foo: 'bar' +}; + +// Новые свойства могу быть добавлены, существующие свойства могут быть изменены или удалены. +obj.foo = 'baz'; +obj.lumpy = 'woof'; +delete obj.prop; + +var o = Object.seal(obj); + +assert(o === obj); +assert(Object.isSealed(obj) === true); + +// Изменение значений свойств на запечатанном объекте всё ещё работает. +obj.foo = 'quux'; + +// Но вы не можете преобразовать свойства данных в свойства доступа и наоборот. +Object.defineProperty(obj, 'foo', { get: function() { return 'g'; } }); // выбросит TypeError + +// Теперь любые изменения, кроме изменения значений свойств, не будут работать. +obj.quaxxor = 'дружелюбная утка'; // молча не добавит свойство +delete obj.foo; // молча не удалит свойство + +// ...а в строгом режиме такие попытки будут выбрасывать исключения TypeError. +function fail() { + 'use strict'; + delete obj.foo; // выбросит TypeError + obj.sparky = 'arf'; // выбросит TypeError +} +fail(); + +// Попытка добавить что-то через Object.defineProperty также выбросит исключение. +Object.defineProperty(obj, 'ohai', { value: 17 }); // выбросит TypeError +Object.defineProperty(obj, 'foo', { value: 'eit' }); // изменяем значение существующего свойства +</pre> + +<h2 id="Notes" name="Notes">Примечания</h2> + +<p>В ES5, если аргумент метода не является объектом (является примитивным значением), будет выброшено исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}. В ES6 такой аргумент будет рассматриваться, как простой запечатанный объект и метод его просто вернёт.</p> + +<pre class="brush: js">> Object.seal(1) +TypeError: 1 is not an object // код ES5 + +> Object.seal(1) +1 // код ES6 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.3.8', 'Object.seal')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.5.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.seal', 'Object.seal')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.seal")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.isSealed()")}}</li> + <li>{{jsxref("Object.preventExtensions()")}}</li> + <li>{{jsxref("Object.isExtensible()")}}</li> + <li>{{jsxref("Object.freeze()")}}</li> + <li>{{jsxref("Object.isFrozen()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html b/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html new file mode 100644 index 0000000000..2baf613db5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/setprototypeof/index.html @@ -0,0 +1,256 @@ +--- +title: Object.setPrototypeOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Object + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<div class="warning"> +<p><strong>Предупреждение:</strong> Изменение прототипа <code>[[Prototype]]</code> объекта является, по самой природе оптимизации доступа к свойствам в современных движках JavaScript, очень медленной операцией, это справедливо для <strong><em>любого</em></strong> браузера и движка JavaScript. Изменение прототипов очень тонко и обширно влияет на производительность, причём это влияние не ограничивается просто временем, проведённым внутри метода <code>Object.setPrototypeOf()</code>, оно может распространяться на <strong><em>любой</em></strong> код, который имеет доступ к <strong><em>любому</em></strong> объекту, чей прототип <code>[[Prototype]]</code> был изменён. Если вы заботитесь о производительности, вы никогда не должны изменять прототип <code>[[Prototype]]</code> объекта. Вместо этого создайте объект с нужным прототипом <code>[[Prototype]]</code>, с помощью метода {{jsxref("Object.create()")}}.</p> +</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>Object.setPrototypeOf()</code></strong> устанавливает прототип (то есть, внутреннее свойство <code>[[Prototype]]</code>) указанного объекта в другой объект или {{jsxref("null")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.setPrototypeOf(<var>obj</var>, <var>prototype</var>);</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, которому устанавливается прототип.</dd> + <dt><code>prototype</code></dt> + <dd>Новый прототип объекта (объект или {{jsxref("null")}}).</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Выкидывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}, если объект, чей прототип <code>[[Prototype]]</code> является не расширяемым, согласно методу {{jsxref("Object.isExtensible()")}}. Не делает ничего, если параметр <code>prototype</code> не является объектом или значением {{jsxref("null")}} (то есть, является числом, строкой, логическим значением или {{jsxref("undefined")}}). В противном случае метод устанавливает прототип <code>[[Prototype]]</code> объекта <code>obj</code> в новое значение.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">var dict = Object.setPrototypeOf({}, null); +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Используя старое свойство {{jsxref("Object.proto", "Object.prototype.__proto__")}}, мы можем легко определить <code>Object.setPrototypeOf()</code>, если он ещё не доступен:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">if</span><span class="function token"> </span><span class="punctuation token">(</span><span class="parameter token"><span class="operator token">!</span>Object<span class="punctuation token">.</span>setPrototypeOf</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="class-name token"> Object</span><span class="punctuation token">.</span>prototype<span class="punctuation token">.</span><span class="function function-variable token">setPrototypeOf </span><span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="parameter token">obj<span class="punctuation token">,</span> proto</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">if</span><span class="punctuation token">(</span>obj<span class="punctuation token">.</span>__proto__<span class="punctuation token">)</span> <span class="punctuation token">{</span> + obj<span class="punctuation token">.</span>__proto__ <span class="operator token">=</span> proto<span class="punctuation token">;</span> + <span class="keyword token">return</span> obj<span class="punctuation token">;</span> + <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span> + <span class="comment token">// Если нужно будет определить прототип у Object.create(null) объекта</span> + <span class="function function-variable token">var Fn </span><span class="operator token">=</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">var</span> key <span class="keyword token">in</span> obj<span class="punctuation token">)</span> <span class="punctuation token">{ //Если в объект уже были определены некоторые свойства</span> + Object<span class="punctuation token">.</span><span class="function token">defineProperty</span><span class="punctuation token">(</span><span class="keyword token">this</span><span class="punctuation token">,</span> key<span class="punctuation token">,</span> <span class="punctuation token">{</span> + value<span class="punctuation token">:</span> obj<span class="punctuation token">[</span>key<span class="punctuation token">]</span><span class="punctuation token">,</span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> + <span class="punctuation token">}</span><span class="punctuation token">;</span> + <span class="class-name token">Fn</span><span class="punctuation token">.</span>prototype <span class="operator token">=</span> proto<span class="punctuation token">;</span> + <span class="keyword token">return</span> <span class="keyword token">new</span> <span class="class-name token">Fn</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span></code></pre> + +<h2 id="Appending_Prototype_Chains" name="Appending_Prototype_Chains">Добавление цепочки прототипов</h2> + +<p>Сочетание метода <code>Object.getPrototypeOf()</code> и свойства {{jsxref("Object.proto", "Object.prototype.__proto__")}} позволяет добавить целую цепочку прототипов к новому прототипу объекта:</p> + +<pre class="brush: js">/** +*** Object.appendChain(@object, @prototype) +* +* Присоединяет первый неродной прототип цепочки к новому прототипу. +* Возвращает @object (если он был примитивным значением, оно будет преобразовано в объект). +* +*** Object.appendChain(@object [, "@arg_name_1", "@arg_name_2", "@arg_name_3", "..."], "@function_body") +*** Object.appendChain(@object [, "@arg_name_1, @arg_name_2, @arg_name_3, ..."], "@function_body") +* +* Присоединяет первый не родной прототип цепочки к родному объекту Function.prototype, затем присоединяет +* new Function(["@arg"(s)], "@function_body") к этой цепочке. +* Возвращает функцию. +* +**/ + +Object.appendChain = function(oChain, oProto) { + if (arguments.length < 2) { + throw new TypeError('Object.appendChain - Not enough arguments'); + } + if (typeof oProto === 'number' || typeof oProto === 'boolean') { + throw new TypeError('second argument to Object.appendChain must be an object or a string'); + } + + var oNewProto = oProto, + oReturn = o2nd = oLast = oChain instanceof this ? oChain : new oChain.constructor(oChain); + + for (var o1st = this.getPrototypeOf(o2nd); + o1st !== Object.prototype && o1st !== Function.prototype; + o1st = this.getPrototypeOf(o2nd) + ) { + o2nd = o1st; + } + + if (oProto.constructor === String) { + oNewProto = Function.prototype; + oReturn = Function.apply(null, Array.prototype.slice.call(arguments, 1)); + this.setPrototypeOf(oReturn, oLast); + } + + this.setPrototypeOf(o2nd, oNewProto); + return oReturn; +} +</pre> + +<h3 id="Usage" name="Usage">Использование</h3> + +<h4 id="First_example.3A_Appending_a_chain_to_a_prototype" name="First_example.3A_Appending_a_chain_to_a_prototype">Первый пример: присоединение цепочки к прототипу</h4> + +<pre class="brush: js">function Mammal() { + this.isMammal = 'да'; +} + +function MammalSpecies(sMammalSpecies) { + this.species = sMammalSpecies; +} + +MammalSpecies.prototype = new Mammal(); +MammalSpecies.prototype.constructor = MammalSpecies; + +var oCat = new MammalSpecies('Felis'); + +alert(oCat.isMammal); // 'да' + +function Animal() { + this.breathing = 'да'; +} + +Object.appendChain(oCat, new Animal()); + +alert(oCat.breathing); // 'да' +</pre> + +<h4 id="Second_example.3A_Transforming_a_primitive_value_into_an_instance_of_its_constructor_and_append_its_chain_to_a_prototype" name="Second_example.3A_Transforming_a_primitive_value_into_an_instance_of_its_constructor_and_append_its_chain_to_a_prototype">Второй пример: преобразование примитивного значения в экземпляр его конструктора и присоединение его цепочки к прототипу</h4> + +<pre class="brush: js">function Symbol() { + this.isSymbol = 'да'; +} + +var nPrime = 17; + +alert(typeof nPrime); // 'number' + +var oPrime = Object.appendChain(nPrime, new Symbol()); + +alert(oPrime); // '17' +alert(oPrime.isSymbol); // 'да' +alert(typeof oPrime); // 'object' +</pre> + +<h4 id="Third_example.3A_Appending_a_chain_to_the_Function.prototype_object_and_appending_a_new_function_to_that_chain" name="Third_example.3A_Appending_a_chain_to_the_Function.prototype_object_and_appending_a_new_function_to_that_chain">Третий пример: присоединение цепочки к объекту <code>Function.prototype</code> и новой функции к этой цепочке</h4> + +<pre class="brush: js">function Person(sName) { + this.identity = sName; +} + +var george = Object.appendChain(new Person('Георг'), + 'alert("Привет, парни!!");'); + +alert(george.identity); // 'Георг' +george(); // 'Привет, парни!!' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.setprototypeof', 'Object.setProtoypeOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("34")}}<br> + Смотрите <a href="https://code.google.com/p/v8/issues/detail?id=2675">Замечание 2675</a></td> + <td>{{CompatGeckoDesktop("31")}}<br> + Смотрите {{bug("885788")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("31")}}<br> + Смотрите {{bug("885788")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.isPrototypeOf()")}}</li> + <li>{{jsxref("Object.getPrototypeOf()")}}</li> + <li>{{jsxref("Object.prototype.__proto__")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html b/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html new file mode 100644 index 0000000000..d420368420 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tolocalestring/index.html @@ -0,0 +1,103 @@ +--- +title: Object.prototype.toLocaleString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toLocaleString +--- +<div> + {{JSRef("Global_Objects", "Object")}}</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>toLocaleString()</strong></code> возвращает строку, представляющую объект. Этот метод предназначен для переопределения унаследованными объектами в целях поддержки зависимости от локали.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.toLocaleString();</code></pre> +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toLocaleString</code> объекта {{jsxref("Global_Objects/Object", "Object")}} возвращает результат вызова метода {{jsxref("Object.toString", "toString()")}}.</p> +<p>Эта функция обеспечивает объектам обобщённый метод <code>toLocaleString</code>, хотя и не все объекты могут её использовать. Смотрите ниже список таких объектов.</p> +<h3 id="Objects_overriding_toLocaleString" name="Objects_overriding_toLocaleString">Объекты, переопределяющие <code>toLocaleString</code></h3> +<ul> + <li>{{jsxref("Global_Objects/Array", "Array")}}: {{jsxref("Array.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Global_Objects/Number", "Number")}}: {{jsxref("Number.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Global_Objects/Date", "Date")}}: {{jsxref("Date.prototype.toLocaleString()")}}</li> +</ul> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.3', 'Object.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.tolocalestring', 'Object.prototype.toLocaleString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/tosource/index.html b/files/ru/web/javascript/reference/global_objects/object/tosource/index.html new file mode 100644 index 0000000000..bf59aac80a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tosource/index.html @@ -0,0 +1,138 @@ +--- +title: Object.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Object/toSource +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource +--- +<div>{{JSRef("Global_Objects", "Object")}} {{non-standard_header}}</div> + +<p>Метод <strong><code>toSource()</code></strong> возвращает строку, представляющую исходный код объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Object.toSource(); +<var>obj</var>.toSource();</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>toSource()</code> возвращает следующие значения:</p> + +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/Object", "Object")}}, метод <code>toSource()</code> возвращает следующую строку, указывающую, что исходный код не доступен: + + <pre class="brush: js">function Object() { + [native code] +} +</pre> + </li> + <li>Для экземпляров {{jsxref("Global_Objects/Object", "Object")}}, метод <code>toSource()</code> возвращает строку, представляющую исходный код.</li> +</ul> + +<p>Вы можете вызывать метод <code>toSource()</code> во время отладки для просмотра содержимого объекта.</p> + +<h3 id="Overriding_the_toSource_method" name="Overriding_the_toSource_method">Переопределение метода <code>toSource()</code></h3> + +<p>Вы можете безопасно переопределять метод <code>toSource()</code> для объектов. Например:</p> + +<pre class="brush: js">function Person(name) { + this.name = name; +} + +Person.prototype.toSource = function Person_toSource() { + return 'new Person(' + uneval(this.name) + ')'; +}; + +console.log(new Person('Joe').toSource()); // ---> new Person("Joe") +</pre> + +<h3 id="Built-in_toString_methods" name="Built-in_toString_methods">Встроенные методы <code>toSource()</code></h3> + +<p>Каждый тип ядра JavaScript имеет свой собственный метод <code>toSource()</code>. Вот эти объекты:</p> + +<ul> + <li>{{jsxref("Array.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Array", "Array")}}.</li> + <li>{{jsxref("Boolean.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Boolean", "Boolean")}}.</li> + <li>{{jsxref("Date.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Date", "Date")}}.</li> + <li>{{jsxref("Function.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Function", "Function")}}.</li> + <li>{{jsxref("Number.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Number", "Number")}}.</li> + <li>{{jsxref("Regexp.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.</li> + <li>{{jsxref("String.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/String", "String")}}.</li> + <li>{{jsxref("Symbol.prototype.toSource()")}} {{non-standard_inline}} — метод объекта {{jsxref("Global_Objects/Symbol", "Symbol")}}.</li> + <li><code>Math.toSource()</code> — возвращает строку "Math".</li> +</ul> + +<h3 id="Limitations_on_cyclical_objects" name="Limitations_on_cyclical_objects">Ограничение на циклические объекты</h3> + +<p>В том случае, если объекты содержат ссылки на самих себя, например циклический связанный список или дерево, которое можно обходить в обоих направлениях, метод <code>toSource()</code> не создаёт такие ссылки, начиная с Firefox 24. Например:</p> + +<pre class="brush: js">var obj1 = {}; +var obj2 = { a: obj1 }; +obj1.b = obj2; + +console.log('Циклическая ссылка: ' + (obj1.b.a == obj1)); + +var objSource = obj1.toSource(); // вернёт "({b:{a:{}}})" + +obj1 = eval(objSource); + +console.log('Циклическая ссылка: ' + (obj1.b.a == obj1)); +</pre> + +<p>Если же вам позарез нужно использовать метод <code>toSource()</code> для циклической структуры, объект должен предоставить переопределённый метод <code>toSource()</code>, либо с помощью ссылки на конструктор, либо предоставив анонимную функцию.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toSource" name="Example:_Using_toSource">Пример: использование метода <code>toSource()</code></h3> + +<p>Следующий код определяет тип объекта <code>Dog</code> и создаёт объект <code>theDog</code> типа <code>Dog</code>:</p> + +<pre class="brush: js">function Dog(name, breed, color, sex) { + this.name = name; + this.breed = breed; + this.color = color; + this.sex = sex; +} + +theDog = new Dog('Болтушка', 'лабрадор', 'шоколадный', 'девочка'); +</pre> + +<p>Вызов метода <code>toSource()</code> на объекте <code>theDog</code> отобразит исходный код JavaScript, который определяет объект:</p> + +<pre class="brush: js">theDog.toSource(); +// вернёт ({name:"Болтушка", breed:"лабрадор", color:"шоколадный", sex:"девочка"}) +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Object.toSource")}}</p> + +<p> </p> + +<div> </div> + +<div id="compat-mobile"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/tostring/index.html b/files/ru/web/javascript/reference/global_objects/object/tostring/index.html new file mode 100644 index 0000000000..e9a1b0b116 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/tostring/index.html @@ -0,0 +1,139 @@ +--- +title: Object.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/Object/toString +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>toString()</strong></code> возвращает строку, представляющую объект.</p> + +<p>{{EmbedInteractiveExample("pages/js/object-prototype-tostring.html")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>obj</var>.toString()</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Строка, представляющая объект.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Каждый объект имеет метод <code>toString()</code>, автоматически вызывающийся, когда объект должен быть представлен в виде текстового значения или когда объект участвует в выражении, где ожидается строка. По умолчанию, метод <code>toString()</code> наследуется каждым объектом, произошедшим от объекта {{jsxref("Global_Objects/Object", "Object")}}. Если этот метод не переопределён в пользовательском объекте, <code>toString()</code> возвращает строку вида "[object <em>тип</em>]", где <code><em>тип</em></code> — это тип объекта. Это иллюстрирует следующий код:</p> + +<pre class="brush: js">var o = new Object(); +o.toString(); // вернёт [object Object] +</pre> + +<div class="note"> +<p><strong>Примечание:</strong> начиная с JavaScript 1.8.5, метод <code>toString()</code>, вызванный на {{jsxref("Global_Objects/null", "null")}}, возвращает строку <code>[object <em>Null</em>]</code>, а вызванный для {{jsxref("Global_Objects/undefined", "undefined")}}, возвращает строку <code>[object <em>Undefined</em>]</code>, как определено в 5-м издании ECMAScript и последующих исправлениях. Смотрите пример {{anch("Using_toString_to_detect_object_type", "использование метода toString() для определения типа объекта")}}.</p> +</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Overriding_the_default_toString_method" name="Example:_Overriding_the_default_toString_method">Пример: переопределение метода <code>toString</code> по умолчанию</h3> + +<p>Вы можете создать функцию, которая будет вызываться вместо метода <code>toString()</code> по умолчанию. Метод <code>toString()</code> не принимает аргументов и должен возвращать строку. Создаваемый вами метод <code>toString()</code> может возвращать любую строку, какую вы захотите, но он будет наиболее полезным, если будет возвращать информацию об объекте.</p> + +<p>Следующий код определяет объект <code>Dog</code> и создаёт <code>theDog</code>, объект типа <code>Dog</code>:</p> + +<pre class="brush: js">function Dog(name, breed, color, sex) { + this.name = name; + this.breed = breed; + this.color = color; + this.sex = sex; +} + +theDog = new Dog('Болтушка', 'лабрадор', 'шоколадный', 'девочка'); +</pre> + +<p>Если вы вызовете метод <code>toString()</code> на этом пользовательском объекте, он вернёт значение по умолчанию, унаследованное от {{jsxref("Global_Objects/Object", "Object")}}:</p> + +<pre class="brush: js">theDog.toString(); // вернёт [object Object] +</pre> + +<p>Следующий код создаёт и присваивает метод <code>dogToString()</code>, переопределяющий метод <code>toString()</code> по умолчанию. Эта функция генерирует строку, содержащую кличку, породу, цвет и пол объекта, в форме "<code>свойство = значение;</code>".</p> + +<pre class="brush: js">Dog.prototype.toString = function dogToString() { + var ret = 'Собачка ' + this.name + ' - ' + this.sex + ', ' + this.color + ' ' + this.breed; + return ret; +} +</pre> + +<p>или</p> + +<pre class="brush: js">Dog.prototype.toString = function dogToString() { + return `Dog ${this.name} is a ${this.sex} ${this.color} ${this.breed}`; +}</pre> + +<p>После объявления этого метода, при любом использовании переменной <code>theDog</code> в строковом контексте, JavaScript будет автоматически вызывать функцию <code>dogToString()</code>, возвращающую следующую строку:</p> + +<pre>Собачка Болтушка - девочка, шоколадный лабрадор +</pre> + +<h3 id="Example_Using_toString_to_detect_object_type" name="Example:_Using_toString_to_detect_object_type">Пример: использование метода <code>toString</code> для определения типа объекта</h3> + +<p>Метод <code>toString()</code> можно использовать с любым объектом для получения его класса. Для использования метода <code>Object.prototype.toString()</code> с любым объектом, вам необходимо вызвать на нём функции {{jsxref("Function.prototype.call()")}} или {{jsxref("Function.prototype.apply()")}}, передав объект, который вы хотите исследовать, первым параметром <code>thisArg</code>.</p> + +<pre class="brush: js">var toString = Object.prototype.toString; + +toString.call(new Date); // [object Date] +toString.call(new String); // [object String] +toString.call(Math); // [object Math] + +// Начиная с JavaScript 1.8.5 +toString.call(undefined); // [object Undefined] +toString.call(null); // [object Null] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.tostring', 'Object.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.2', 'Object.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Вызов метода на {{jsxref("Global_Objects/null", "null")}} вернёт <code>[object <em>Null</em>]</code>, а на {{jsxref("Global_Objects/undefined", "undefined")}} — <code>[object <em>Undefined</em>]</code></td> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div></div> + +<div id="compat-mobile">{{Compat("javascript.builtins.Object.toString")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> + <li>{{jsxref("Number.prototype.toString()")}}</li> + <li>{{jsxref("Symbol.toPrimitive")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html b/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html new file mode 100644 index 0000000000..bf3ef676f3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/unobserve/index.html @@ -0,0 +1,97 @@ +--- +title: Object.unobserve() +slug: Web/JavaScript/Reference/Global_Objects/Object/unobserve +translation_of: Archive/Web/JavaScript/Object.unobserve +--- +<div>{{JSRef}} {{obsolete_header}}</div> + +<p>Метод <strong><code>Object.unobserve()</code></strong> удаляет наблюдатель, который был добавлен с помощью {{jsxref("Object.observe()")}}. Вы можете использовать {{jsxref("Proxy")}} вместо данного метода.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Object.unobserve(<var>obj</var>, <var>callback</var>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, за которым необходимо прекратить наблюдение.</dd> + <dt><code>callback</code></dt> + <dd>Ссылка на наблюдатель, который нужно остановить на <code>obj</code>.</dd> +</dl> + +<h3 id="Возаращаемое_значение">Возаращаемое значение</h3> + +<p>Указанный объект.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>Object.unobserve()</code> вызывается после {{jsxref("Object.observe()")}}, чтобы удалить наблюдатель на объекте.</p> + +<p>В <code>callback</code> нужно передавать ссылку на функцию, которая не является анонимной. Если вызвать <strong>Object.unobserve()</strong> с анонмной функцией в <code>callback</code>, то ни один наблюдатель не будет удалён.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Удаление_наблюдателя_с_объекта">Удаление наблюдателя с объекта</h3> + +<pre class="brush: js">var obj = { + foo: 0, + bar: 1 +}; + +var observer = function(changes) { + console.log(changes); +} + +Object.observe(obj, observer); + +obj.newProperty = 2; +// [{name: 'newProperty', object: <obj>, type: 'add'}] + +Object.unobserve(obj, observer); + +obj.foo = 1; +// callback не был вызван</pre> + +<h3 id="Вызов_с_анонимной_функцией">Вызов с анонимной функцией</h3> + +<pre class="brush: js">var person = { + name: 'Ahmed', + age: 25 +}; + +Object.observe(person, function(changes) { + console.log(changes); +}); + +person.age = 40; +// [{name: 'age', object: <obj>, oldValue: 25, type: 'update'}] + +Object.unobserve(person, function(changes) { + console.log(changes); +}); + +person.age = 63; +// [{name: 'age', object: <obj>, oldValue: 40, type: 'update'}] +// callback был вызван +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<p><a href="https://github.com/arv/ecmascript-object-observe">Strawman proposal specification</a>.</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Object.unobserve")}}</p> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Object.observe()")}} {{obsolete_inline}}</li> + <li>{{jsxref("Array.observe()")}} {{obsolete_inline}}</li> + <li>{{jsxref("Array.unobserve()")}} {{obsolete_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html b/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html new file mode 100644 index 0000000000..e862406f3d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/unwatch/index.html @@ -0,0 +1,93 @@ +--- +title: Object.prototype.unwatch() +slug: Web/JavaScript/Reference/Global_Objects/Object/unwatch +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Archive/Web/JavaScript/Object.unwatch +--- +<div> + {{JSRef("Global_Objects", "Object")}}</div> +<div class="warning"> + <p><strong>Предупреждение:</strong> обычно, при возможности, вам следует избегать использования <code>unwatch()</code> и {{jsxref("Object.prototype.watch", "watch()")}}. Эти два метода реализованы только в Gecko, и они, в основном, предназначены только для отладочных целей. Кроме того, использование точек наблюдения серьёзно бъёт по производительности, что особенно заметно при использовании их на глобальных объектах, например <code>window</code>. Обычно вместо них вы можете использовать <a href="/ru/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">сеттеры и геттеры</a> или прокси. Для более подробной информации смотрите раздел {{anch("Browser_compatibility", "Совместимость с браузерами")}}.</p> +</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>unwatch()</strong></code> удаляет точку наблюдения, установленную методом {{jsxref("Object.prototype.watch", "watch()")}}.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.unwatch(<var>prop</var>)</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt> + <code>prop</code></dt> + <dd> + Имя свойства объекта, чьи изменения вы хотите прекратить отслеживать.</dd> +</dl> +<h2 id="Description" name="Description">Описание</h2> +<p>Отладчик JavaScript имеет функциональность, аналогичную предоставляемой этим методом, а также и другие возможности отладки. Информацию по отладчику можно получить в статье про <a href="/ru/docs/Venkman">Venkman</a>.</p> +<p>По умолчанию, этот метод наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}.</p> +<div class="note"> + <p><strong>Примечание:</strong> причина, по которой метод <code>unwatch()</code> принимает единственным параметром только имя свойства <em>prop</em> в том, что для метода {{jsxref("Object.watch", "watch()")}} разрешён только один обработчик.</p> +</div> +<h2 id="Examples" name="Examples">Примеры</h2> +<p>Смотрите метод {{jsxref("Object.watch", "watch()")}}.</p> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации. Реализована в JavaScript 1.2.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div class="note"> + <p><strong>Примечание:</strong> вызов <code>unwatch()</code> на объекте {{domxref("Document")}}, начиная с Firefox 23, выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} ({{bug(903332)}}). Эта регрессия была поправлена в Firefox 27.</p> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.watch()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/valueof/index.html b/files/ru/web/javascript/reference/global_objects/object/valueof/index.html new file mode 100644 index 0000000000..bd1f5b1994 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/valueof/index.html @@ -0,0 +1,141 @@ +--- +title: Object.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Object/valueOf +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/valueOf +--- +<div>{{JSRef("Global_Objects", "Object")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <code><strong>valueOf()</strong></code> возвращает примитивное значение указанного объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>object</var>.valueOf()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>JavaScript вызывает метод <code>valueOf</code> для преобразования объекта в примитивное значение. Вам редко потребуется вызывать метод <code>valueOf</code> самостоятельно; JavaScript автоматически вызывает его при обнаружении объекта, когда ожидается примитивное значение.</p> + +<p>По умолчанию, метод <code>valueOf</code> наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}. Каждый встроенный объект ядра переопределяет этот метод, возвращая подходящее значение. Если объект не имеет примитивного значения, <code>valueOf</code> возвращает сам объект, который отображается как:</p> + +<pre class="brush: js">[object Object]</pre> + +<p>Вы можете использовать <code>valueOf</code> в своём коде для преобразования встроенных объектов в примитивное значение. Когда вы создаёте пользовательский объект, вы можете переопределить метод <code>Object.prototype.valueOf()</code>, чтобы вызывать собственный метод вместо метода по умолчанию из {{jsxref("Global_Objects/Object", "Object")}}.</p> + +<h3 id="Overriding_valueOf_for_custom_objects" name="Overriding_valueOf_for_custom_objects">Переопределение <code>valueOf</code> в пользовательских объектах</h3> + +<p>Вы можете создать функцию, вызываемую вместо метода <code>valueOf</code> по умолчанию. Ваша функция не должна принимать аргументов.</p> + +<p>Предположим, у вас есть объект типа <code>myNumberType</code> и вы хотите создать для него метод <code>valueOf</code>. Следующий код присваивает определённую пользователем функцию методу <code>valueOf</code> объекта:</p> + +<pre class="brush: js">myNumberType.prototype.valueOf = function() { return customPrimitiveValue; };</pre> + +<p>Начиная с этого места в вашем коде, в любое время, когда объект типа <code>myNumberType</code> будет использоваться в контексте, где он должен быть представлен примитивным значением, JavaScript будет автоматически вызывать функцию, определённую в этом коде.</p> + +<p>Метод объекта <code>valueOf</code> обычно вызывается движком JavaScript, но вы можете вызвать его и самостоятельно, как показано ниже:</p> + +<pre class="brush: js">myNumber.valueOf()</pre> + +<div class="note"> +<p><strong>Примечание:</strong> объекты в строковом контексте преобразуются с помощью метода {{jsxref("Object.toString", "toString()")}}, что отличается от объектов {{jsxref("Global_Objects/String", "String")}}, преобразующихся в строковые примитивы методом <code>valueOf</code>. Все объекты имеют преобразование в строку вида "<code>[object <em>type</em>]</code>". Но многие объекты не преобразуются в число, логическое значение или функцию.</p> +</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_valueOf" name="Example:_Using_valueOf">Пример: использование <code>valueOf</code></h3> + +<pre class="brush: js">var o = new Object(); +myVar = o.valueOf(); // [object Object] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.2.4.4', 'Object.prototype.valueOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-object.prototype.valueof', 'Object.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> + <li>{{jsxref("Global_Objects/parseInt", "parseInt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/values/index.html b/files/ru/web/javascript/reference/global_objects/object/values/index.html new file mode 100644 index 0000000000..fa1e84895d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/values/index.html @@ -0,0 +1,98 @@ +--- +title: Object.values() +slug: Web/JavaScript/Reference/Global_Objects/Object/values +tags: + - JavaScript + - Method + - Object + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/Object/values +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Object.values()</strong></code><strong> </strong>возвращает массив значений перечисляемых свойств объекта в том же порядке что и цикл {{jsxref("Statements/for...in", "for...in")}}. Разница между циклом и методом в том, что цикл перечисляет свойства и из цепочки прототипов.</p> + +<p>{{EmbedInteractiveExample("pages/js/object-values.html")}}</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Object.values(<var>obj</var>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>obj</code></dt> + <dd>Объект, чьи значения перечисляемых свойств будут возвращены.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив содержащий значения перечисляемых свойств объекта.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>Object.values()</code> возвращает массив, чьи элементы это значения перечисляемых свойств найденых в объекте. Порядок такой же как если пройтись по объекту циклом вручную.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var obj = { foo: "bar", baz: 42 }; +console.log(Object.values(obj)); // ['bar', 42] + +// Массив как объект +var obj = { 0: 'a', 1: 'b', 2: 'c' }; +console.log(Object.values(obj)); // ['a', 'b', 'c'] + +// Массив как объект со случайным порядком ключей +// Когда мы используем нумерованные ключ, значения возвращаются в порядке возрастания +var an_obj = { 100: 'a', 2: 'b', 7: 'c' }; +console.log(Object.values(an_obj)); // ['b', 'c', 'a'] + +// getFoo неперечисляемое свойство +var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } }); +my_obj.foo = "bar"; +console.log(Object.values(my_obj)); // ['bar'] + +// Аргумент, не являющийся объектом, будет приведен к объекту +console.log(Object.values("foo")); // ['f', 'o', 'o'] +</pre> + +<h2 id="Полифилл">Полифилл</h2> + +<p>Для добавления совместимости <code>Object.values</code> со старым окружением, которое не поддерживает нативно его, вы можете найти полифилл здесь <a href="https://github.com/tc39/proposal-object-values-entries">tc39/proposal-object-values-entries</a> или в <a href="https://github.com/es-shims/Object.values">es-shims/Object.values</a> репозитарии.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-object.values', 'Object.values')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES8', '#sec-object.values', 'Object.values')}}</td> + <td>{{Spec2('ES8')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.Object.values")}}</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Enumerability_and_ownership_of_properties">Перечисляемость и принадлежность свойств</a></li> + <li>{{jsxref("Object.keys()")}}</li> + <li>{{jsxref("Object.entries()")}} {{experimental_inline}}</li> + <li>{{jsxref("Object.prototype.propertyIsEnumerable()")}}</li> + <li>{{jsxref("Object.create()")}}</li> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/object/watch/index.html b/files/ru/web/javascript/reference/global_objects/object/watch/index.html new file mode 100644 index 0000000000..8f4a3d5b99 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/object/watch/index.html @@ -0,0 +1,168 @@ +--- +title: Object.prototype.watch() +slug: Web/JavaScript/Reference/Global_Objects/Object/watch +tags: + - JavaScript + - Method + - Non-standard + - Object + - Prototype +translation_of: Archive/Web/JavaScript/Object.watch +--- +<div> + {{JSRef("Global_Objects", "Object")}}</div> +<div class="warning"> + <p><strong>Предупреждение:</strong> обычно, при возможности, вам следует избегать использования <code>watch()</code> и {{jsxref("Object.prototype.unwatch", "unwatch()")}}. Эти два метода реализованы только в Gecko, и они, в основном, предназначены только для отладочных целей. Кроме того, использование точек наблюдения серьёзно бъёт по производительности, что особенно заметно при использовании их на глобальных объектах, например <code>window</code>. Обычно вместо них вы можете использовать <a href="/ru/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">сеттеры и геттеры</a> или прокси. Для более подробной информации смотрите раздел {{anch("Browser_compatibility", "Совместимость с браузерами")}}. Также, не путайте {{jsxref("Object.prototype.watch", "Object.watch")}} с {{jsxref("Object.prototype.observe", "Object.observe")}}.</p> +</div> +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <code><strong>watch()</strong></code> следит за присваиванием свойству значений и запускает указанную функцию, когда это происходит.</p> +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>obj</var>.watch(<var>prop</var>, <var>handler</var>)</code></pre> +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt> + <code>prop</code></dt> + <dd> + Имя свойства объекта, чьи изменения вы хотите отслеживать.</dd> + <dt> + <code>handler</code></dt> + <dd> + Функция, вызывающаяся при изменении значения указанного свойства.</dd> +</dl> +<h2 id="Description" name="Description">Описание</h2> +<p>Следит за присваиваниями свойству <code>prop</code> в этом объекте, вызывая функцию <code>handler(prop, oldval, newval)</code> всякий раз, когда свойство <code>prop</code> устанавливается и сохраняет возвращённое значение в этом свойстве. Точка наблюдения может отфильтровывать (или отменять) присваивание значения, возвращая изменённое новое значение <code>newval</code> (или старое значение <code>oldval</code>).</p> +<p>Если вы удалите свойство, для которого была установлена точка наблюдения, эта точка наблюдения не будет отключена. Если вы позже вновь создадите это свойство, точка наблюдения продолжит работать.</p> +<p>Для удаления точки наблюдения используйте метод {{jsxref("Object.unwatch", "unwatch()")}}. По умолчанию, метод <code>watch</code> наследуется каждым объектом, произошедшим от {{jsxref("Global_Objects/Object", "Object")}}.</p> +<p>Отладчик JavaScript имеет функциональность, аналогичную предоставляемой этим методом, а также и другие возможности отладки. Информацию по отладчику можно получить в статье про <a href="/ru/docs/Venkman">Venkman</a>.</p> +<p>В Firefox, функция <code>handler</code> вызывает только при присваивании из скрипта, не из встроенного кода. Например, <code>window.watch('location', myHandler)</code> не вызовет <code>myHandler</code>, если пользователь щёлкнет по ссылке с якорем в текущем документе. Однако, выражение <code>window.location += '#myAnchor'</code> вызовет <code>myHandler</code>.</p> +<div class="note"> + <p><strong>Примечание:</strong> вызов <code>watch()</code> на объекте для определённого свойства перезапишет любые ранее назначенные на него обработчики.</p> +</div> +<h2 id="Examples" name="Examples">Примеры</h2> +<h3 id="Example:_Using_watch_and_unwatch" name="Example:_Using_watch_and_unwatch">Пример: использование <code>watch</code> и <code>unwatch</code></h3> +<pre class="brush: js">var o = { p: 1 }; + +o.watch('p', function (id, oldval, newval) { + console.log('o.' + id + ' изменено с ' + oldval + ' на ' + newval); + return newval; +}); + +o.p = 2; +o.p = 3; +delete o.p; +o.p = 4; + +o.unwatch('p'); +o.p = 5; +</pre> +<p>Этот скрипт выведет следующее:</p> +<pre>o.p изменено с 1 на 2 +o.p изменено с 2 на 3 +o.p изменено с undefined на 4 +</pre> +<h3 id="Example:_Using_watch_to_validate_an_object.27s_properties" name="Example:_Using_watch_to_validate_an_object.27s_properties">Пример: использование <code>watch</code> для проверки свойств объекта</h3> +<p>Вы можете использовать <code>watch</code> для проверки присваивания к любым свойствам объекта. Этот пример гарантирует, что каждый человек имеет допустимое имя и возраст между 0 и 200.</p> +<pre class="brush: js">Person = function(name, age) { + this.watch('age', Person.prototype._isValidAssignment); + this.watch('name', Person.prototype._isValidAssignment); + this.name = name; + this.age = age; +}; + +Person.prototype.toString = function() { + return this.name + ', ' + this.age; +}; + +Person.prototype._isValidAssignment = function(id, oldval, newval) { + if (id === 'name' && (!newval || newval.length > 30)) { + throw new RangeError('недопустимое имя для ' + this); + } + if (id === 'age' && (newval < 0 || newval > 200)) { + throw new RangeError('недопустимый возраст для ' + this); + } + return newval; +} + +will = new Person('Уилл', 29); +print(will); // Уилл, 29 + +try { + will.name = ''; +} catch (e) { + print(e); +} + +try { + will.age = -4; +} catch (e) { + print(e); +} +</pre> +<p>Этот скрипт выведет следующее:</p> +<pre>Уилл, 29 +RangeError: недопустимое имя для Уилл, 29 +RangeError: недопустимый возраст для Уилл, 29 +</pre> +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какой-либо спецификации. Реализована в JavaScript 1.2.</p> +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<ul> + <li>Этот <a class="external link-https" href="https://gist.github.com/384583">полифилл</a> предлагает <code>watch</code> для всех совместимых с ES5 браузеров</li> + <li>Использование объекта {{jsxref("Global_Objects/Proxy", "Proxy")}} позволяет вам сделать ещё более глубокие изменения при присваивании свойств</li> +</ul> +<div> + {{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> + </table> +</div> +<div class="note"> + <p><strong>Примечание:</strong> вызов <code>watch()</code> на объекте {{domxref("Document")}}, начиная с Firefox 23, выбрасывает исключение {{jsxref("Global_Objects/TypeError", "TypeError")}} ({{bug(903332)}}). Эта регрессия была поправлена в Firefox 27.</p> +</div> +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.unwatch()")}}</li> + <li>{{jsxref("Object.observe()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/parallelarray/index.html b/files/ru/web/javascript/reference/global_objects/parallelarray/index.html new file mode 100644 index 0000000000..ca96e4c0fa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parallelarray/index.html @@ -0,0 +1,52 @@ +--- +title: ParallelArray +slug: Web/JavaScript/Reference/Global_Objects/ParallelArray +translation_of: Archive/Web/ParallelArray +--- +<p>{{jsSidebar("Objects")}} {{ obsolete_header() }}</p> +<div class="note"> + <p><strong>Note:</strong> This object was implemented in Firefox 17 and has been removed from {{ Gecko(29) }} in favor of ParallelJS (PJS) currently available in the Nightly channel ({{ bug(944074) }}).</p> +</div> +<h2 id="Сводка">Сводка</h2> +<p>Целью ParallelArray является распараллеливание данных в веб-приложениях. Все функции, которые доступны на простом массиве могут исполняться параллельно на ParallelArray, при необходимости можно вернуться к последовательному исполнению. Чтобы убедиться что ваш код исполняется параллельно, it is suggested that the functions should be limited to the <a href="http://smallcultfollowing.com/babysteps/blog/2013/04/30/parallelizable-javascript-subset/" title="/en-US/docs/ParallelizableJavaScriptSubset">parallelizable subset of JS that Firefox supports</a>.</p> +<h2 id="Синтаксис">Синтаксис</h2> +<pre class="syntaxbox">new ParallelArray() +new ParallelArray([element0, element1, ...]) +new ParallelArray(arrayLength, elementalFunction)</pre> +<h2 id="Экземпляры_ParallelArray"><code>Экземпляры ParallelArray</code></h2> +<h3 id="Свойства">Свойства</h3> +<dl> + <dt> + length</dt> + <dd> + Возвращает количество элементов в <code>ParallelArray</code>.</dd> +</dl> +<h3 id="Методы">Методы</h3> +<dl> + <dt> + map</dt> + <dt> + reduce</dt> + <dt> + scan</dt> + <dt> + scatter</dt> + <dt> + filter</dt> + <dt> + flatten</dt> + <dt> + partition</dt> + <dt> + get</dt> +</dl> +<h2 id="Примеры">Примеры</h2> +<h3 id="Пример_Использование_метода_map_параллельно">Пример: Использование метода map параллельно</h3> +<pre class="brush: js">var p = new ParallelArray([0, 1, 2, 3, 4]); +var m = p.map(function (v) { + return v + 1; +});</pre> +<h2 id="Смотрите_также">Смотрите также</h2> +<ul> + <li><a href="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism" title="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism">Ecmascript ParallelArray strawman</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/parsefloat/index.html b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html new file mode 100644 index 0000000000..03cb0bc158 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parsefloat/index.html @@ -0,0 +1,136 @@ +--- +title: parseFloat() +slug: Web/JavaScript/Reference/Global_Objects/parseFloat +tags: + - JavaScript + - Number + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/parseFloat +--- +<div> +<div> +<div>{{jsSidebar("Objects")}}</div> +</div> +</div> + +<p>Функция <code><strong>parseFloat()</strong></code> принимает строку в качестве аргумента и возвращает десятичное число (число с плавающей точкой)</p> + +<p> </p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-parsefloat.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<p> </p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">parseFloat(<em>строка</em>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>строка</code></dt> + <dd>Текстовая строка, из которой вам надо выделить десятичное число.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Число с плавающей точкой, полученное из строки. Если первый символ не может быть сконвертирован в число, то возвращается {{jsxref("NaN")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>parseFloat</code> - это высокоуровневая функция, не привязанная ни к одному объекту.</p> + +<p><code>parseFloat</code> разбирает текстовую строку, ищет и возвращает из нее десятичное число. Если функция встретит знак, отличный от (+ или -), цифр(0-9), разделительной точки, или показателя степени, она вернет значение, предшествующее этому знаку, игнорируя все последующие символы . Допускаются позади и впереди идущие пробелы.</p> + +<p>Если первый символ нельзя привести к числовому виду, <code>parseFloat</code> вернет<code> NaN</code>.</p> + +<p>С точки зрения математики, <code>значение NaN</code> не является числом в какой-либо системе счисления. Чтобы определить, вернет ли <code>parseFloat </code>значение {{jsxref("NaN")}} в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если <code>NaN</code> участвует в арифметических операциях, результатом также будет <code>NaN</code>.</p> + +<p><code>parseFloat</code> также может вернуть значение <code>Infinity</code> ("бесконечность"). Вы можете использовать функцию {{jsxref("Global_Objects/isFinite", "isFinite")}}, чтобы определить, является ли результат конечным числом (not <code>Infinity</code>, <code>-Infinity</code>, или <code>NaN</code>).</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="parseFloat_возвращает_число"><code>parseFloat</code> возвращает число</h3> + +<p>Все примеры ниже вернут <strong>3.14</strong></p> + +<pre><code>parseFloat(3.14); +parseFloat('3.14'); +parseFloat('314e-2'); +parseFloat('0.0314E+2'); +parseFloat('</code>3.14какие-нибудь не цифровые знаки<code>'); + +var foo = Object.create(null); +foo.toString = function () { return "3.14"; }; +parseFloat(foo); + +var foo = Object.create(null); +foo.valueOf = function () { return "3.14"; }; +parseFloat(foo);</code></pre> + +<p> </p> + +<h3 id="parseFloat_возвращает_NaN"><code>parseFloat</code> возвращает NaN</h3> + +<p>Пример ниже вернет <code>NaN</code></p> + +<pre class="brush: js">parseFloat("FF2"); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.2.3', 'parseFloat')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-parsefloat-string', 'parseFloat')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-parsefloat-string', 'parseFloat')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.parseFloat")}}</p> + +<p> </p> + +<h2 id="See_Also" name="See_Also">Смотрите также</h2> + +<ul> + <li>{{jsxref("parseInt", "parseInt()")}}</li> + <li>{{jsxref("Number.parseFloat()")}}</li> + <li>{{jsxref("Number.parseInt()")}}</li> + <li>{{jsxref("Number.toFixed()")}}</li> + <li>{{jsxref("isNaN", "isNaN()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/parseint/index.html b/files/ru/web/javascript/reference/global_objects/parseint/index.html new file mode 100644 index 0000000000..eb6c784422 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/parseint/index.html @@ -0,0 +1,202 @@ +--- +title: parseInt() +slug: Web/JavaScript/Reference/Global_Objects/parseInt +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/parseInt +--- +<div> +<div> +<div>{{jsSidebar("Objects")}}</div> +</div> +</div> + +<p>Функция <code><strong>parseInt()</strong></code> принимает строку в качестве аргумента и возвращает целое число в соответствии с указанным основанием системы счисления.</p> + +<p> </p> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-parseint.html")}}</p> + +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> + +<p> </p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox">parseInt(<em>string</em>, <em>radix</em>);</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>string</code></dt> + <dd>Значение, которое необходимо проинтерпретировать. Если значение параметра <code>string</code> не принадлежит строковому типу, оно преобразуется в него (с помощью абстрактной операции <code><a href="http://www.ecma-international.org/ecma-262/6.0/#sec-tostring">ToString</a></code>). Пробелы в начале строки не учитываются.</dd> +</dl> + +<dl> + <dt><code>radix</code></dt> + <dd>Целое число в диапазоне между 2 и 36, представляющее собой основание системы счисления числовой строки <code>string</code>, описанной выше. В основном пользователи используют десятичную систему счисления и указывают 10. <strong>Всегда указывайте этот параметр,</strong> чтобы исключить ошибки считывания и гарантировать корректность исполнения и предсказуемость результата. Когда основание системы счисления не указано, разные реализации могут возвращать разные результаты.</dd> +</dl> + +<h3 id="Description" name="Description">Возвращаемое значение</h3> + +<p>Целое число, полученное парсингом (разбором и интерпретацией) переданной строки. Если первый символ не получилось сконвертировать в число, то возвращается {{jsxref("NaN")}}. </p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Функция <code>parseInt</code> преобразует первый переданный ей аргумент в строковый тип, интерпретирует его и возвращает целое число или значение <code>NaN</code>. Результат (если не <code>NaN</code>) является целым числом и представляет собой первый аргумент (<code>string</code>), рассматривающийся как число в указанной системе счисления (<code>radix</code>). Например, основание 10 указывает на преобразование из десятичного числа, 8 - восьмеричного, 16 - шестнадцатеричного и так далее. Если основание больше <code>10</code>, то для обозначения цифр больше <code>9</code> используются буквы. Например, для шестнадцатеричных чисел (основание 16) используются буквы от <code>A</code> до <code>F</code>.</p> + +<p>Если функция <code>parseInt</code> встречает символ, не являющийся числом в указанной системе счисления, она пропускает этот и все последующие символы (даже, если они подходящие) и возвращает целое число, преобразованное из части строки, предшествовавшей этому символу. <code>parseInt</code> отсекает дробную часть числа. Пробелы в начале и конце строки разрешены.</p> + +<p>Так как некоторые числа включают символ <code>e</code> в своём строковом представлении (например, <strong><code>6.022e23</code></strong>), то использование <code>parseInt</code> для усечения числовых значений может дать неожиданные результаты, когда используются очень малые или очень большие величины. <code>parseInt</code> не должна использоваться как замена для {{jsxref("Math.floor()")}}.</p> + +<p>Если основание системы счисления имеет значение <code>undefined</code> (неопределено) или равно 0 (или не указано), то JavaScript по умолчанию предполагает следующее:</p> + +<ul> + <li>Если значение входного параметра <code>string</code> начинается с "<code>0x</code>" или "<code>0X</code>", <var>за основание системы счисления принимается 16, и интерпретации подвергается оставшаяся часть строки.</var></li> + <li>Если значение входного параметра <code>string</code> начинается с "0", <var>за основание системы счисления принимается либо 8, либо 10, в зависимости от конкретной реализации.</var> В спецификации ECMAScript 5 прописано использование 10 (десятичная система), но это поддерживается еще не всеми браузерами, поэтому необходимо <strong>всегда указывать основание системы счисления при использовании функции </strong><strong><code>parseInt</code></strong>.</li> + <li>Если значение входного параметра <code>string</code> начинается с любого другого символа, система счисления считается десятичной (основание 10).</li> +</ul> + +<p>Если первый символ строки не может быть преобразован в число, <code>parseInt</code> возвращает значение <code>NaN</code>.</p> + +<p>С точки зрения математики, значение <code>NaN</code> не является числом в какой-либо системе счисления. Чтобы определить, вернет ли <code>parseInt </code>значение<code> </code><code>NaN </code>в качестве результата, можно вызвать функцию {{jsxref("Global_Objects/isNaN", "isNaN")}}. Если <code>NaN</code> участвует в арифметических операциях, результатом также будет <code>NaN</code>.</p> + +<p>Для преобразования числа в строку в указанной системе счисления, используйте <code>intValue.toString(radix)</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_parseInt" name="Example:_Using_parseInt">Пример: Использование <code>parseInt</code></h3> + +<p>Все следующие примеры возвращают <strong><code>15</code></strong>:</p> + +<pre class="brush: js">parseInt(" 0xF", 16); +parseInt(" F", 16); +parseInt("17", 8); +parseInt(021, 8); +parseInt("015", 10); //parseInt(015, 10); вернёт 15 +parseInt(15.99, 10); +parseInt("FXX123", 16); +parseInt("1111", 2); +parseInt("15*3", 10); +parseInt("15e2", 10); +parseInt("15px", 10); +parseInt("12", 13); +</pre> + +<p>Все следующие примеры возвращают <strong><code>NaN</code></strong>:</p> + +<pre class="brush: js">parseInt("Hello", 8); // Не является числом +parseInt("546", 2); // Неверное число в двоичной системе счисления +</pre> + +<p>Все следующие примеры возвращают <strong><code>-15</code></strong>:</p> + +<pre class="brush: js">parseInt("-F", 16); +parseInt("-0F", 16); +parseInt("-0XF", 16); +parseInt(-15.1, 10) +parseInt(" -17", 8); +parseInt(" -15", 10); +parseInt("-1111", 2); +parseInt("-15e1", 10); +parseInt("-12", 13); +</pre> + +<p>Все следующие примеры возвращают <strong><code>4</code></strong>:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="function token">parseInt</span><span class="punctuation token">(</span><span class="number token">4.7</span><span class="punctuation token">,</span> <span class="number token">10</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="function token">parseInt</span><span class="punctuation token">(</span><span class="number token">4.7</span> <span class="operator token">*</span> <span class="number token">1e22</span><span class="punctuation token">,</span> <span class="number token">10</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// Очень большие числа становятся 4</span> +<span class="function token">parseInt</span><span class="punctuation token">(</span><span class="number token">0.00000000000434</span><span class="punctuation token">,</span> <span class="number token">10</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// Очень маленькие числа становятся 4</span></code></pre> + +<p>Следующий пример возвращает <strong><code>224</code></strong>:</p> + +<pre class="brush: js">parseInt("0e0", 16); +</pre> + +<h2 id="Восьмеричная_интерпретация_без_указания_системы_счисления">Восьмеричная интерпретация без указания системы счисления</h2> + +<p>Хотя это не поощряется в спецификацией ECMAScript 3 и запрещено в ECMAScript 5, многие реализации интерпретируют числовую строку, начинающуюся с <code>0</code>, как восьмеричную. Следующий пример может иметь как восьмеричный, так и десятичный результат. <strong>Чтобы избежать непредвиденного результата, всегда указывайте основание системы счисления.</strong></p> + +<pre class="brush: js">parseInt("0e0"); // 0 +parseInt("08"); // 0, '8' не является цифрой в восьмеричной системе. +</pre> + +<h3 id="ECMAScript_5_устраняет_восьмеричную_интерпретацию">ECMAScript 5 устраняет восьмеричную интерпретацию</h3> + +<p>Спецификация ECMAScript 5 функции <code>parseInt</code> больше не разрешает трактовать в восьмеричной системе счисления строки, начинающиеся с <code>0</code>. ECMAScript 5 провозглашает:</p> + +<p>Функция <code>parseInt</code> производит целочисленное значение в результате интерпретации содержимого строкового аргумента в соответствии с указанным основанием системы счисления. Пробел в начале строки не учитывается. Если основание системы счисления не определено или равно <code>0</code>, оно считается равным <code>10</code>, за исключением случаев, когда строка начинается с пар символов <code>0x</code> или <code>0X</code>: тогда за основание принимается 16. Если основанием системы счисления указано <code>16</code>, число также может начинаться с пар символов <code>0x</code> или <code>0X</code>.</p> + +<p>В этом ECMAScript 5 расходится со спецификацией ECMAScript 3, в которой восьмеричная интерпретация не поощрялась, но и не была запрещена.</p> + +<p>Поскольку на момент 2013 года описанное выше поведение было применено не во всех реализациях, а поддержка старых браузеров является необходимой, <strong>всегда указывайте основание системы счисления.</strong></p> + +<h2 id="Более_строгая_функция_интерпретации">Более строгая функция интерпретации</h2> + +<p>Иногда необходим более строгий способ интерпретации целочисленных значений. В этом могут помочь регулярные выражения:</p> + +<pre class="brush: js">var filterInt = function (value) { + if (/^(\-|\+)?([0-9]+|Infinity)$/.test(value)) + return Number(value); + return NaN; +} + +console.log(filterInt('421')); // 421 +console.log(filterInt('-421')); // -421 +console.log(filterInt('+421')); // 421 +console.log(filterInt('Infinity')); // Infinity +console.log(filterInt('421e+0')); // NaN +console.log(filterInt('421hop')); // NaN +console.log(filterInt('hop1.61803398875')); // NaN +console.log(filterInt('1.61803398875')); // NaN +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES1')}}</td> + <td>{{Spec2('ES1')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.2.2', 'parseInt')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-parseint-string-radix', 'parseInt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-parseint-string-radix', 'parseInt')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + + + +<p>{{Compat("javascript.builtins.parseInt")}}</p> + +<h2 id="See_Also" name="See_Also">Смотри также</h2> + +<ul> + <li>{{jsxref("Global_Objects/parseFloat", "parseFloat()")}}</li> + <li>{{jsxref("Number.parseFloat()")}}</li> + <li>{{jsxref("Number.parseInt()")}}</li> + <li>{{jsxref("Global_Objects/isNaN", "isNaN()")}}</li> + <li>{{jsxref("Number.toString()")}}</li> + <li>{{jsxref("Object.valueOf")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/all/index.html b/files/ru/web/javascript/reference/global_objects/promise/all/index.html new file mode 100644 index 0000000000..9d8fba83b6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/all/index.html @@ -0,0 +1,122 @@ +--- +title: Promise.all() +slug: Web/JavaScript/Reference/Global_Objects/Promise/all +tags: + - ECMAScript6 + - JavaScript + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/all +--- +<div>{{JSRef}}</div> + +<h2 id="Summary" name="Summary">Общее описание</h2> + +<p>Метод <code><strong>Promise.all(iterable)</strong></code> возвращает обещание, которое выполнится тогда, когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонено любое из переданных обещаний.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><var>Promise.all(iterable)</var>;</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>iterable</dt> + <dd>Перечисляемый объект, например, массив ({{jsxref("Array")}}). Смотрите <a href="/en-US/docs/Web/JavaScript/Guide/iterable">iterable</a>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Promise")}}, который будет выполнен когда будут выполнены все обещания, переданные в виде перечисляемого аргумента, или отклонен, если будет отклонено хоть одно из переданных обещаний.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p><strong>Promise.all</strong> возвращает массив значений от всех обещаний, которые были ему переданы. Возвращаемый массив значений сохраняет порядок оригинального перечисляемого объекта, но не порядок выполнения обещаний. <code>Если какой-либо элемент перечисляемого объекта не является обещанием, то он будет преобразован с помощью метода </code>{{jsxref("Promise.resolve")}}<code>.</code></p> + +<p>Если одно из переданных обещаний будет отклонено, <code><strong>Promise.all </strong></code>будет немедлено отклонен со значением отклоненного обещания, не учитывая другие обещания, независимо выполнены они или нет. Если в качестве аргумента будет передан пустой массив, то <code><strong>Promise.all</strong> </code>будет выполнен немедленно<code>. </code></p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_Promise.all">Использование <code>Promise.all</code></h3> + +<p><strong>Promise.all </strong>ждет выполнения всех обещаний (или первого метода <code><strong>reject</strong>()</code>).</p> + +<pre><code>var p1 = Promise.resolve(3); +var p2 = 1337; +var p3 = new Promise((resolve, reject) => { + setTimeout(resolve, 100, "foo"); +}); + +Promise.all([p1, p2, p3]).then(values => { + console.log(values); +}); + +//Выведет: +// [3, 1337, "foo"] </code> +</pre> + +<h3 id="Promise.all_поведение_немедленного_отклонения"><code>Promise.all</code> поведение немедленного отклонения</h3> + +<p><strong><code>Promise.all</code></strong> будет немедленно отклонен если одно из переданных обещаний будет отклонено: если у вас есть четыре обещания которые будут выполнены с задержкой и одно, которое будет отклонено немедленно - тогда <strong><code>Promise.all</code></strong> будет немедленно отклонен.</p> + +<pre><code>var p1 = new Promise((resolve, reject) => { + setTimeout(resolve, 1000, "one"); +}); +var p2 = new Promise((resolve, reject) => { + setTimeout(resolve, 2000, "two"); +}); +var p3 = new Promise((resolve, reject) => { + setTimeout(resolve, 3000, "three"); +}); +var p4 = new Promise((resolve, reject) => { + setTimeout(resolve, 4000, "four"); +}); +var p5 = new Promise((resolve, reject) => { +// Это обещание прервет Promise.all + reject("reject"); +}); + +Promise.all([p1, p2, p3, p4, p5]).then(value => { + console.log(value); +}, reason => { + console.log(reason) +}); + +//Выведет: +//"reject"</code> +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Пояснение</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.all', 'Promise.all')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.all', 'Promise.all')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Первоначальный вариант в стандарте ECMA.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Promise.all")}}</p> + +<div id="compat-mobile"> </div> + +<h2 id="Родственные_темы">Родственные темы</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li>{{jsxref("Promise.race()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html b/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html new file mode 100644 index 0000000000..4c125fac0c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/allsettled/index.html @@ -0,0 +1,60 @@ +--- +title: Promise.allSettled() +slug: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/allSettled +--- +<p>{{JSRef}}</p> + +<p>Метод <code><strong>Promise.allSettled()</strong></code> возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.</p> + +<div>{{EmbedInteractiveExample("pages/js/promise-allsettled.html")}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><em>promise</em>.allSettled(<em>iterable</em>);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Любой <a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols">итерируемый</a> объект, такой как {{jsxref("Array")}}, в котором каждый элемент является <code>Promise</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Promise")}}, который будет выполнен после завершения каждого промиса, вне зависимости от того выполнился он успешно или был отклонён. В то же время, в возвращаемый обработчик промиса передаётся массив, который содержит результат каждого промиса в исходном наборе промисов.</p> + +<p>Объект каждого результата содержит свойство <code>status</code>. Если <code>status</code> имеет значение <code>fulfilled</code> (выполнено), то объект будет содержать свойство <code>value</code>. Если <code>status</code> имеет значение <code>rejected</code> (отклонено), то объект будет содержать свойство <code>reason</code>. Свойство <code>value</code> (или <code>reason</code>) будет содержать значение с которым был выполнен (или отклонён) промис.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td><a href="https://tc39.es/proposal-promise-allSettled/"><code>Promise.allSettled()</code> (TC39 Stage 4 Draft)</a></td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p class="hidden">To contribute to this compatibility data, please write a pull request against this repository: <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</p> + +<p>{{Compat("javascript.builtins.Promise.allSettled")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Archive/Add-ons/Techniques/Promises">Promises</a></li> + <li><a href="/ru/docs/Web/JavaScript/Guide/Using_promises">Использование промисов</a></li> + <li><a href="/en-US/docs/Learn/JavaScript/Asynchronous/Promises">Graceful asynchronous programming with promises</a></li> + <li>{{jsxref("Promise")}}</li> + <li>{{jsxref("Promise.all()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/any/index.html b/files/ru/web/javascript/reference/global_objects/promise/any/index.html new file mode 100644 index 0000000000..4d0a4baa67 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/any/index.html @@ -0,0 +1,81 @@ +--- +title: Promise.any() +slug: Web/JavaScript/Reference/Global_Objects/Promise/any +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/any +--- +<div>{{JSRef}}</div> + +<p><code>Метод Promise.any()</code> принимает итерируемый объект содержащий объекты "обещаний" {{JSxRef("Promise")}}. Как только одно из "обещаний"(<code>Promise)</code> выполнится успешно(<code>fullfill</code>), метод возвратит единственный объект <code>Promise</code> со значением выполненного "обещания". Если ни одно из "обещаний" не завершится успешно(если все "обещания" завершатся с ошибкой, т.е. <code>rejected</code>), тогда возвращенный объект promise будет отклонен(<code>rejected</code>) с одним из значений: массив содержащий причины ошибки(отклонения), или {{JSxRef("AggregateError")}} — подкласс {{JSxRef("Error")}}, который объединяет выброшенные ошибки вместе. По-существу, метод <code>Promise.any()</code> является противоположностью для {{JSxRef("Promise.all()")}}.</p> + +<div class="blockIndicator warning"> +<p><strong>Warning!</strong> The <code>Promise.any()</code> method is experimental and not fully supported by all browsers. It is currently in the <a href="https://github.com/tc39/proposal-promise-any" rel="external">TC39 Candidate stage (Stage 3)</a>.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre>Promise.any(<var>iterable</var>);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Итерируемый(<a href="/en-US/docs/Web/JavaScript/Guide/iterable">iterable</a>) объект, например {{JSxRef("Array")}}.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<ul> + <li><strong>Исполненный</strong> {{JSxRef("Promise")}}, если переданный итерируемый объект пуст.</li> + <li><strong>Исполненный асинхронно</strong> {{JSxRef("Promise")}}, если переданный итерируемый объект не содержит "обещаний"(promises).</li> + <li>Во всех других случаях {{JSxRef("Promise")}} со статусом ожидания(<strong>pending)</strong>. Возвращенное "обещание" будет <strong>исполнено</strong>(resolved/rejected) <strong>асинхронно</strong> (как только стэк вызовов окажется пустым), когда одно(любое) "обещание" из <em>переданного итерируемого объекта исполнится</em>, либо все "обещания" будут отклонены.</li> +</ul> + +<h2 id="Описание">Описание</h2> + +<p>Метод полезен, когда нужно вернуть первое исполненное "обещание". После того как одно из "обещаний" будет исполнено, метод не будет дожидаться исполнения остальных. В отличие от {{JSxRef("Promise.all()")}}, который содержит <em>массив(Array)</em> значений исполненных обещаний, <code>Promise.any()</code> содержит только одно значение (при условии, что хотя бы одно из "обещаний" исполнено успешно). Такой подход может быть выгодным, когда нужно, чтобы выполнилось только одно "обещание", неважно какое. Также, в отличие от {{JSxRef("Promise.race()")}}, который возвращает "обещание", содержащее значение первого <strong>завершенного(resolved или rejected)</strong>, этот метод возвращает "обещание" содержащее значение первого <strong>успешно выполненного(resolved) </strong>"обещания". Метод будет игнорировать исполнение обещаний с ошибкой(rejection) вплоть до первого исполненного успешно(fullfilment).</p> + +<h3 id="Успешное_исполнениеFullfilment">Успешное исполнение(Fullfilment)</h3> + +<p>Если одно из "обещаний" исполнится успешно, возвращенное "обещание" асинхронно исполнится успешно со значением выполненного "обещания", независимо от завершения остальных "обещаний".</p> + +<ul> + <li>Если передан пустой итерируемый объект, тогда метод возвращает (синхронно) выполненное "обещание".</li> + <li>Если одно из переданных обещаний исполнится успешно, или в переданном итерируемом объекте не содержится "обещаний", "обещание" возвращенное из метода <code>Promise.any</code> асинхронно исполнится успешно.</li> +</ul> + +<h3 id="Исполнение_с_ошибкойRejection">Исполнение с ошибкой(Rejection)</h3> + +<p>Елси все переданные "обещания" будут отклонены(rejected), <code>Promise.any</code> асинхронно будет отклонено в одном из двух вариантов (которые еще не были согласованы): либо</p> + +<ul> + <li>Массив(Array) содержащий причины отклонения всех "обещаний" переданных в итерируемом объекте, либо</li> + <li>Объект {{JSxRef("AggregateError")}}, расширяющий {{JSxRef("Error")}}, который содержит указатель на массив(Array) исключений.</li> +</ul> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + </tr> + <tr> + <td><a href="https://tc39.es/proposal-promise-any/#sec-promise.any">ESNext Promise.any Proposal</a></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Promise.any")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{JSxRef("Promise")}}</li> + <li>{{JSxRef("Promise.allSettled()")}}</li> + <li>{{JSxRef("Promise.all()")}}</li> + <li>{{JSxRef("Promise.race()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/catch/index.html b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html new file mode 100644 index 0000000000..dee70fbc24 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/catch/index.html @@ -0,0 +1,157 @@ +--- +title: Promise.prototype.catch() +slug: Web/JavaScript/Reference/Global_Objects/Promise/catch +tags: + - ECMAScript6 + - JavaScript + - Prototype + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/catch +--- +<div>{{JSRef}}</div> + +<p>Метод <strong>catch()</strong> возвращает <code>Promise(</code>обещание) и работает только в случае отклонения обещания. Ведет себя аналогично вызову {{jsxref("Promise.then", "Promise.prototype.then(undefined, onRejected)")}}.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox"><var>p.catch(onRejected)</var>; + +p.catch(function(reason) { + // отказ +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>onRejected</dt> + <dd>{{jsxref("Function")}} вызывается когда обещание отклонено. У этой функции один аргумент: + <dl> + <dt><code>reason</code></dt> + <dd>Причина отказа.</dd> + <dt> + <p>Promise( Обещание ), возвращенное catch (), отклоняется, если onRejected выдает ошибку(throw) или возвращает Promise, который был отклонен; В противном случае Promise, возвращаемый catch () имеет статус выполнено (fulfilled)</p> + </dt> + </dl> + </dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Promise")}}.</p> + +<h2 id="Описание">Описание</h2> + +<dl> + <dd>Метод <code>catch может быть полезен для обработки ошибок</code> в вашей структуре обещаний.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_catch">Использование метода <code>catch</code></h3> + +<pre class="brush: js">var p1 = new Promise(function(resolve, reject) { + resolve('Success'); +}); + +p1.then(function(value) { + console.log(value); // "Success!" + throw 'oh, no!'; +}).catch(function(e) { + // Функция не перевыбросила исключение 'e' + // в результате произойдёт resolve(undefined) + // для Promise, возвращённого функцией catch + console.log(e); // "oh, no!" +}).then(function(){ + console.log('after a catch the chain is restored'); +}, function () { + // Функция не перевыбросила исключение 'e' + // в результате произойдёт resolve(undefined) + // для Promise, возвращённого функцией catch + console.log('Not fired due to the catch'); +}); + +// Следующий код ведет себя также, как вышенаписанный +p1.then(function(value) { + console.log(value); // "Success!" + return Promise.reject('oh, no!'); +}).catch(function(e) { + // Функция не перевыбросила исключение 'e' + // в результате произойдёт resolve(undefined) + // для Promise, возвращённого функцией catch + console.log(e); // "oh, no!" +}).then(function(){ + console.log('after a catch the chain is restored'); +}, function () { + // Функция не перевыбросила исключение 'e' + // в результате произойдёт resolve(undefined) + // для Promise, возвращённого функцией catch + console.log('Not fired due to the catch'); +}); +</pre> + +<h3 id="Ловим_выброшеные_исключения">Ловим выброшеные исключения</h3> + +<pre class="brush: js">// Выкидываемая ошибка вызовет метод catch +var p1 = new Promise(function(resolve, reject) { + throw 'Uh-oh!'; +}); + +p1.catch(function(e) { + console.log(e); // "Uh-oh!" +}); + +// Ошибки выброшеные из асинхронных функций не будут пойманы методом catch +var p2 = new Promise(function(resolve, reject) { + setTimeout(function() { + throw 'Uncaught Exception!'; + }, 1000); +}); + +p2.catch(function(e) { + console.log(e); // Никогда не вызовется +}); + +// Ошибки выброшеные после выполнения обещания будут проигнорированны +var p3 = new Promise(function(resolve, reject) { + resolve(); + throw 'Silenced Exception!'; +}); + +p3.catch(function(e) { + console.log(e); // Никогда не вызовется +});</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.prototype.catch', 'Promise.prototype.catch')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Promise.catch")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li>{{jsxref("Promise.prototype.then()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/finally/index.html b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html new file mode 100644 index 0000000000..5b4391ce47 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/finally/index.html @@ -0,0 +1,98 @@ +--- +title: Promise.prototype.finally() +slug: Web/JavaScript/Reference/Global_Objects/Promise/finally +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/finally +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>finally()</strong></code> возвращает {{jsxref("Promise")}}. Когда <code>Promise</code> (обещание) был выполнен, в не зависимости успешно или с ошибкой, указанная функция будет выполнена. Это дает возможность запустить один раз определенный участок кода, который должен выполниться вне зависимости от того, с каким результатом выполнился <code>Promise</code>.</p> + +<p>Это позволяет вам избавиться от дубликации кода в обработчиках {{jsxref("Promise.then", "then()")}} и {{jsxref("Promise.catch", "catch()")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>p.finally(onFinally)</var>; + +p.finally(function() { + // завершен (успешно или с ошибкой) +}); + +p.finally(() => { +// завершен (успешно или с ошибкой) +});</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>onFinally</code></dt> + <dd>Функция {{jsxref("Function")}} вызываемая когда <code>Promise</code> (обещание) завершено.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращает {{jsxref("Promise")}} для которого в качестве обработчика <code>finally </code>задана функция <code>onFinally</code>.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>finally()</code> может быть полезен, если необходимо приоизвести какие-либо вычисления или очистку, как только <code>Promise</code> (обещание) завершено, вне зависимости от результата.</p> + +<p><code>finally()</code> очень схож с вызовом <code>.then(onFinally, onFinally)</code>, однако существует несколько различий:</p> + +<ul> + <li>Использование <code>finally()</code> позволяет избежать двойного объявления одной и той же функции или создания переменной. </li> + <li><code>finally</code> не получает аргументов, так как не существует способа определить, будет ли обещание выполнено успешно или с ошибкой. Данный метод необходимо использовать, если не важна причина ошибки или результат успешного выполнения и, следовательно, нет необходимости ее/его передавать.</li> + <li>В отличие от <code>Promise.resolve(2).then(() => {}, () => {})</code> (результатом которого будет resolved-промис, со значением <code>undefined</code>), результатом <code>Promise.resolve(2).finally(() => {})</code> будет resolved-промис со значением <code>2</code>.</li> + <li>Аналогично, в отличии от <code>Promise.reject(3).then(() => {}, () => {})</code> (результатом которого будет resolved-промис, со значением <code>undefined</code>), результатом <code>Promise.reject(3).finally(() => {})</code> будет rejected-промис со значением <code>3</code>.</li> +</ul> + +<div class="note"> +<p><strong>Note:</strong> A <code>throw</code> (or returning a rejected promise) in the <code>finally</code> callback will reject the new promise with the rejection reason specified when calling <code>throw()</code>.</p> +</div> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">let isLoading = true; + +fetch(myRequest).then(function(response) { + var contentType = response.headers.get("content-type"); + if(contentType && contentType.includes("application/json")) { + return response.json(); + } + throw new TypeError("Oops, we haven't got JSON!"); + }) + .then(function(json) { /* process your JSON further */ }) + .catch(function(error) { console.log(error); }) + .finally(function() { isLoading = false; }); + +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td><a href="https://github.com/tc39/proposal-promise-finally">TC39 proposal</a></td> + <td>Stage 4</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Браузерная_совместимость">Браузерная совместимость</h2> + +<p class="hidden">Чтобы внести свой вклад в эти данные о совместимости, пожалуйста, напишите запрос извлечения для этого репозитория: <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</p> + +<p>{{Compat("javascript.builtins.Promise.finally")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li>{{jsxref("Promise.prototype.then()")}}</li> + <li>{{jsxref("Promise.prototype.catch()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/index.html b/files/ru/web/javascript/reference/global_objects/promise/index.html new file mode 100644 index 0000000000..c4577ab151 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/index.html @@ -0,0 +1,267 @@ +--- +title: Promise +slug: Web/JavaScript/Reference/Global_Objects/Promise +tags: + - ECMAScript6 + - JavaScript + - Promise + - Обещания +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +<div>{{JSRef}}</div> + +<h2 id="Сводка">Сводка</h2> + +<p>Объект <strong><code>Promise</code></strong> (промис) используется для отложенных и асинхронных вычислений.</p> + +<p>{{EmbedInteractiveExample("pages/js/promise-constructor.html")}}</p> + +<div class="hidden"> +<p>Исходники интерактивного демо находятся в репозитории на GitHub. Если вы хотите внести свой вклад в развитие интерактивных демо, пожалуйста, склонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам пулреквест.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">new Promise(<em>executor</em>); +new Promise(function(resolve, reject) { ... });</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>executor</dt> + <dd>Объект функции с двумя аргументами <code>resolve</code> и <code>reject</code>. Функция <code>executor</code> получает оба аргумента и выполняется сразу, еще до того как конструктор вернет созданный объект. Первый аргумент (<code>resolve</code>) вызывает успешное исполнение промиса, второй (<code>reject</code>) отклоняет его.<br> + Обычно функция <code>executor</code> описывает выполнение какой-то асинхронной работы, по завершении которой необходимо вызвать функцию <code>resolve</code> или <code>reject</code>. Обратите внимание, что возвращаемое значение функции <code>executor</code> игнорируется.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Интерфейс <code><strong>Promise</strong></code> (промис) представляет собой обертку для значения, неизвестного на момент создания промиса. Он позволяет обрабатывать результаты асинхронных операций так, как если бы они были синхронными: вместо конечного результата асинхронного метода возвращается <em>обещание </em>(промис)<em> </em>получить результат в некоторый момент в будущем.</p> + +<p><code>Promise</code> может находиться в трёх состояниях:</p> + +<ul> + <li><em>ожидание (pending)</em>: начальное состояние, не исполнен и не отклонен.</li> + <li><em>исполнено (fulfilled)</em>: операция завершена успешно.</li> + <li><em>отклонено (rejected)</em>: операция завершена с ошибкой.</li> +</ul> + +<p>При создании промис находится в <em>ожидании (pending)</em>, а затем может стать <em>исполненным </em> (<em>fulfilled)</em>, вернув полученный результат (значение), или <em>отклоненным </em>(<em>rejected),</em> вернув причину отказа. В любом из этих случаев вызывается обработчик, прикрепленный к промису методом <code>then</code>. (Если в момент назначения обработчика промис уже исполнен или отклонен, обработчик все равно будет вызван, т.е. асинхронное исполнение промиса и назначение обработчика не будет происходить в «состоянии гонки», как, например, в случае с событиями в DOM.)</p> + +<p>Так как методы <code>{{JSxRef("Promise.then", "Promise.prototype.then()")}}</code> и <code>{{JSxRef("Promise.catch", "Promise.prototype.catch()")}}</code> сами возвращают промис, их можно вызывать цепочкой, создавая <em>соединения.</em></p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/8633/promises.png" style="height: 297px; width: 801px;"></p> + +<div class="blockIndicator note"> +<p><strong>Примечание:</strong> говорят, что промис находится в состоянии <em>завершен (settled) </em>когда он или исполнен или отклонен, т.е. в любом состоянии, кроме ожидания (это лишь форма речи, не являющаяся настоящим состоянием промиса). Также можно встретить термин <em>исполен (resolved) </em>— это значит что промис <em>завершен </em>или "заблокирован" в ожидании завершения другого промиса. В статье <a href="https://github.com/domenic/promises-unwrapping/blob/master/docs/states-and-fates.md">состояния и fates</a> приводится более подробное описание терминологии.</p> +</div> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Promise.length</code></dt> + <dd>Значение свойства всегда равно 1 (количество аргументов конструктора).</dd> + <dt>{{jsxref("Promise.prototype")}}</dt> + <dd>Представляет прототип для конструктора <code>Promise</code>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Promise.all", "Promise.all(iterable)")}}</dt> + <dd>Ожидает исполнения всех промисов или отклонения любого из них.</dd> + <dd>Возвращает промис, который исполнится после исполнения всех промисов в <code>iterable</code>. В случае, если любой из промисов будет отклонен, <code>Promise.all</code> будет также отклонен.</dd> + <dt>{{JSxRef("Promise.allSettled", "Promise.allSettled(iterable)")}}</dt> + <dd>Ожидает завершения всех полученных промисов (как исполнения так и отклонения).</dd> + <dd>Возвращает промис, который исполняется когда все полученные промисы завершены (исполнены или отклонены), содержащий массив результатов исполнения полученных промисов.</dd> + <dt>{{jsxref("Promise.race", "Promise.race(iterable)")}}</dt> + <dd>Ожидает исполнения или отклонения любого из полученных промисов.</dd> + <dd>Возвращает промис, который будет исполнен или отклонен с результатом исполнения первого исполненного или отклонённого промиса из .<code>iterable</code>.</dd> +</dl> + +<dl> + <dt>{{jsxref("Promise.reject", "Promise.reject(reason)")}}</dt> + <dd>Возвращает промис, отклонённый из-за <code>reason</code>.</dd> +</dl> + +<dl> + <dt>{{jsxref("Promise.resolve", "Promise.resolve(value)")}}</dt> + <dd>Возвращает промис, исполненный с результатом <code>value</code>.</dd> + <dd> + <div class="hidden"> + <p>Если у <code>value</code> имеется метод <code>then</code>, то возвращаемый промис будет "следовать" продолжению, выступая адаптером его состояния; в противном случае будет возвращен промис в исполненном состоянии. Если вы не уверены, является ли некоторое значение промисом, вы можете обернуть его в {{JSxRef("Promise.resolve", "Promise.resolve(value)")}} и продолжить работу с ним как с промисом.</p> + </div> + </dd> +</dl> + +<h2 id="Прототип_Promise">Прототип <code>Promise</code></h2> + +<h3 id="Свойства_2">Свойства</h3> + +<p>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Свойства')}}</p> + +<h3 id="Методы_2">Методы</h3> + +<p>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/prototype','Методы')}}</p> + +<h2 id="Создание_промиса">Создание промиса</h2> + +<p>Объект <code>Promise</code> создается при помощи ключевого слова <code>new</code> и своего конструктора. Конструктор <code>Promise</code> принимает в качестве аргумента функцию, называемую "исполнитель" (<em>executor function</em>). Эта функция должна принимать две функции-коллбэка в качестве параметров. Первый из них (<code>resolve</code>) вызывается, когда асинхронная операция завершилась успешно и вернула результат своего исполнения в виде значения. Второй коллбэк (<code>reject</code>) вызывается, когда операция не удалась, и возвращает значение, указывающее на причину неудачи, чаще всего объект ошибки.</p> + +<pre class="brush: js">const myFirstPromise = new Promise((resolve, reject) => { + // выполняется асинхронная операция, которая в итоге вызовет: + // + // resolve(someValue); // успешное завершение + // или + // reject("failure reason"); // неудача +});</pre> + +<p>Чтобы снабдить функцию функционалом обещаний, нужно просто вернуть в ней объект <code>Promise</code>:</p> + +<pre class="brush: js">function myAsyncFunction(url) { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.open("GET", url); + xhr.onload = () => resolve(xhr.responseText); + xhr.onerror = () => reject(xhr.statusText); + xhr.send(); + }); +}</pre> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Простой_пример">Простой пример</h3> + +<pre class="brush: html" style="display: none;">Создать промис! +</pre> + +<pre class="brush: js">let myFirstPromise = new Promise((resolve, reject) => { + // Мы вызываем resolve(...), когда асинхронная операция завершилась успешно, и reject(...), когда она не удалась. + // В этом примере мы используем setTimeout(...), чтобы симулировать асинхронный код. + // В реальности вы, скорее всего, будете использовать XHR, HTML5 API или что-то подобное. + setTimeout(function(){ + resolve("Success!"); // Ура! Всё прошло хорошо! + }, 250); +}); + +myFirstPromise.then((successMessage) => { + // successMessage - это что угодно, что мы передали в функцию resolve(...) выше. + // Это необязательно строка, но если это всего лишь сообщение об успешном завершении, это наверняка будет она. + console.log("Ура! " + successMessage); +});</pre> + +<h3 id="Продвинутый_пример">Продвинутый пример</h3> + +<pre class="brush: html" style="display: none;">Создать промис! +</pre> + +<div id="log"> +<pre class="brush: html"><button id="btn">Создать Promise!</button> +<div id="log"></div></pre> +</div> + +<p>Данный небольшой пример показывает механизм работы с <code>Promise</code>. Метод <code>testPromise()</code> вызывается при каждом нажатии на {{HTMLElement("button")}}. При этом создаётся промис, которое успешно выполняется при помощи <code>window.setTimeout</code>, со значением <code>'result'</code> в случайном интервале от 1 до 3-х секунд.</p> + +<p>исполнение промиса протоколируется при помощи продолжения <code>p1.then</code>. Это показывает как синхронная часть метода отвязана от асинхронного завершения промиса.</p> + +<pre class="brush: js">var promiseCount = 0; +function testPromise() { + var thisPromiseCount = ++promiseCount; + + var log = document.getElementById('log'); + log.insertAdjacentHTML('beforeend', thisPromiseCount + + ') Запуск (запуск синхронного кода) +'); + + // Создаём промис, возвращающее 'result' (по истечении 3-х секунд) + var p1 = new Promise( + // Функция разрешения позволяет завершить успешно или + // отклонить промис + function(resolve, reject) { + log.insertAdjacentHTML('beforeend', thisPromiseCount + + ') Запуск промиса (запуск асинхронного кода) +'); + // Это всего лишь пример асинхронности + window.setTimeout( + function() { + // Обещание исполнено! + resolve(thisPromiseCount) + }, Math.random() * 2000 + 1000); + }); + + // Указываем, что сделать с исполненным промисм + p1.then( + // Записываем в протокол + function(val) { + log.insertAdjacentHTML('beforeend', val + + ') Обещание исполнено (асинхронный код завершён) +'); + }); + + log.insertAdjacentHTML('beforeend', thisPromiseCount + + ') Обещание создано (синхронный код завершён) +'); +} +</pre> + +<pre class="brush:js" style="display: none;">if ("Promise" in window) { + btn = document.getElementById("btn"); + btn.addEventListener("click",testPromise); +} +else { + log = document.getElementById('log'); + log.innerHTML = "Live example not available as your browser doesn't support the Promise interface."; +} +</pre> + +<pre class="brush: js">if ("Promise" in window) { + let btn = document.getElementById("btn"); + btn.addEventListener("click",testPromise); +} else { + log = document.getElementById('log'); + log.innerHTML = "Демонстрация невозможна, поскольку ваш браузер не поддерживает интерфейс <code>Promise<code>."; +}</pre> + +<p>Данный пример запускается при нажатии на кнопку. Для этого вам необходим браузер, поддерживающий <code>Promise</code>. При последовательных нажатиях на кнопку с коротким интервалом, вы можете увидеть как различные промиса будут исполнены один за другим.</p> + +<h3 id="Загрузка_изображения_при_помощи_XHR">Загрузка изображения при помощи XHR</h3> + +<p>Другой простой пример использования <code>Promise</code> и <code><a href="/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a></code> для загрузки изображения доступен в репозитории MDN<a href="https://github.com/mdn/js-examples/tree/master/promises-test">promise-test</a> на GitHub. Вы также можете <a href="https://mdn.github.io/js-examples/promises-test/">посмотреть его в действии</a>. Каждый шаг прокомментирован и вы можете подробно исследовать Promise и XHR.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td><a href="https://github.com/domenic/promises-unwrapping">domenic/promises-unwrapping</a></td> + <td>Черновик</td> + <td>Начало работы над стандартом.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise-objects', 'Promise')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение в стандарте ECMA.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Promise")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="http://promisesaplus.com/">Спецификация Promises/A+</a></li> + <li><a href="http://www.html5rocks.com/en/tutorials/es6/promises/">Jake Archibald: JavaScript Promises: There and Back Again</a></li> + <li><a href="http://de.slideshare.net/domenicdenicola/callbacks-promises-and-coroutines-oh-my-the-evolution-of-asynchronicity-in-javascript">Domenic Denicola: Callbacks, Promises, and Coroutines – Asynchronous Programming Pattern in JavaScript</a></li> + <li><a href="http://www.mattgreer.org/articles/promises-in-wicked-detail/">Matt Greer: JavaScript Promises ... In Wicked Detail</a></li> + <li><a href="https://www.promisejs.org/">Forbes Lindesay: promisejs.org</a></li> + <li><a href="http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html">Nolan Lawson: We have a problem with promises — Common mistakes with promises</a></li> + <li><a href="https://github.com/jakearchibald/es6-promise/">Promise polyfill</a></li> + <li><a href="https://www.udacity.com/course/javascript-promises--ud898">Udacity: JavaScript Promises</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html b/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html new file mode 100644 index 0000000000..ebd0f84779 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/prototype/index.html @@ -0,0 +1,66 @@ +--- +title: Promise.prototype +slug: Web/JavaScript/Reference/Global_Objects/Promise/prototype +tags: + - JavaScript + - Обещание + - Свойство +translation_of: Web/JavaScript/Reference/Global_Objects/Promise +--- +<div>{{JSRef}}</div> + +<p>Cвойство <code><strong>Promise</strong></code><strong><code>.prototype</code></strong> представляет собой прототип конструктора {{jsxref("Promise")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>{{jsxref("Promise")}} обьект наследованный от {{jsxref("Promise.prototype")}}. Вы можете использовать прототип конструктора чтобы добавлять свойства или методы во все объекты обещаний.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Promise.prototype.constructor</code></dt> + <dd>Возвращает функцию, которая создала прототип экземпляра. Это функция всех обещаний по умолчанию.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Promise.catch", "Promise.prototype.catch(onRejected)")}}</dt> + <dd>Добавляет функцию обратного вызова для обработки отклонения обещания, которая возвращает новое обещание выполненное с переданным значением, если она вызвана, или оригинальное значение resolve, если обещание выполнено.</dd> + <dt>{{jsxref("Promise.then", "Promise.prototype.then(onFulfilled, onRejected)")}}</dt> + <dd style="margin-bottom: 0.5cm;">Добавляет обработчик выполнения и отклонения обещания, и возвращает новое обещание выполненное со значением вызванного обработчика, или оригинальное значение, если обещание не было обработано (т.е. если соответствующий обработчик onFulfilled или onRejected не является функцией).</dd> +</dl> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.prototype', 'Promise.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.prototype', 'Promise.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/race/index.html b/files/ru/web/javascript/reference/global_objects/promise/race/index.html new file mode 100644 index 0000000000..79b3fba0b0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/race/index.html @@ -0,0 +1,115 @@ +--- +title: Promise.race() +slug: Web/JavaScript/Reference/Global_Objects/Promise/race +tags: + - ECMAScript6 + - Promise + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/race +--- +<div>{{JSRef}}</div> + +<p>Метод<strong> Promise.race(iterable)</strong> возвращает выполненное или отклоненное обещание, в зависимости от того, с каким результатом завершится первое из переданных обещаний, со значением или причиной отклонения этого обещания.</p> + +<p>{{EmbedInteractiveExample("pages/js/promise-race.html")}}</p> + +<h2 id="Синтакс">Синтакс</h2> + +<pre class="brush: js"><var>Promise.race(iterable)</var>;</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Итерируемый объект, такой как ({{jsxref("Array")}}). Смотри <a href="/en-US/docs/Web/JavaScript/Guide/iterable">iterable</a>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Выполненный или отклоненный {{jsxref("Promise")}} в зависимости от результата первого завершенного из переданных в итерируемом объекте обещаний.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>race</code> возвращает <code>Обещание </code>(<code>Promise</code>) с результатом, первого завершенного из переданных обещаний. Т.е. возвратит resolve или reject, в зависимости от того, что случится первым.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_Promise.race_–_пример_с_setTimeout">Использование <code>Promise.race</code> – пример с <code>setTimeout</code></h3> + +<pre class="brush: js">var p1 = new Promise(function(resolve, reject) { + setTimeout(resolve, 500, "один"); +}); +var p2 = new Promise(function(resolve, reject) { + setTimeout(resolve, 100, "два"); +}); + +Promise.race([p1, p2]).then(function(value) { + console.log(value); // "два" + // Оба вернули resolve, однако p2 вернул результат первым +}); + +var p3 = new Promise(function(resolve, reject) { + setTimeout(resolve, 100, "три"); +}); +var p4 = new Promise(function(resolve, reject) { + setTimeout(reject, 500, "четыре"); +}); + +Promise.race([p3, p4]).then(function(value) { + console.log(value); // "три" + // p3 быстрее, поэтому выведется значение его resolve +}, function(reason) { + // Не вызывается +}); + +var p5 = new Promise(function(resolve, reject) { + setTimeout(resolve, 500, "пять"); +}); +var p6 = new Promise(function(resolve, reject) { + setTimeout(reject, 100, "шесть"); +}); + +Promise.race([p5, p6]).then(function(value) { + // Не вызывается +}, function(reason) { + console.log(reason); // "шесть" + // p6 быстрее, выводится его rejects +}); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.race', 'Promise.race')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение в стандарте ECMA.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.race', 'Promise.race')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Promise.race")}}</p> + +<p> </p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/reject/index.html b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html new file mode 100644 index 0000000000..f234d5122f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/reject/index.html @@ -0,0 +1,76 @@ +--- +title: Promise.reject() +slug: Web/JavaScript/Reference/Global_Objects/Promise/reject +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/reject +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Promise.reject(reason)</strong></code> возвращает объект <code>Promise, который был отклонен по указанной причине</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>Promise.reject(reason)</var>;</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>reason</dt> + <dd>Причина по которой <code>Promise</code> был отклонен.</dd> + <dt> + <h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + + <p>Отклоненный с указаной причиной {{jsxref("Promise")}}.</p> + </dt> +</dl> + +<h2 id="Описание">Описание</h2> + +<p><code>Promise.reject</code> возвращает <code>Promise</code> который был отклонен. В целях отладки и выборочного отлова ошибок, удобно использовать в качестве причины объекты {{jsxref("Error")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_статического_метода_Promise.reject()">Использование статического метода Promise.reject()</h3> + +<pre class="brush: js">Promise.reject(new Error("провал")).then(function(success) { + // не вызывается +}, function(error) { + console.log(error); // печатает "провал" + Stacktrace + throw error; // повторно выбрасываем ошибку, вызывая новый reject +});</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.reject', 'Promise.reject')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Исходное определение в стандарте ECMA.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.reject', 'Promise.reject')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.Promise.reject")}}</p> + +<p> </p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li><a href="http://bluebirdjs.com/docs/api/error.html">Выборочный отлов ошибок с использованием библиотеки BlueBird Promise</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html new file mode 100644 index 0000000000..13a8ba9ee9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/resolve/index.html @@ -0,0 +1,138 @@ +--- +title: Promise.resolve() +slug: Web/JavaScript/Reference/Global_Objects/Promise/resolve +tags: + - ECMAScript6 + - JavaScript + - Обещание + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/resolve +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Promise.resolve(value)</strong></code> возвращает {{jsxref("Promise")}} выполненый с переданным значением. Если переданное значение является thenable - обьект (т.е. имеет метод {{jsxref("Promise.then", "\"then\" method")}}), возвращаемое обещание будет следовать thenable - обьекту, принимая свое состояние; в ином случае возвращаемое обещание будет выполнено с переданным значением.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>Promise.resolve(value)</var>; +Promise.resolve(promise); +Promise.resolve(thenable); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>value</dt> + <dd>Значение с которым будет выполнено обещание. Может также быть обещанием или обьект подобный обещанию (thenable - обьект имеющий метод then).</dd> +</dl> + +<h3 id="Возращаемое_значение">Возращаемое значение</h3> + +<p>Выполненый с переданным значением {{jsxref("Promise")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>Метод Promise.resolve</code> возвращает выполненое обещание (<code>Promise</code>).</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_Promise.resolve">Использование метода <code>Promise.resolve</code></h3> + +<pre class="brush: js">Promise.resolve("Success").then(function(value) { + console.log(value); // "Success" +}, function(value) { + // не будет вызвана +}); +</pre> + +<h3 id="Выполнение_с_массивом">Выполнение с массивом</h3> + +<pre class="brush: js">var p = Promise.resolve([1,2,3]); +p.then(function(v) { + console.log(v[0]); // 1 +}); +</pre> + +<h3 id="Выполнение_с_другим_обещанием_Promise">Выполнение с другим обещанием ( <code>Promise</code>)</h3> + +<pre class="brush: js">var original = Promise.resolve(true); +var cast = Promise.resolve(original); +cast.then(function(v) { + console.log(v); // true +}); +</pre> + +<h3 id="Выполнение_с_thenable_объектом_и_выбрасывание_исключений">Выполнение с thenable объектом и выбрасывание исключений</h3> + +<pre class="brush: js">// Выполнение с thenable объектом +var p1 = Promise.resolve({ + then: function(onFulfill, onReject) { onFulfill("fulfilled!"); } +}); +console.log(p1 instanceof Promise) // true + +p1.then(function(v) { + console.log(v); // "fulfilled!" + }, function(e) { + // не вызывается +}); + +// Thenable объект выбрасывает исключение +// перед вызовом колбека Promise resolves +var thenable = { then: function(resolve) { + throw new TypeError("Throwing"); + resolve("Resolving"); +}}; + +var p2 = Promise.resolve(thenable); +p2.then(function(v) { + // не вызывается +}, function(e) { + console.log(e); // TypeError: Throwing +}); + +// Thenable объект выбрасывает исключение +// после вызова колбека Promise resolves +var thenable = { then: function(resolve) { + resolve("Resolving"); + throw new TypeError("Throwing"); +}}; + +var p3 = Promise.resolve(thenable); +p3.then(function(v) { + console.log(v); // "Resolving" +}, function(e) { + // не вызывается +}); +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.resolve', 'Promise.resolve')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-promise.resolve', 'Promise.resolve')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript/promise","Promise.resolve")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/promise/then/index.html b/files/ru/web/javascript/reference/global_objects/promise/then/index.html new file mode 100644 index 0000000000..bf74e41b6c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/promise/then/index.html @@ -0,0 +1,158 @@ +--- +title: Promise.prototype.then() +slug: Web/JavaScript/Reference/Global_Objects/Promise/then +tags: + - ECMAScript6 + - JavaScript + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Promise/then +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>then()</strong></code> возвращает {{jsxref("Promise")}}. Метод может принимать два аргумента: колбэк-функции для случаев выполнения и отклонения промиса.</p> + +<div class="note"> +<p> Если один или оба аргумента отсутсвуют или их значения не функции, то <code>then</code> пропустит их и не выбросит ошибку. Если для <code>Promise</code>, который переходит в состояние <code>выполнен</code> или <code>отклонен</code> вызван метод <code>then</code>, и у данного метода нет нужного обработчика, то в таком случае <code>then</code> просто возвращает промис с состоянием начального <code>Promise</code>, для которого <code>then</code> был вызван.</p> +</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><var>p.then(onFulfilled[, onRejected])</var>; + +p.then(value => { + // выполнение + }, reason => { + // отклонение +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>onFulfilled</code> {{optional_inline}}</dt> + <dd>{{jsxref("Function")}} вызывается, когда <code>Promise</code> выполнен. Эта функция принимает один аргумент, значение с которым промис был выполнен. Если значение onFulfilled не функция, то оно автоматически заменяется на "Identity" функцию (возвращает полученный аргумент)</dd> + <dt><code>onRejected</code> {{optional_inline}}</dt> + <dd>{{jsxref("Function")}} вызывается, когда <code>Promise</code> отклонен. Эта функция принимает один аргумент, значение с которым промис был отклонен. Если значение onRejected не функция, то оно автоматически заменяется на "Thrower" функцию (выбрасывает полученный аргумент как ошибку)</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Так как и метод <code>then</code>, и метод {{jsxref("Promise.prototype.catch()")}} возвращают <code>Promise</code>, их можно вызвать цепочкой — эта операция называется <em>соединение</em>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_then">Использование метода <code>then</code></h3> + +<pre class="brush: js notranslate">var p1 = new Promise(function(resolve, reject) { + resolve("Успех!"); + // или + // reject("Ошибка!"); +}); + +p1.then(function(value) { + console.log(value); // Успех! +}, function(reason) { + console.log(reason); // Ошибка! +}); +</pre> + +<h3 id="Соединение">Соединение</h3> + +<p>Так как метод <code>then</code> возвращает <code>Promise</code> (обещание), вы можете объединить несколько вызовов <code>then</code> в цепочку. Значения возвращаемые из onFulfilled или onRejected коллбэков будут автоматически обернуты в обещание.</p> + +<pre class="brush: js notranslate">var p2 = new Promise(function(resolve, reject) { + resolve(1); +}); + +p2.then(function(value) { + console.log(value); // 1 + return value + 1; +}).then(function(value) { + console.log(value); // 2 +}); + +p2.then(function(value) { + console.log(value); // 1 +}); +</pre> + +<p>Вы также можете соединить одну функцию, имеющую подобную с обещаниями API, с другой функцией.</p> + +<pre class="brush: js notranslate">function fetch_current_data() { + // API функции fetch() возвращает обещание. Эта функция + // имеет аналогичный API, за исключением значения в случае выполнения + return fetch("current-data.json").then((response) => { + if (response.headers.get("content-type") != "application/json") { + throw new TypeError(); + } + var j = response.json(); + // можем что-нибудь делать с j + return j; // в случае выполнения обещания, значение + // передается в fetch_current_data().then() + }); +} +</pre> + +<p>Если onFulfilled возвращает обещание, возвращаемое значение может быть выполнено (resolved) / отклонено (rejected) обещанием.</p> + +<pre class="brush: js notranslate">function resolveLater(resolve, reject) { + setTimeout(function () { + resolve(10); + }, 1000); +} +function rejectLater(resolve, reject) { + setTimeout(function () { + reject(20); + }, 1000); +} + +var p1 = Promise.resolve("foo"); +var p2 = p1.then(function() { + // Возвращает обещание, которое будет разрешено значением 10 через 1 секунду + return new Promise(resolveLater); +}); +p2.then(function(v) { + console.log("resolved", v); // "resolved", 10 +}, function(e) { + // не вызвано + console.log("rejected", e); +}); + +var p3 = p1.then(function() { +// Возвращает обещание, которое будет отброшено значением 20 через 1 секунду + return new Promise(rejectLater); +}); +p3.then(function(v) { + // не + console.log("resolved", v); +}, function(e) { + console.log("rejected", e); // "rejected", 20 +});</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-promise.prototype.then', 'Promise.prototype.then')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение в стандарте ECMA.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Promise.then")}}</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li>{{jsxref("Promise.prototype.catch()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html new file mode 100644 index 0000000000..a796a08e26 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/deleteproperty/index.html @@ -0,0 +1,131 @@ +--- +title: handler.deleteProperty() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/deleteProperty +tags: + - Прокси + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/deleteProperty +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>handler.deleteProperty()</code></strong> является "ловушкой" (функция-перехватчик) для оператора {{jsxref("Operators/delete", "delete")}}.</p> + +<div>{{EmbedInteractiveExample("pages/js/proxyhandler-deleteproperty.html", "taller")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js">var p = new Proxy(target, { + deleteProperty: function(target, property) { + } +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<p>Следующие параметры передаются в метод <code>deleteProperty</code>.</p> + +<dl> + <dt><code>target</code></dt> + <dd>Целевой объект.</dd> + <dt><code>property</code></dt> + <dd>Имя или {{jsxref("Symbol")}} свойства, которое нужно удалить.</dd> +</dl> + +<p><code>this</code> в момент вызова ссылается на объект handler.</p> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Метод <code>deleteProperty</code> должен возвращать {{jsxref("Boolean")}}. Значение <code>true</code>, если свойство было успешно удалено, в противном случае <code>false</code>.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code><strong>handler.deleteProperty()</strong></code> является "ловушкой" для оператора {{jsxref("Operators/delete", "delete")}}.</p> + +<h3 id="Перехваты">Перехваты</h3> + +<p>Данная "ловушка" может перехватывать следующие операции:</p> + +<ul> + <li>Удаление свойства: <code>delete proxy[foo]</code> and <code>delete proxy.foo</code></li> + <li>{{jsxref("Reflect.deleteProperty()")}}</li> +</ul> + +<h3 id="Инварианты">Инварианты</h3> + +<p>Если следующие инварианты нарушены, то прокси выдаст ошибку {{jsxref("TypeError")}}:</p> + +<ul> + <li>Свойство не может быть удалено, если оно неконфигурируемое собственное свойство целевого объекта.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<p>Следующий код перехватывает действие оператора {{jsxref("Operators/delete", "delete")}}.</p> + +<pre class="brush: js">var p = new Proxy({}, { + deleteProperty: function(target, prop) { + if (prop in target){ + delete target[prop] + console.log('property removed: ' + prop) + return true + } + else { + console.log('property not found: ' + prop) + return false + } + } +}) + +var result + +p.a = 10 +console.log('a' in p) // true + +result = delete p.a // "property removed: a" +console.log(result) // true +console.log('a' in p) // false + +result = delete p.a // "property not found: a" +console.log(result) // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-delete-p', '[[Delete]]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Proxy.handler.deleteProperty")}}</p> +</div> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Operators/delete", "delete")}} operator</li> + <li>{{jsxref("Reflect.deleteProperty()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html new file mode 100644 index 0000000000..eef887a246 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/index.html @@ -0,0 +1,134 @@ +--- +title: Proxy handler +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler +tags: + - ECMAScript 2015 + - JavaScript + - NeedsTranslation + - Proxy + - TopicStub + - Прокси + - Русский + - ловушки +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +--- +<div>{{JSRef}}</div> + +<p>Объект-обработчик прокси - это объект, который содержит ловушки для {{jsxref("Proxy", "proxies", "", 1)}}.</p> + +<h2 id="Методы">Методы</h2> + +<p><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Все ловушки ставятся по желанию разработчика.</span></span> <span class="ChMk0b JLqJ4b"><span>Если ловушка не была определена, то, по умолчанию, операция перенаправляется на исходный объект (target).</span></span></span></p> + +<dl> + <dt>{{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "handler.getPrototypeOf()")}}</dt> + <dd>Ловушка для {{jsxref("Object.getPrototypeOf")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "handler.setPrototypeOf()")}}</dt> + <dd>Ловушка для {{jsxref("Object.setPrototypeOf")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/isExtensible", "handler.isExtensible()")}}</dt> + <dd>Ловушка для {{jsxref("Object.isExtensible")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/preventExtensions", "handler.preventExtensions()")}}</dt> + <dd>Ловушка для {{jsxref("Object.preventExtensions")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}</dt> + <dd>Ловушка для {{jsxref("Object.getOwnPropertyDescriptor")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/defineProperty", "handler.defineProperty()")}}</dt> + <dd>Ловушка для {{jsxref("Object.defineProperty")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/has", "handler.has()")}}</dt> + <dd>Ловушка для оператора {{jsxref("Operators/in", "in")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/get", "handler.get()")}}</dt> + <dd>Ловушка для получения значений из свойств.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/set", "handler.set()")}}</dt> + <dd>Ловушка для установки значений в свойства.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/deleteProperty", "handler.deleteProperty()")}}</dt> + <dd>Ловушка для оператора {{jsxref("Operators/delete", "delete")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}}</dt> + <dd>Ловушка для {{jsxref("Object.getOwnPropertyNames")}} и {{jsxref("Object.getOwnPropertySymbols")}}.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/apply", "handler.apply()")}}</dt> + <dd>Ловушка для вызова функции.</dd> + <dt>{{jsxref("Global_Objects/Proxy/handler/construct", "handler.construct()")}}</dt> + <dd>Ловушка для оператора {{jsxref("Operators/new", "new")}}.</dd> +</dl> + +<p>Некоторые нестандартные ловушки <a href="/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#Proxy">устарели и были удалены</a>.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Определении при инициализации.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots', 'Proxy Object Internal Methods and Internal Slots')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Обработчик <code>enumerate</code> был удален.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>49 [1]</td> + <td>{{ CompatGeckoDesktop("18") }}</td> + <td>12</td> + <td>{{CompatOpera(36)}}</td> + <td>{{CompatSafari(10)}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoDesktop("18") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] <a href="https://www.chromestatus.com/features/4811188005240832">Разрешен по умолчанию</a>.</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html new file mode 100644 index 0000000000..88b030ecc4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html @@ -0,0 +1,179 @@ +--- +title: handler.set() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set +tags: + - Прокси + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set +--- +<div>{{JSRef}}</div> + +<p><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">Метод <strong>handler.set()</strong> является ловушкой для установки </span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">значения </span></span><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">свойств</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">у</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">.</span></span></p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="brush: js notranslate">var p = new Proxy(target, { + set: function(target, property, value, receiver) { + } +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<p><span id="result_box" lang="ru"><span>Следующие параметры передаются методу </span></span><code>set()</code> <span lang="ru"><span>.</span> </span><code>this</code><span lang="ru"><span> привязан к обработчику</span></span></p> + +<dl> + <dt><code>target</code></dt> + <dd>Исходный обьект, который проксируется.</dd> + <dt><code>property</code></dt> + <dd><span id="result_box" lang="ru"><span>Имя свойства, в которое устанавливается значение </span></span><code>value</code><span lang="ru"><span>.</span></span></dd> + <dt><code>value</code></dt> + <dd><span id="result_box" lang="ru"><span>Значение, устанавливаемое в свойство </span></span><code>property</code><span lang="ru"><span>.</span></span></dd> + <dt><code>receiver</code></dt> + <dd><span id="result_box" lang="ru"><span>Объект, которому первоначально было присвоено задание.</span> <span>Обычно это сам прокси.</span> <span>Но обработчик </span></span><code>set()</code><span lang="ru"><span> также может быть вызван косвенно, через цепочку прототипов или различными другими способами.</span><br> + <span>Например, предположим, что скрипт выполняет </span></span><code><var>obj</var>.name = "jen"</code><span lang="ru"><span>, при этом </span></span><code><var>obj</var></code><span lang="ru"><span> не является прокси и не имеет собственного свойства </span></span><code>.name</code><span lang="ru"><span>, но имеет прокси в цепочке прототипов.</span> Б<span>удет вызван обработчик прокси </span></span><code>set()</code><span lang="ru"><span> , а </span></span><code><var>obj</var></code><span lang="ru"><span> будет передан в качестве получателя.</span></span></dd> + <dd></dd> +</dl> + +<h3 id="Возвращаемые_результаты">Возвращаемые результаты</h3> + +<p>Метод <code>set</code> <span id="result_box" lang="ru"><span>должен возвращать boolean значение</span></span>.</p> + +<ul> + <li>Возвращает <code>true</code>, если <span id="result_box" lang="ru"><span>присвоение выполнено успешно</span></span>.</li> + <li>Если метод <code>set()</code> возвращает <code>false</code>, <span id="result_box" lang="ru"><span>а присваивание произошло в коде строгого режима, то будет выброшена</span></span> {{jsxref("TypeError")}}.</li> +</ul> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code><strong>handler.set</strong></code> <span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">является ловушкой для установки </span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">значения </span></span><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">свойств</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. +">у</span></span>.</p> + +<h3 id="Перехват">Перехват</h3> + +<p>Эта ловушка может перехватывать следующие операции:</p> + +<ul> + <li>Установка значения свойству: <code>proxy[foo] = bar</code> and <code>proxy.foo = bar</code></li> + <li>Установка значения наследованному свойству: <code>Object.create(proxy)[foo] = bar</code></li> + <li>{{jsxref("Reflect.set()")}}</li> +</ul> + +<h3 id="Инварианты">Инварианты</h3> + +<p>Если нарушены следующие инваринаты, то proxy выбросит {{jsxref("TypeError")}}:</p> + +<ul> + <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Невозможно изменить значение свойства так, чтобы оно отличалось от значения соответствующего свойства целевого объекта, если соответствующее свойство целевого объекта не является доступным для записи и не настраиваемым свойством данных.</span></span></span></li> + <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Невозможно установить значение свойства, если соответствующее свойство целевого объекта является неконфигурируемым свойством средства доступа, для которого в качестве атрибута [[Set]] указано значение undefined.</span></span></span></li> + <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>В строгом режиме при возврате из обработчика </span></span></span><code>set()</code><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span> значения </span></span></span><code>false</code><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>, будет выброшено исключение {{jsxref ("TypeError")}}</span></span></span>.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<p><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Следующий код перехватывает установку значения свойству</span></span></span><span lang="ru"><span>.</span></span></p> + +<pre class="brush: js notranslate">var p = new Proxy({}, { + set: function(target, prop, value, receiver) { + target[prop] = value + console.log('property set: ' + prop + ' = ' + value) + return true + } +}) + +console.log('a' in p) // false + +p.a = 10 // "property set: a = 10" +console.log('a' in p) // true +console.log(p.a) // 10 +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatChrome("61")}}</td> + <td>{{CompatGeckoDesktop("18")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("18")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Reflect.set()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/index.html b/files/ru/web/javascript/reference/global_objects/proxy/index.html new file mode 100644 index 0000000000..2d8e5ae557 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/index.html @@ -0,0 +1,482 @@ +--- +title: Прокси +slug: Web/JavaScript/Reference/Global_Objects/Proxy +tags: + - ECMAScript6 + - JavaScript + - NeedsUpdate + - Reference + - Объект + - Прокси +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy +--- +<div><font><font>Объект </font></font><code>Proxy</code><font><font> позволяет создать прокси</font><font> для другого объекта, может перехватывать и переопределить основные операции для данного объекта.</font></font></div> + +<h2 id="Введение">Введение</h2> + +<p>Прокси используются программистами для объявления расширенной семантики JavaScript объектов. Стандартная семантика реализована в движке JavaScript, который обычно написан на низкоуровневом языке программирования, например C++. Прокси позволяют программисту определить поведение объекта при помощи JavaScript. Другими словами они являются <strong>инструментом метапрограммирования</strong>.</p> + +<p><strong>Примечание</strong>: реализация прокси в SpiderMonkey является прототипом, в котором прокси API и семантика не стабильны. Также, реализация в SpiderMonkey может не соответствовать последней версии спецификации. Она может быть изменена в любой момент и предоставляется исключительно как экспериментальная функция. <strong>Не полагайтесь на неё в производственном коде.</strong></p> + +<p>Эта страница описывает новый API (называемый «непосредственным проксированием»), который является частью Firefox 18. Для просмотра старого API (Firefox 17 и ниже) посетите страницу описания <a href="/en-US/docs/JavaScript/Old_Proxy_API" title="/en-US/docs/JavaScript/Old_Proxy_API">старого прокси API</a>.</p> + +<h2 id="Терминология">Терминология</h2> + +<dl> + <dt>механизм полного перехвата (или "intercession API")</dt> + <dd>Технический термин для этой функции.</dd> + <dt>прокси (proxy)</dt> + <dd>Объект, оборачивающий исходный объект.</dd> + <dt>обработчик (handler)</dt> + <dd>Объект-заменитель, содержащий ловушки. О<span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>пределяет, какие операции будут перехвачены, также переопределяет перехваченные операции.</span></span></span></dd> + <dt>ловушки (traps)</dt> + <dd>Методы, которые предоставляют доступ к свойствам. Это аналогично концепции ловушек в операционных системах.</dd> + <dt>цель (target)</dt> + <dd>Исходный объект, который виртуализируется прокси. Он часто используется в качестве источника данных в прокси. Для него проверяются инварианты относительно расширяемости и настраиваемости свойств.</dd> +</dl> + +<h2 id="Прокси">Прокси</h2> + +<p>Прокси - это новые объекты; невозможно выполнить "проксирование" существующего объекта. Пример создания прокси:</p> + +<pre class="brush: js notranslate">var p = new Proxy(target, handler); +</pre> + +<p>Где:</p> + +<ul> + <li><code>target</code> — исходный объект (может быть объектом любого типа, включая массив, функцию и даже другой прокси объект).</li> + <li><code>handler</code> — объект-обработчик, методы (ловушки) которого определяют поведение прокси во время выполнения операции над ним.</li> +</ul> + +<h2 id="Обработчик">Обработчик</h2> + +<p>Все ловушки опциональны. В случае, если ловушка не задана, то стандартным поведением будет перенаправление операции к объекту-цели.</p> + +<table class="standard-table"> + <thead> + <tr> + <th>JavaScript код</th> + <th>Метод обработчика</th> + <th>Описание</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>Object.getOwnPropertyDescriptor(proxy, name)</code></td> + <td><code><strong>getOwnPropertyDescriptor</strong><br> + function(target, name) -> PropertyDescriptor | undefined</code></td> + <td>Должен возвращать верный объект-описание свойства или <code>undefined</code>, чтобы показать, что свойство с именем <code>name</code> существует в эмулируемом объекте.</td> + </tr> + <tr> + <td> + <p><code>Object.getOwnPropertyNames(proxy)</code><br> + <code><code>Object.getOwnPropertySymbols(proxy)</code></code><br> + <code><code><code>Object.keys(proxy)</code></code></code></p> + </td> + <td><code><code><strong>ownKeys</strong></code> function(target) -> [string | symbol]</code></td> + <td>Возвращает массив всех собственных (не унаследованных) имён свойств эмулируемого объекта.</td> + </tr> + <tr> + <td><code>Object.defineProperty(proxy,name,pd)</code></td> + <td><code><strong>defineProperty</strong> function(target, name, propertyDescriptor) -> any</code></td> + <td>Задаёт новое свойство, атрибуты которого определяются предоставленным <code>propertyDescriptor</code>. Возвращаемое значение метода игнорируется.</td> + </tr> + <tr> + <td><code>delete proxy.name</code></td> + <td><code><strong>deleteProperty</strong> function(target, name) -> boolean</code></td> + <td>Удаляет именованное свойство из прокси. Возвращает <code>true</code> в случае успешного удаления свойства <code>name</code>.</td> + </tr> + <tr> + <td><code>Object.preventExtensions(proxy)</code></td> + <td><code><strong>preventExtensions</strong> function(target) -> boolean</code></td> + <td>Делает объект нерасширяемым. Возвращает <code>true</code> при успешном выполнении.</td> + </tr> + <tr> + <td><code>name in proxy</code></td> + <td><code><strong>has</strong> function(target, name) -> boolean</code></td> + <td></td> + </tr> + <tr> + <td> + <p><code>proxy.name</code> (in the context of "getting the value")</p> + + <p><code>receiver.name</code> (if <code>receiver</code> inherits from a proxy and does not override <code>name</code>)</p> + </td> + <td><code><strong>get</strong> function(target, name, receiver) -> any</code></td> + <td><code>receiver</code> — это прокси или объект, унаследованный от прокси.</td> + </tr> + <tr> + <td> + <p><code>proxy.name = val</code> (in the context of "setting the value")</p> + + <p><code>receiver.name = val</code> (if <code>receiver</code> inherits from a proxy and does not override <code>name</code>)</p> + </td> + <td><code><strong>set</strong> function(target, name, val, receiver) -> boolean</code></td> + <td><code style="font-style: normal;">receiver</code> — это прокси или объект, унаследованный от прокси.</td> + </tr> + <tr> + <td> + <p><code>proxy(...args)<br> + proxy.apply(thisValue, args)<br> + proxy.call(thisValue, ...args)</code></p> + </td> + <td><code><strong>apply</strong> function(target, thisValue, args) -> any</code></td> + <td><code>target</code> должен быть функцией.</td> + </tr> + <tr> + <td><code>new proxy(...args)</code></td> + <td><code><strong>construct</strong> function(target, args) -> object</code></td> + <td><code>target</code> должен быть функцией.</td> + </tr> + </tbody> +</table> + +<h2 id="Инварианты">Инварианты</h2> + +<p>Несмотря на то, что прокси предоставляют много возможностей пользователям, некоторые операции не перехватываются для сохранения постоянства языка:</p> + +<ul> + <li>Простой и строгий оператор равенства (<code>==</code>, <code>===</code>) не перехватывается. <code>p1 === p2</code> равны, только если <code>p1</code> и <code>p2</code> ссылаются на один и тот же прокси.</li> + <li>Текущая реализация <code>Object.getPrototypeOf(proxy)</code> всегда возвращает <code>Object.getPrototypeOf(target)</code>, потому что в ES2015 перехватчик getPrototypeOf пока не реализован.</li> + <li><code>typeof proxy</code> всегда возвращает <code>typeof target</code>. В частности, <code>proxy</code> может быть использован как функция только если <code>target </code>является функцией.</li> + <li><code>Array.isArray(proxy)</code> всегда возвращает <code>Array.isArray(target)</code>.</li> + <li><code>Object.prototype.toString.call(proxy)</code> всегда возвращает <code>Object.prototype.toString.call(target)</code>, потому что в ES2015 перехватчик Symbol.toStringTag пока не реализован.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Простой_пример">Простой пример</h3> + +<p>Объект, возвращающий значение <code>37</code>, в случае отсутствия свойства с указанным именем:</p> + +<pre class="brush: js notranslate">var handler = { + get: function(target, name){ + return name in target? + target[name] : + 37; + } +}; + +var p = new Proxy({}, handler); +p.a = 1; +p.b = undefined; + +console.log(p.a, p.b); // 1, undefined +console.log('c' in p, p.c); // false, 37 +</pre> + +<h3 id="Перенаправляющий_прокси">Перенаправляющий прокси</h3> + +<p>В данном примере мы используем JavaScript объект, к которому наш прокси направляет все запросы:</p> + +<pre class="brush: js notranslate">var target = {}; +var p = new Proxy(target, {}); + +p.a = 37; // операция перенаправлена прокси + +console.log(target.a); // 37. Операция была успешно перенаправлена +</pre> + +<h3 id="Проверка">Проверка</h3> + +<p>При помощи <code>Proxy</code> вы можете легко проверять передаваемые объекту значения:</p> + +<pre class="brush: js notranslate">let validator = { + set: function(obj, prop, value) { + if (prop === 'age') { + if (!Number.isInteger(value)) { + throw new TypeError('The age is not an integer'); + } + if (value > 200) { + throw new RangeError('The age seems invalid'); + } + } + + // Стандартное сохранение значения + obj[prop] = value; + } +}; + +let person = new Proxy({}, validator); + +person.age = 100; +console.log(person.age); // 100 +person.age = 'young'; // Вызовет исключение +person.age = 300; // Вызовет исключение +</pre> + +<h3 id="Дополнение_конструктора">Дополнение конструктора</h3> + +<p>Функция прокси может легко дополнить конструктор новым:</p> + +<pre class="brush: js notranslate">function extend(sup, base) { + var descriptor = Object.getOwnPropertyDescriptor( + base.prototype, 'constructor', + ); + + const prototype = {...base.prototype} + + base.prototype = Object.create(sup.prototype); + base.prototype = Object.assign(base.prototype, prototype); + + var handler = { + construct: function(target, args) { + var obj = Object.create(base.prototype); + this.apply(target, obj, args); + return obj; + }, + apply: function(target, that, args) { + sup.apply(that, args); + base.apply(that, args); + }, + }; + var proxy = new Proxy(base, handler); + descriptor.value = proxy; + Object.defineProperty(base.prototype, 'constructor', descriptor); + return proxy; +} + +var Person = function(name) { + this.name = name; +}; + +var Boy = extend(Person, function(name, age) { + this.age = age; +}); + +Boy.prototype.sex = 'M'; + +var Peter = new Boy('Peter', 13); +console.log(Peter.sex); // "M" +console.log(Peter.name); // "Peter" +console.log(Peter.age); // 13 +</pre> + +<h3 id="Манипуляция_DOM_элементами">Манипуляция<span style="font-size: 1.71428571428571rem;"> DOM </span><span style="font-size: 1.71428571428571rem;">элементами</span></h3> + +<p>Иногда возникает необходимость переключить атрибут или имя класса у двух разных элементов:</p> + +<pre class="brush: js notranslate">let view = new Proxy({ + selected: null +}, +{ + set: function(obj, prop, newval) { + let oldval = obj[prop]; + + if (prop === 'selected') { + if (oldval) { + oldval.setAttribute('aria-selected', 'false'); + } + if (newval) { + newval.setAttribute('aria-selected', 'true'); + } + } + + // Стандартное сохранение значения + obj[prop] = newval; + } +}); + +let i1 = view.selected = document.getElementById('item-1'); +console.log(i1.getAttribute('aria-selected')); // 'true' + +let i2 = view.selected = document.getElementById('item-2'); +console.log(i1.getAttribute('aria-selected')); // 'false' +console.log(i2.getAttribute('aria-selected')); // 'true' +</pre> + +<h3 id="Изменение_значений_и_дополнительные_свойства">Изменение значений и дополнительные свойства</h3> + +<p>Прокси объект <code>products</code> проверяет передаваемые значения и преобразует их в массив в случае необходимости. Объект также поддерживает дополнительное свойство <code>latestBrowser</code> на чтение и запись.</p> + +<pre class="brush: js notranslate">let products = new Proxy({ + browsers: ['Internet Explorer', 'Netscape'] +}, +{ + get: function(obj, prop) { + // Дополнительное свойство + if (prop === 'latestBrowser') { + return obj.browsers[obj.browsers.length - 1]; + } + + // Стандартный возврат значения + return obj[prop]; + }, + set: function(obj, prop, value) { + // Дополнительное свойство + if (prop === 'latestBrowser') { + obj.browsers.push(value); + return; + } + + // Преобразование значения, если оно не массив + if (typeof value === 'string') { + value = [value]; + } + + // Стандартное сохранение значения + obj[prop] = value; + } +}); + +console.log(products.browsers); // ['Internet Explorer', 'Netscape'] +products.browsers = 'Firefox'; // передаётся как строка (по ошибке) +console.log(products.browsers); // ['Firefox'] <- проблем нет, значение - массив + +products.latestBrowser = 'Chrome'; +console.log(products.browsers); // ['Firefox', 'Chrome'] +console.log(products.latestBrowser); // 'Chrome' +</pre> + +<h3 id="Поиск_элемента_массива_по_его_свойству">Поиск элемента массива по его свойству</h3> + +<p>Данный прокси расширяет массив дополнительными возможностями. Как вы видите, вы можете гибко "задавать" свойства без использования <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperties"><code>Object.defineProperties</code></a>. Данный пример также может быть использован для поиска строки таблицы по её ячейке. В этом случае целью будет <a href="/en-US/docs/DOM/table.rows"><code>table.rows</code></a>.</p> + +<pre class="brush: js notranslate">let products = new Proxy([ + { name: 'Firefox', type: 'browser' }, + { name: 'SeaMonkey', type: 'browser' }, + { name: 'Thunderbird', type: 'mailer' } +], +{ + get: function(obj, prop) { + // Стандартное возвращение значения; prop обычно является числом + if (prop in obj) { + return obj[prop]; + } + + // Получение количества продуктов; псевдоним products.length + if (prop === 'number') { + return obj.length; + } + + let result, types = {}; + + for (let product of obj) { + if (product.name === prop) { + result = product; + } + if (types[product.type]) { + types[product.type].push(product); + } else { + types[product.type] = [product]; + } + } + + // Получение продукта по имени + if (result) { + return result; + } + + // Получение продуктов по типу + if (prop in types) { + return types[prop]; + } + + // Получение типов продуктов + if (prop === 'types') { + return Object.keys(types); + } + + return undefined; + } +}); + +console.log(products[0]); // { name: 'Firefox', type: 'browser' } +console.log(products['Firefox']); // { name: 'Firefox', type: 'browser' } +console.log(products['Chrome']); // undefined +console.log(products.browser); // [{ name: 'Firefox', type: 'browser' }, { name: 'SeaMonkey', type: 'browser' }] +console.log(products.types); // ['browser', 'mailer'] +console.log(products.number); // 3 +</pre> + +<h3 id="Пример_использования_всех_перехватчиков">Пример использования всех перехватчиков</h3> + +<p>В данном примере, использующем все виды перехватчиков, мы попытаемся проксировать <em>не нативный</em> объект, который частично приспособлен для этого - <code>docCookies,</code> созданном в разделе <a href="https://developer.mozilla.org/en-US/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support" title="https://developer.mozilla.org/en-US/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support">"little framework" и опубликованном на странице <code>document.cookie</code></a>.</p> + +<pre class="brush: js notranslate">/* + var docCookies = ... получить объект "docCookies" можно здесь: + https://developer.mozilla.org/en-US/docs/DOM/document.cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support +*/ + +var docCookies = new Proxy(docCookies, { + "get": function (oTarget, sKey) { + return oTarget[sKey] || oTarget.getItem(sKey) || undefined; + }, + "set": function (oTarget, sKey, vValue) { + if (sKey in oTarget) { return false; } + return oTarget.setItem(sKey, vValue); + }, + "deleteProperty": function (oTarget, sKey) { + if (sKey in oTarget) { return false; } + return oTarget.removeItem(sKey); + }, + "enumerate": function (oTarget, sKey) { + return oTarget.keys(); + }, + "iterate": function (oTarget, sKey) { + return oTarget.keys(); + }, + "ownKeys": function (oTarget, sKey) { + return oTarget.keys(); + }, + "has": function (oTarget, sKey) { + return sKey in oTarget || oTarget.hasItem(sKey); + }, + "hasOwn": function (oTarget, sKey) { + return oTarget.hasItem(sKey); + }, + "defineProperty": function (oTarget, sKey, oDesc) { + if (oDesc && "value" in oDesc) { oTarget.setItem(sKey, oDesc.value); } + return oTarget; + }, + "getPropertyNames": function (oTarget) { + return Object.getPropertyNames(oTarget).concat(oTarget.keys()); + }, + "getOwnPropertyNames": function (oTarget) { + return Object.getOwnPropertyNames(oTarget).concat(oTarget.keys()); + }, + "getPropertyDescriptor": function (oTarget, sKey) { + var vValue = oTarget[sKey] || oTarget.getItem(sKey) + return vValue ? { + "value": vValue, + "writable": true, + "enumerable": true, + "configurable": false + } : undefined; + }, + "getOwnPropertyDescriptor": function (oTarget, sKey) { + var vValue = oTarget.getItem(sKey); + return vValue ? { + "value": vValue, + "writable": true, + "enumerable": true, + "configurable": false + } : undefined; + }, + "fix": function (oTarget) { + return "not implemented yet!"; + }, +}); + +/* Проверка cookies */ + +alert(docCookies.my_cookie1 = "First value"); +alert(docCookies.getItem("my_cookie1")); + +docCookies.setItem("my_cookie1", "Changed value"); +alert(docCookies.my_cookie1);</pre> + +<h2 id="See_also" name="See_also" style="line-height: 30px; font-size: 2.14285714285714rem;">Смотрите также</h2> + +<ul> + <li><a class="external" href="http://jsconf.eu/2010/speaker/be_proxy_objects.html">"Proxies are awesome" презентация Brendan Eich на JSConf</a> (<a class="external" href="http://www.slideshare.net/BrendanEich/metaprog-5303821">слайды</a>)</li> + <li><a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:proxies">Страница предложения ECMAScript Harmony Proxy</a> и <a class="external" href="http://wiki.ecmascript.org/doku.php?id=harmony:proxies_semantics">страница ECMAScript Harmony proxy semantics</a></li> + <li><a class="external" href="http://soft.vub.ac.be/~tvcutsem/proxies/">Руководство по прокси</a></li> + <li><a href="/en-US/docs/JavaScript/Old_Proxy_API" title="/en-US/docs/JavaScript/Old_Proxy_API">Старая страница Proxy API</a></li> + <li><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object/watch"><code>Object.watch</code></a> - не стандартная возможность, поддерживается только в движке Gecko.</li> +</ul> + +<h2 id="Лицензионные_примечания">Лицензионные примечания</h2> + +<p>Некоторое содержимое (текст, примеры) данной страницы было скопировано или адаптировано со страниц <a class="external" href="http://wiki.ecmascript.org/doku.php">вики ECMAScript</a>, имеющей лицензию <a class="external" href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC 2.0 BY-NC-SA</a></p> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html new file mode 100644 index 0000000000..81ea9d0605 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/apply/index.html @@ -0,0 +1,111 @@ +--- +title: handler.apply() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +tags: + - Прокси + - вызов функции + - ловушка +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/apply +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>handler.apply()</code></strong> является ловушкой для вызова функции.</p> + +<div>{{EmbedInteractiveExample("pages/js/proxyhandler-apply.html", "taller")}}</div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, { + apply: function(<var>target</var>, <var>thisArg</var>, <var>argumentsList</var>) { + } +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<p>Методу <code>apply()</code> передаются следующие параметры. <code>this</code> связан с объектом-обработчиком.</p> + +<dl> + <dt><code><var>target</var></code></dt> + <dd>Исходный объект.</dd> + <dt><code><var>thisArg</var></code></dt> + <dd>Аргумент <code>this</code> для вызова.</dd> + <dt><code><var>argumentsList</var></code></dt> + <dd>Список аргументов для вызова.</dd> +</dl> + +<h3 id="Возврат_значения">Возврат значения</h3> + +<p>Метод <code>apply()</code> может возвращать значение.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code><strong>handler.apply()</strong></code> является ловушкой для вызова функции.</p> + +<h3 id="Перехват">Перехват</h3> + +<p>Ловушка может перехватывать следующие операции:</p> + +<ul> + <li><code><var>proxy</var>(...<var>args</var>)</code></li> + <li>{{jsxref("Function.prototype.apply()")}} и {{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Reflect.apply()")}}</li> +</ul> + +<h3 id="Инварианты">Инварианты</h3> + +<p>Если следующие инваринаты нарушены, то прокси выбросит {{jsxref("TypeError")}}.</p> + +<p>Исходный объект <code><var>target</var></code> должен быть самовызываемым. То есть, это должна быть функция-объект.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Ловушка_для_вызова_функции">Ловушка для вызова функции</h3> + +<p>Следующий код ловит вызов функции.</p> + +<pre class="brush: js notranslate">const p = new Proxy(function() {}, { + apply: function(target, thisArg, argumentsList) { + console.log('called: ' + argumentsList.join(', ')); + return argumentsList[0] + argumentsList[1] + argumentsList[2]; + } +}); + +console.log(p(1, 2, 3)); // "called: 1, 2, 3" + // 6 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-call-thisargument-argumentslist', '[[Call]]')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Proxy.handler.apply")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Function.prototype.apply()")}}</li> + <li>{{jsxref("Function.prototype.call()")}}</li> + <li>{{jsxref("Reflect.apply()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html new file mode 100644 index 0000000000..2d6be05af5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/get/index.html @@ -0,0 +1,127 @@ +--- +title: handler.get() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>handler.get()</code></strong> является ловушкой для получения значения свойства.</p> + +<div>{{EmbedInteractiveExample("pages/js/proxyhandler-get.html", "taller")}}</div> + +<div class="hidden">The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</div> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox notranslate">const <var>p</var> = new Proxy(<var>target</var>, { + get: function(<var>target</var>, <var>property</var>, <var>receiver</var>) { + } +}); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<p>Следующие параметры передаются методу <code>get()</code>. <code>this</code> привязан к обработчику.</p> + +<dl> + <dt><code><var>target</var></code></dt> + <dd>Исходный объект, который проксируется.</dd> + <dt><code><var>property</var></code></dt> + <dd>Наименование или {{jsxref("Symbol")}} получаемого свойства. </dd> + <dt><code><var>receiver</var></code></dt> + <dd><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Прокси или объект, наследуемый от прокси.</span></span></span>.</dd> +</dl> + +<h3 id="Возвращаемое_значение"><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Возвращаемое значение</span></span></span></h3> + +<p>Метод <code>get()</code> может возвращать значение.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code><strong>handler.get()</strong></code> является ловушкой для получения значения свойства.</p> + +<h3 id="Перехват">Перехват</h3> + +<p>Эта ловушка может перехватывать следующие операции:</p> + +<ul> + <li>Доступ к свойству: <code><var>proxy</var>[<var>foo</var>]</code>and <code><var>proxy</var>.<var>bar</var></code></li> + <li>Доступ к наследованному свойству: <code>Object.create(<var>proxy</var>)[<var>foo</var>]</code></li> + <li>{{jsxref("Reflect.get()")}}</li> +</ul> + +<h3 id="Инварианты">Инварианты</h3> + +<p>Если следующие инваринаты нарушены, то прокси выбросит {{jsxref("TypeError")}}:</p> + +<ul> + <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Значение, сообщаемое для свойства, должно быть таким же, как значение соответствующего свойства целевого объекта, если свойство целевого объекта является неперезаписываемым, не настраиваемым свойством собственных данных.</span></span></span></li> + <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Значение, сообщаемое для свойства, должно быть </span></span></span>undefined, <span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>если соответствующее свойство целевого объекта не является настраиваемым собственным свойством доступа, которое</span></span></span> <code>undefined</code> как и его атрибут <code>[[Get]]</code> attribute.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Ловушка_для_получения_значения_свойства">Ловушка для получения значения свойства</h3> + +<p>Следующий код перехватывает получение значения свойства.</p> + +<pre class="brush: js notranslate">const p = new Proxy({}, { + get: function(target, property, receiver) { + console.log('called: ' + property); + return 10; + } +}); + +console.log(p.a); // "called: a" + // 10 +</pre> + +<p>Следующий код нарушает инвариант.</p> + +<pre class="brush: js notranslate">const obj = {}; +Object.defineProperty(obj, 'a', { + configurable: false, + enumerable: false, + value: 10, + writable: false +}); + +const p = new Proxy(obj, { + get: function(target, property) { + return 20; + } +}); + +p.a; // TypeError is thrown +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-get-p-receiver', '[[Get]]')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.Proxy.handler.get")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> + <li>{{jsxref("Proxy.handler", "handler")}}</li> + <li>{{jsxref("Reflect.get()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html b/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html new file mode 100644 index 0000000000..1bf6b70b43 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/proxy/index.html @@ -0,0 +1,125 @@ +--- +title: Proxy() constructor +slug: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +tags: + - Constructor + - JavaScript + - NeedsTranslation + - Proxy + - Reference + - TopicStub +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy +--- +<div>{{JSRef}}</div> + +<p>The <code><strong>Proxy()</strong></code> constructor is used to create {{jsxref("Proxy")}} objects.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox notranslate">new Proxy(<var>target</var>, <var>handler</var>)</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code><var>target</var></code></dt> + <dd>A target object to wrap with <code>Proxy</code>. It can be any sort of object, including a native array, a function, or even another proxy.</dd> + <dt><code><var>handler</var></code></dt> + <dd>An object whose properties are functions that define the behavior of the proxy when an operation is performed on it.</dd> +</dl> + +<h2 id="Description">Description</h2> + +<p>Use the <code>Proxy()</code> constructor to create a new <code>Proxy</code> object. This constructor takes two mandatory arguments:</p> + +<ul> + <li><code>target</code> is the object for which you want to create the proxy</li> + <li><code>handler</code> is the object that defines the custom behavior of the proxy.</li> +</ul> + +<p>An empty handler will create a proxy that behaves, in almost all respects, exactly like the target. By defining any of a set group of functions on the <code>handler</code> object, you can customise specific aspects of the proxy's behavior. For example, by defining <code>get()</code> you can provide a customised version of the target's <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors">property accessor</a>.</p> + +<h3 id="Handler_functions">Handler functions</h3> + +<p>This section lists all the handler functions you can define. Handler functions are sometimes called <em>traps</em>, because they trap calls to the underlying target object.</p> + +<dl> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/apply", "handler.apply()")}}</dt> + <dd>A trap for a function call.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/construct", "handler.construct()")}}</dt> + <dd>A trap for the {{JSxRef("Operators/new", "new")}} operator.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/defineProperty", "handler.defineProperty()")}}</dt> + <dd>A trap for {{JSxRef("Object.defineProperty")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/deleteProperty", "handler.deleteProperty()")}}</dt> + <dd>A trap for the {{JSxRef("Operators/delete", "delete")}} operator.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/get", "handler.get()")}}</dt> + <dd>A trap for getting property values.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor", "handler.getOwnPropertyDescriptor()")}}</dt> + <dd>A trap for {{JSxRef("Object.getOwnPropertyDescriptor")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/getPrototypeOf", "handler.getPrototypeOf()")}}</dt> + <dd>A trap for {{JSxRef("Object.getPrototypeOf")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/has", "handler.has()")}}</dt> + <dd>A trap for the {{JSxRef("Operators/in", "in")}} operator.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/isExtensible", "handler.isExtensible()")}}</dt> + <dd>A trap for {{JSxRef("Object.isExtensible")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/ownKeys", "handler.ownKeys()")}}</dt> + <dd>A trap for {{JSxRef("Object.getOwnPropertyNames")}} and {{JSxRef("Object.getOwnPropertySymbols")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/preventExtensions", "handler.preventExtensions()")}}</dt> + <dd>A trap for {{JSxRef("Object.preventExtensions")}}.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/set", "handler.set()")}}</dt> + <dd>A trap for setting property values.</dd> + <dt>{{JSxRef("Global_Objects/Proxy/Proxy/setPrototypeOf", "handler.setPrototypeOf()")}}</dt> + <dd>A trap for {{JSxRef("Object.setPrototypeOf")}}.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<h3 id="Selectively_proxy_property_accessors">Selectively proxy property accessors</h3> + +<p>In this example the target has two properties, <code>notProxied</code> and <code>proxied</code>. We define a handler that returns a different value for <code>proxied</code>, and lets any other accesses through to the target.</p> + +<pre class="brush: js notranslate">const target = { + notProxied: "original value", + proxied: "original value" +}; + +const handler = { + get: function(target, prop, receiver) { + if (prop === "proxied") { + return "replaced value"; + } + return Reflect.get(...arguments); + } +}; + +const proxy = new Proxy(target, handler); + +console.log(proxy.notProxied); // "original value" +console.log(proxy.proxied); // "replaced value"</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy-constructor', 'Proxy constructor')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Proxy.Proxy")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Guide/Meta_programming"><code>Proxy</code> and <code>Reflect</code> in the JavaScript Guide</a></li> + <li>{{jsxref("Global_Objects/Reflect", "Reflect")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html b/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html new file mode 100644 index 0000000000..fbc4009f60 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/proxy/revocable/index.html @@ -0,0 +1,91 @@ +--- +title: Proxy.revocable() +slug: Web/JavaScript/Reference/Global_Objects/Proxy/revocable +tags: + - ECMAScript 2015 + - JavaScript + - Proxy + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/revocable +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Proxy.revocable()</strong></code> используется, чтобы создать отменяемый {{jsxref("Proxy")}} объект.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Proxy.revocable(target, handler); +</pre> + +<h3 id="Параметры">Параметры</h3> + +<div>{{ Page("/docs/Web/JavaScript/Reference/Global_Objects/Proxy", "Parameters") }}</div> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Создаётся и возвращается отменяемый <code>Proxy</code> объект.</p> + +<h2 id="Описание">Описание</h2> + +<p>Отменяемый <code>Proxy</code> - объект со следующими двумя свойствами <code>{proxy: proxy, revoke: revoke}</code>.</p> + +<dl> + <dt><code>proxy</code></dt> + <dd>Объект <code>Proxy</code>, созданный с помощью вызова <code>new Proxy(target, handler)</code>.</dd> + <dt><code>revoke</code></dt> + <dd>Функция, не принимающая аргументов, которая сделает недействительным (выключит) <code>proxy</code>.</dd> +</dl> + +<p>Если вызовется функция <code>revoke()</code>, <code>proxy</code> становится неиспользуемым: Любой <code>proxy</code>-перехватчик событий объекта будет вызывать исключение {{jsxref("TypeError")}}. Как только <code>proxy</code> отменена, она останется отменённой и дальше, и может быть собрана сборщиком мусора. Повторный вызов <code>revoke()</code> не будет иметь никакого эффекта.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var revocable = Proxy.revocable({}, { + get: function(target, name) { + return "[[" + name + "]]"; + } +}); +var proxy = revocable.proxy; +console.log(proxy.foo); // "[[foo]]" + +revocable.revoke(); + +console.log(proxy.foo); // Вызвано исключение TypeError +proxy.foo = 1 // TypeError снова +delete proxy.foo; // Всё ещё TypeError +typeof proxy // "object", typeof не вызывает никаких proxy-перехватчиков событий +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-proxy.revocable', 'Proxy Revocation Functions')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-proxy.revocable', 'Proxy Revocation Functions')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузерами">Совместимость браузерами</h2> + +<div class="hidden">Таблица совместимости с браузерами на этой странице сгенерирована из структурированных данных. Если вы хотите внести свой вклад, добавить данные, пожалуйста посетите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам pull request.</div> + +<p>{{Compat("javascript.builtins.Proxy.revocable")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Proxy")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/rangeerror/index.html b/files/ru/web/javascript/reference/global_objects/rangeerror/index.html new file mode 100644 index 0000000000..c81cd31cdc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/rangeerror/index.html @@ -0,0 +1,151 @@ +--- +title: RangeError +slug: Web/JavaScript/Reference/Global_Objects/RangeError +tags: + - Error + - JavaScript + - Object + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Объект <code><strong>RangeError</strong></code> представляет ошибку, возникающую, когда значение не входит в множество или выходит за диапазон допустимых значений.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>new RangeError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Исключение <code>RangeError</code> выбрасывается при попытке передать аргументом в функцию число, которое не входит в допустимый диапазон значений аргумента этой функции. Оно может возникать при создании массива с неправильной длиной через конструктор {{jsxref("Array")}}, или при передаче плохих значений в методы числа {{jsxref("Number.toExponential()")}}, {{jsxref("Number.toFixed()")}} или {{jsxref("Number.toPrecision()")}}.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt>{{jsxref("RangeError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>RangeError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Глобальный объект <code>RangeError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="RangeError_instances" name="RangeError_instances">Экземпляры объекта <code>RangeError</code></h2> + +<h3 id="Properties_of_RangeError_instances" name="Properties_of_RangeError_instances">Свойства</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_RangeError_instances" name="Methods_of_RangeError_instances">Методы</h3> +<div>{{page('/ru/Web/JavaScript/Reference/Global_Objects/RangeError/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_RangeError" name="Example:_Using_RangeError">Пример: использование <code>RangeError</code></h3> +<pre class="brush: js">var check = function(num) { + if (num < MIN || num > MAX) { + throw new RangeError('Параметр должен быть между ' + MIN + ' и ' + MAX); + } +}; + +try { + check(500); +} +catch (e) { + if (e instanceof RangeError) { + // Обработка ошибки диапазона + } +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.2', 'RangeError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-rangeerror', 'RangeError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("RangeError.prototype")}}</li> + <li>{{jsxref("Array")}}</li> + <li>{{jsxref("Number.toExponential()")}}</li> + <li>{{jsxref("Number.toFixed()")}}</li> + <li>{{jsxref("Number.toPrecision()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html new file mode 100644 index 0000000000..e537146615 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/rangeerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: RangeError.prototype +slug: Web/JavaScript/Reference/Global_Objects/RangeError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - RangeError +translation_of: Web/JavaScript/Reference/Global_Objects/RangeError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>RangeError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("RangeError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("RangeError")}} наследуются от объекта <code>RangeError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>RangeError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "RangeError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("RangeError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "RangeError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "RangeError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "RangeError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "RangeError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "RangeError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("RangeError")}} не содержит собственных методов, экземпляры {{jsxref("RangeError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/referenceerror/index.html b/files/ru/web/javascript/reference/global_objects/referenceerror/index.html new file mode 100644 index 0000000000..b7e2dbf000 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/referenceerror/index.html @@ -0,0 +1,131 @@ +--- +title: ReferenceError +slug: Web/JavaScript/Reference/Global_Objects/ReferenceError +tags: + - Error + - JavaScript + - Object + - Reference + - ReferenceError +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +<div>{{JSRef}}</div> + +<p>Объект <code><strong>ReferenceError</strong></code> представляет ошибку, возникающую при обращении к несуществующей переменной.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code>new ReferenceError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Исключение <code>ReferenceError</code> выбрасывается при попытке обратиться к переменной, которая не была объявлена.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt>{{jsxref("ReferenceError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>ReferenceError</code>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<p>Глобальный объект <code>ReferenceError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="Экземпляры_объекта_ReferenceError">Экземпляры объекта <code>ReferenceError</code></h2> + +<h3 id="Свойства_2">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Properties')}}</div> + +<h3 id="Методы_2">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype', 'Methods')}}</div> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Перехват_ReferenceError">Перехват <code>ReferenceError</code></h3> + +<pre class="brush: js">try { + var a = undefinedVariable; +} catch (e) { + console.log(e instanceof ReferenceError); // true + console.log(e.message); // "undefinedVariable is not defined" + console.log(e.name); // "ReferenceError" + console.log(e.fileName); // "Scratchpad/1" + console.log(e.lineNumber); // 2 + console.log(e.columnNumber); // 6 + console.log(e.stack); // "@Scratchpad/2:2:7\n" +} +</pre> + +<h3 id="Выбрасывание_ReferenceError">Выбрасывание <code>ReferenceError</code></h3> + +<pre class="brush: js">try { + throw new ReferenceError('Привет', 'someFile.js', 10); +} catch (e) { + console.log(e instanceof ReferenceError); // true + console.log(e.message); // "Привет" + console.log(e.name); // "ReferenceError" + console.log(e.fileName); // "someFile.js" + console.log(e.lineNumber); // 10 + console.log(e.columnNumber); // 0 + console.log(e.stack); // "@Scratchpad/2:2:9\n" +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES3')}}</td> + <td>{{Spec2('ES3')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.3', 'ReferenceError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-referenceerror', 'ReferenceError')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<p>{{Compat("javascript.builtins.ReferenceError")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("ReferenceError.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html new file mode 100644 index 0000000000..0c237f9c3c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/referenceerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: ReferenceError.prototype +slug: Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - ReferenceError +translation_of: Web/JavaScript/Reference/Global_Objects/ReferenceError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>ReferenceError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("ReferenceError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("ReferenceError")}} наследуются от объекта <code>ReferenceError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>ReferenceError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "ReferenceError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("ReferenceError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "ReferenceError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "ReferenceError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "ReferenceError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "ReferenceError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "ReferenceError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("ReferenceError")}} не содержит собственных методов, экземпляры {{jsxref("ReferenceError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html b/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html new file mode 100644 index 0000000000..927f5b52b8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/apply/index.html @@ -0,0 +1,101 @@ +--- +title: Reflect.apply() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/apply +tags: + - ECMAScript 2015 + - JavaScript + - Reflect + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/apply +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Reflect</strong></code><strong><code>.apply()</code></strong> вызывает переданную ему функцию с указанными аргументами.</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-apply.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера находится в репозаитории GitHub. Если вы хотите внести свой вклад в интерактивные примеры, пожалуйста, клонируйте репозитроий <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправляйте нам pull request.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.apply(target, thisArgument, argumentsList) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>target</dt> + <dd>Функция, которую необходимо вызвать.</dd> + <dt>thisArgument</dt> + <dd>Значение переменной <code>this</code> во время вызова функции <em><code>target</code></em>.</dd> + <dt>argumentsList</dt> + <dd>Объект, подобный массиву, содержащий аргументы, с которыми должна быть вызвана функция <em><code>target</code></em>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращается значение, которое вернёт функция <em><code>target</code></em> с указанным значением переменной <code><strong>this</strong></code> и аргументами.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>{{jsxref("TypeError")}}, если функция <code><em>target</em></code> не может быть вызвана.</p> + +<h2 id="Описание">Описание</h2> + +<p>В ES5, обычно используется метод {{jsxref("Function.prototype.apply()")}}, чтобы вызвать функцию с указанным значением переменной <code>this</code> и <code>arguments</code>, переданными как массив (или <a href="/ru/docs/Web/JavaScript/Guide/Indexed_collections#Working_with_array-like_objects">массивоподобный объект</a>).</p> + +<pre class="brush: js">Function.prototype.apply.call(Math.floor, undefined, [1.75]);</pre> + +<p>С использованием <code>Reflect.apply</code> это действие становится более понятным и занимает меньше места в коде.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_Reflect.apply()">Использование <code>Reflect.apply()</code></h3> + +<pre class="brush: js">Reflect.apply(Math.floor, undefined, [1.75]); +// 1; + +Reflect.apply(String.fromCharCode, undefined, [104, 101, 108, 108, 111]); +// "hello" + +Reflect.apply(RegExp.prototype.exec, /вы/, ['<span class="_Tgc _s8w">превысокомногорассмотрительствующий</span>']).index; +// 4 + +Reflect.apply(''.charAt, 'пони', [3]); +// "и" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.apply', 'Reflect.apply')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.apply', 'Reflect.apply')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div class="hidden">Таблица поддержки браузерами на этой странице сгенерирована из структурированных данных. Если вы хотите внести свой вклад и добавить данные, пожалуйста, посетите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам pull request.</div> + +<p>{{Compat("javascript.builtins.Reflect.apply")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li>{{jsxref("Function.prototype.apply()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html new file mode 100644 index 0000000000..e5eaa5af39 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/construct/index.html @@ -0,0 +1,151 @@ +--- +title: Reflect.construct() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/construct +tags: + - ECMAScript6 + - Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/construct +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Reflect</strong></code><strong><code>.construct()</code></strong> работает как <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> operator</a>. Он эквивалентен <code>new target(...args)</code>. Это также дает дополнительную возможность указать другой прототип.</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-construct.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.construct(target, argumentsList[, newTarget]) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Целевая функция для вызова.</dd> + <dt><code>argumentsList</code></dt> + <dd>Массивоподобный объект указывающий аргументы, с которыми <code>target</code> должна вызываться.</dd> + <dt><code>newTarget</code> {{optional_inline}}</dt> + <dd>Конструктор, чей прототип должен быть использован. Смотрите также <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new.target"><code>new.target</code></a> оператор. Если <code>newTarget</code> не указан, то используется <code>target</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый экземпляр <code>target</code> (или <code>newTarget</code>, если указан), инициализируется <code>target</code> как конструктор с заданными аргументами.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>Исключение {{jsxref("TypeError")}}, если <code>target</code> или <code>newTarget</code> не являются конструкторами.</p> + +<h2 id="Описание">Описание</h2> + +<p><code>Reflect.construct()</code> позволяет вам вызывать конструктор с любым числом аргументов (что также возможно с использованием <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax">spread syntax</a> вместе с <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code> operator</a>).</p> + +<pre class="brush: js">var obj = new Foo(...args); +var obj = Reflect.construct(Foo, args); +</pre> + +<h3 id="Reflect.construct()_против_Object.create()"><code>Reflect.construct()</code> против <code>Object.create()</code></h3> + +<p>До появления <code>Reflect</code>, объекты могли быть созданы с использованием произвольной комбинации из конструктора и прототипа при помощи {{jsxref("Object.create()")}}.</p> + +<pre class="brush: js">function OneClass() { + this.name = 'one'; +} + +function OtherClass() { + this.name = 'other'; +} + +// Данный вызов: +var obj1 = Reflect.construct(OneClass, args, OtherClass); + +// ...будет аналогичен данному: +var obj2 = Object.create(OtherClass.prototype); +OneClass.apply(obj2, args); + +console.log(obj1.name); // 'one' +console.log(obj2.name); // 'one' + +console.log(obj1 instanceof OneClass); // false +console.log(obj2 instanceof OneClass); // false + +console.log(obj1 instanceof OtherClass); // true +console.log(obj2 instanceof OtherClass); // true +</pre> + +<p>В любом случае, пока конечный результат один и тот же, существует одно важное отличие в этом процессе. При использовании <code>Object.create()</code> и {{jsxref("Function.prototype.apply()")}}, оператор <code>new.target</code> будет указывать на <code>undefined</code> внутри функции используемой в качестве конструктора, пока ключевое слово <code>new</code> не будет использовано для создания объекта.</p> + +<p>С другой стороны, в случае вызова <code>Reflect.construct()</code>, оператор <code>new.target</code> будет указывать на параметр <code>newTarget</code> если он задан, или <code>target</code> в отличном случае.</p> + +<pre class="brush: js">function OneClass() { + console.log('OneClass'); + console.log(new.target); +} +function OtherClass() { + console.log('OtherClass'); + console.log(new.target); +} + +var obj1 = Reflect.construct(OneClass, args); +// Вывод: +// OneClass +// function OneClass { ... } + +var obj2 = Reflect.construct(OneClass, args, OtherClass); +// Вывод: +// OneClass +// function OtherClass { ... } + +var obj3 = Object.create(OtherClass.prototype); +OneClass.apply(obj3, args); +// Вывод: +// OneClass +// undefined +</pre> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использования_Reflect.construct()">Использования <code>Reflect.construct()</code></h3> + +<pre class="brush: js">var d = Reflect.construct(Date, [1776, 6, 4]); +d instanceof Date; // true +d.getFullYear(); // 1776 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.construct', 'Reflect.construct')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.construct', 'Reflect.construct')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Reflect.construct")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a></li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/new.target"><code>new.target</code></a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html b/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html new file mode 100644 index 0000000000..b4d2cba107 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/defineproperty/index.html @@ -0,0 +1,98 @@ +--- +title: Reflect.defineProperty() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +tags: + - ECMAScript 2015 + - Method + - Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/defineProperty +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Reflect</strong></code><strong><code>.defineProperty()</code></strong> похож на {{jsxref("Object.defineProperty()")}}, но возвращает {{jsxref("Boolean")}}.</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-defineproperty.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.defineProperty(<em>target</em>, <em>propertyKey</em>, <em>attributes</em>) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Объект, в котором определяется свойство.</dd> + <dt><code>propertyKey</code></dt> + <dd>Имя определяемого или изменяемого свойства.</dd> + <dt><code>attributes</code></dt> + <dd>Атрибуты для определяемого или изменяемого свойства.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращается значение {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>Исключение {{jsxref("TypeError")}}, если <code>target</code> не является {{jsxref("Object")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>Reflect.defineProperty</code> позволяет точно дополнить или изменить свойство объекта. Для более подробной информации смотрите на аналогичный метод - {{jsxref("Object.defineProperty")}}. <code>Object.defineProperty</code> возвращает объект или выбрасывает исключение {{jsxref("TypeError")}}, если свойство не было успешно определено. <code>Reflect.defineProperty</code>, в любом случае, просто возвращает {{jsxref("Boolean")}}, указывающее было ли свойство успешно определено.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использования_Reflect.defineProperty()">Использования <code>Reflect.defineProperty()</code></h3> + +<pre class="brush: js">var obj = {}; +Reflect.defineProperty(obj, 'x', {value: 7}); // true +obj.x; // 7 +</pre> + +<h3 id="Проверка_успешно_ли_было_определено_свойство">Проверка успешно ли было определено свойство</h3> + +<p>При использовании {{jsxref("Object.defineProperty")}}, который возвращал объект в случае успеха, либо выбрасывал исключение {{jsxref("TypeError")}}, вы должны были использовать конструкцию <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch">try...catch</a></code> для того, чтобы поймать ошибку, которая случилась при определении свойства. Потому что <code>Reflect.defineProperty</code> возвращает {{jsxref("Boolean")}} в любом случае, вы можете использовать конструкцию <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/if...else">if...else</a></code>:</p> + +<pre class="brush: js">if (Reflect.defineProperty(target, property, attributes)) { + // успех +} else { + // неудача +}</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.defineproperty', 'Reflect.defineProperty')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Reflect.defineProperty")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li>{{jsxref("Object.defineProperty()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html b/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html new file mode 100644 index 0000000000..64ba452ae5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/deleteproperty/index.html @@ -0,0 +1,92 @@ +--- +title: Reflect.deleteProperty() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/deleteProperty +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Reflect</strong></code><strong><code>.deleteProperty()</code></strong> позволяет удалять свойства из объекта. Реализация данной функции схожа с оператором <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a>.</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-deleteproperty.html", "taller")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.deleteProperty(<em>target</em>, <em>propertyKey</em>) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Целевой объект в котором будет удалено свойство.</dd> + <dt><code>propertyKey</code></dt> + <dd>Имя удаляемого свойства.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Boolean")}} указывающий, было ли свойство успешно удалено.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>Исключение {{jsxref("TypeError")}}, если <code>target</code> не является {{jsxref("Object")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>Reflect.deleteProperty</code> позволяет вам удалить свойство объекта. Он возвращает {{jsxref("Boolean")}} указывающий, было ли свойство успешно удалено. Он так же идентичен оператору <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete">delete</a></code> без использования строгого режима.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использования_Reflect.deleteProperty()">Использования <code>Reflect.deleteProperty()</code></h3> + +<pre class="brush: js">var obj = { x: 1, y: 2 }; +Reflect.deleteProperty(obj, 'x'); // true +obj; // { y: 2 } + +var arr = [1, 2, 3, 4, 5]; +Reflect.deleteProperty(arr, '3'); // true +arr; // [1, 2, 3, , 5] + +// Возвращает true даже если такого свойства не существует +Reflect.deleteProperty({}, 'foo'); // true + +// Возвращает false если такое свойство ненастраивоемое +Reflect.deleteProperty(Object.freeze({foo: 1}), 'foo'); // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.deleteproperty', 'Reflect.deleteProperty')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Начальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.deleteproperty', 'Reflect.deleteProperty')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Reflect.deleteProperty")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code> operator</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/get/index.html b/files/ru/web/javascript/reference/global_objects/reflect/get/index.html new file mode 100644 index 0000000000..96d70ed7e7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/get/index.html @@ -0,0 +1,99 @@ +--- +title: Reflect.get() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/get +tags: + - ECMAScript 2015 + - JavaScript + - Reflect + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/get +--- +<div>{{JSRef}}</div> + +<p>Статический метод <strong><code>Reflect.get()</code></strong> работает также, словно если бы мы получали свойство объекта (<code>target[propertyKey]</code>) с помощью функции.</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-get.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера находится в репозитории GitHub. Если вы хотите внести вклад в развитие интерактивных примеров, склонируйте репозиторий <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам pull request.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.get(target, propertyKey[, receiver]) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Объект, к свойству которого идёт обращение.</dd> + <dt><code>propertyKey</code></dt> + <dd>Название свойства, значение которого необходимо получить.</dd> + <dt>receiver {{optional_inline}}</dt> + <dd>Значение, которое получит переменная <code>this</code> при вызове геттера.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Значение свойства <code>propertyKey</code>.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>{{jsxref("TypeError")}}, если <code>target</code> не {{jsxref("Object")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>Reflect.get</code> позволяет получить значение свойства некоторого объекта. Он похож на обычный доступ к значению свойства объекта <a href="/ru/docs/Web/JavaScript/Reference/Operators/Property_Accessors">значению свойства объекта</a>, только с синтаксисом функции.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_Reflect.get()">Использование <code>Reflect.get()</code></h3> + +<pre class="brush: js">// Объект +var obj = { x: 1, y: 2 }; +Reflect.get(obj, 'x'); // 1 + +// Мессив +Reflect.get(['ноль', 'один'], 1); // "один" + +// Proxy, перехватывающий get +var x = {p: 1}; +var obj = new Proxy(x, { + get(t, k, r) { return k + 'bar'; } +}); +Reflect.get(obj, 'foo'); // "foobar" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.get', 'Reflect.get')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.get', 'Reflect.get')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<div class="hidden">Таблица поддержки браузерами на этой странице сгенерирована из структурированных данных. Если вы хотите внести свой вклад и добавить свои данные, пожалуйста, посетите <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам pull request.</div> + +<p>{{Compat("javascript.builtins.Reflect.get")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Reference/Operators/Property_Accessors">Property accessors</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/index.html b/files/ru/web/javascript/reference/global_objects/reflect/index.html new file mode 100644 index 0000000000..0eb627a905 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/index.html @@ -0,0 +1,153 @@ +--- +title: Reflect +slug: Web/JavaScript/Reference/Global_Objects/Reflect +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect +--- +<div>{{JSRef}}</div> + +<p><strong>Reflect</strong> - это встроенный объект, который предоставляет методы для перехватывания JavaScript операций. Эти методы аналогичны методам <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">proxy handler</a>`ов. <code>Reflect</code> - это не функциональный, а простой объект, он не является сконструированным.</p> + +<h2 id="Описание">Описание</h2> + +<p>В отличие от большинства глобальных объектов, <code>Reflect</code> - это не конструктор. Вы не можете использовать его с <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>оператором new</code></a> или вызывать <code>Reflect,</code> как функцию. Все свойства и методы объекта <code>Reflect</code> являются статическими (так же, как и у объекта {{jsxref("Math")}}).</p> + +<h2 id="Методы">Методы</h2> + +<p>Объект <code>Reflect</code> обеспечивает работу статических функций, называющиеся так же, как <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler">методы proxy handler</a>`а. Некоторые из этих методов - те же, что и соответствующие им методы класса {{jsxref("Object")}}.</p> + +<dl> + <dt>{{jsxref("Reflect.apply()")}}</dt> + <dd>Вызывает целевую функцию с аргументами, переданными в параметре <code>args</code>. Смотрите также {{jsxref("Function.prototype.apply()")}}.</dd> + <dt>{{jsxref("Reflect.construct()")}}</dt> + <dd> Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> как функция. Аналогично <code>new target(...args)</code>. Также предоставляет возможность определить другой прототип.</dd> + <dt>{{jsxref("Reflect.defineProperty()")}}</dt> + <dd>Похож на {{jsxref("Object.defineProperty()")}}. Возвращает {{jsxref("Boolean")}}.</dd> + <dt>{{jsxref("Reflect.deleteProperty()")}}</dt> + <dd>Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a> как функция. Аналогично <code>delete target[name]</code>.</dd> + <dt>{{jsxref("Reflect.enumerate()")}}</dt> + <dd>Похож на цикл <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in"><code>for...in</code></a>. Возвращает итератор с собственными перечисляемыми и наследуемыми свойствами целевого объекта.</dd> + <dt>{{jsxref("Reflect.get()")}}</dt> + <dd>Функция, которая возвращает значение свойств.</dd> + <dt>{{jsxref("Reflect.getOwnPropertyDescriptor()")}}</dt> + <dd>Аналогично {{jsxref("Object.getOwnPropertyDescriptor()")}}. Возвращает дескриптор указанного свойства если присутствует в объекте, иначе {{jsxref("undefined")}}.</dd> + <dt>{{jsxref("Reflect.getPrototypeOf()")}}</dt> + <dd>Аналогично {{jsxref("Object.getPrototypeOf()")}}.</dd> + <dt>{{jsxref("Reflect.has()")}}</dt> + <dd>Оператор <a href="/en-US/docs/Web/JavaScript/Reference/Operators/in"><code>in</code> </a>как функция. Возвращает значение {{jsxref("Boolean")}} в зависимости от факта наличия собственного или наследованного свойства.</dd> + <dt>{{jsxref("Reflect.isExtensible()")}}</dt> + <dd>Аналогично {{jsxref("Object.isExtensible()")}}.</dd> + <dt>{{jsxref("Reflect.ownKeys()")}}</dt> + <dd>Возвращает массив строк с именами собственных (не наследованных) свойств.</dd> + <dt>{{jsxref("Reflect.preventExtensions()")}}</dt> + <dd>Аналогично {{jsxref("Object.preventExtensions()")}}. Возвращает {{jsxref("Boolean")}}.</dd> + <dt>{{jsxref("Reflect.set()")}}</dt> + <dd>Функция, присваивающая значения свойствам. Возвращает {{jsxref("Boolean")}} значение <code>true</code> при успешном выполнении.</dd> + <dt>{{jsxref("Reflect.setPrototypeOf()")}}</dt> + <dd>Функция, присваивающая прототип целевому объекту.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Проверка_наличия_конкретных_свойств_у_объекта">Проверка наличия конкретных свойств у объекта</h3> + +<pre class="brush: js notranslate">const duck = { + name: 'Maurice', + color: 'white', + greeting: function() { + console.log(`Quaaaack! My name is ${this.name}`); + } +} + +Reflect.has(duck, 'color'); +// true +Reflect.has(duck, 'haircut'); +// false</pre> + +<h3 id="Возврат_собственных_ключей_объекта">Возврат собственных ключей объекта</h3> + +<pre class="brush: js notranslate">Reflect.ownKeys(duck); +// [ "name", "color", "greeting" ]</pre> + +<h3 id="Добавление_нового_свойства_в_объект">Добавление нового свойства в объект</h3> + +<pre class="brush: js notranslate">Reflect.set(duck, 'eyes', 'black'); +// вернется "true" если вызов успешен +// объект "duck" теперь содержит свойство 'eyes' со знчением 'black'</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-reflect-object', 'Reflect')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("44")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("42")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("42")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>Глобальный объект {{jsxref("Proxy")}}.</li> + <li>Объект {{jsxref("Proxy.handler", "handler")}}.</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html new file mode 100644 index 0000000000..a218116d09 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/reflect/ownkeys/index.html @@ -0,0 +1,89 @@ +--- +title: Reflect.ownKeys() +slug: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys +translation_of: Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys +--- +<div>{{JSRef}}</div> + +<p>Статический метод <code><strong>Reflect</strong></code><strong><code>.ownKeys()</code></strong> возвращает массив имен, а также <code>Symbols</code> собственных полей объекта <code>target</code> .</p> + +<div>{{EmbedInteractiveExample("pages/js/reflect-ownkeys.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера хранится в GitHub репозитории. Если вы хотите сделать вклад в развитии интерактивных примеров, пожалуйста клонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отправьте нам pull request.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Reflect.ownKeys(target) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>target</code></dt> + <dd>Объект <code>target</code>, из которого получаем собственные ключи.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Массив {{jsxref("Array")}} собственных полей объекта <code>target</code>.</p> + +<h3 id="Исключения">Исключения</h3> + +<p>Выбрасывает ислючение {{jsxref("TypeError")}}, если <code>target</code> не является {{jsxref("Object")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>Reflect.ownKeys</code> возвращает массив собственных ключей объекта <code>target</code>. Эквивалентом этого метода является <code>{{jsxref("Object.getOwnPropertyNames")}}(target).concat({{jsxref("Object.getOwnPropertySymbols")}}(target))</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_Reflect.ownKeys()">Использование <code>Reflect.ownKeys()</code></h3> + +<pre class="brush: js">Reflect.ownKeys({z: 3, y: 2, x: 1}); // [ "z", "y", "x" ] +Reflect.ownKeys([]); // ["length"] + +var sym = Symbol.for('comet'); +var sym2 = Symbol.for('meteor'); +var obj = {[sym]: 0, 'str': 0, '773': 0, '0': 0, + [sym2]: 0, '-1': 0, '8': 0, 'second str': 0}; +Reflect.ownKeys(obj); +// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ] +// Индексы в порядке их перечисления, +// Строки в порядке их ввода, +// Symbols в порядке их ввода +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-reflect.ownkeys', 'Reflect.ownKeys')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Начальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-reflect.ownkeys', 'Reflect.ownKeys')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Reflect.ownKeys")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Reflect")}}</li> + <li>{{jsxref("Object.getOwnPropertyNames()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html b/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html new file mode 100644 index 0000000000..ee37017a2a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/@@search/index.html @@ -0,0 +1,116 @@ +--- +title: 'RegExp.prototype[@@search]()' +slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@search +tags: + - JavaScript + - Prototype + - Reference + - RegExp + - метод + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@search +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>[@@search]()</code></strong> выполняет поиск совпадения между регулярным выражением <code>this</code> и строкой.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>regexp</var>[Symbol.search](str)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>{{jsxref("String")}}, являющийся объектом поиска.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<dl> + <dt>integer</dt> + <dd>В случае успеха, <code>[@@search]()</code> вернёт индекс первого совпадения регулярного выражения внутри строки. В противном случае, он вернёт -1.</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Этот метод вызывается внутрнее в {{jsxref("String.prototype.search()")}}. Например, два следующих примера вернут один и тот же результат.</p> + +<pre class="brush: js">'abc'.search(/a/); + +/a/[Symbol.search]('abc');</pre> + +<p>Этот метод существует для настройки поведения поиска в подклассах <code>RegExp</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Прямой_вызов">Прямой вызов</h3> + +<p>Этот метод можно использовать почти так же, как {{jsxref("String.prototype.search()")}}, за исключением другого <code>this</code> и другого порядка аргументов.</p> + +<pre class="brush: js">var re = /-/g; +var str = '2016-01-02'; +var result = re[Symbol.search](str); +console.log(result); // 4 +</pre> + +<h3 id="Используя_search_в_подклассах">Используя <code>@@search</code> в подклассах</h3> + +<p>Подкласс {{jsxref("RegExp")}} может быть перезаписан с помощью метода <code>[@@search]()</code> для изменения поведения.</p> + +<pre class="brush: js">class MyRegExp extends RegExp { + constructor(str) { + super(str) + this.pattern = str; + } + [Symbol.search](str) { + return str.indexOf(this.pattern); + } +} + +var re = new MyRegExp('a+b'); +var str = 'ab a+b'; +var result = str.search(re); // String.prototype.search calls re[@@search]. +console.log(result); // 3 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@search', 'RegExp.prototype[@@search]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создаётся из структурированных данных. Если Вы хотите дополнить эти данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.RegExp.@@search")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.search()")}}</li> + <li>{{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</li> + <li>{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</li> + <li>{{jsxref("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}}</li> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html new file mode 100644 index 0000000000..8a0e07c804 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/@@split/index.html @@ -0,0 +1,113 @@ +--- +title: 'RegExp.prototype[@@split]()' +slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@split +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@split +--- +<div>{{JSRef}}</div> + +<p><strong><code>[@@split]()</code></strong> метод делит объект {{jsxref("String")}} в массив сторок, путём разбиения строки на подстроки.</p> + +<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-@@split.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>regexp</var>[Symbol.split](str[, <var>limit</var>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Цель разбиения.</dd> + <dt><code>limit</code></dt> + <dd> + <p>Необязательное. Целое число ограничивающее кол-во рабиений. <code>[@@split]()</code> метод разбивает все совпадения <code>this</code> RegExp шаблона, до тех пор пока не достигнет числа <code>limit</code> или строка будет короче <code>this</code> шаблона.</p> + </dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("Array")}} содержит подстроки как элементы.</p> + +<h2 id="Описание">Описание</h2> + +<p>Этот метод вызывает {{jsxref("String.prototype.split()")}}, если аргумент <code>separator</code> объект {{jsxref("RegExp")}}. Для примера, два данных выражения возвращают одинаковый результат.</p> + +<pre class="brush: js">'a-b-c'.split(/-/); + +/-/[Symbol.split]('a-b-c');</pre> + +<p>Этот метод существует для кастомизации поведения (разбиения) подкласса <code>RegExp</code>.</p> + +<p>Если аргумент <code>str</code> <strong>не </strong>объект типа {{jsxref("RegExp")}}, метод {{jsxref("String.prototype.split()")}} не вызывается, так же не создается объект типа {{jsxref("RegExp")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Прямой_вызов">Прямой вызов</h3> + +<p>Этот метод может быть использован, так же как {{jsxref("String.prototype.split()")}}, кроме случаев когда <code>this</code> отличаются и аргументы идут в разном порядке.</p> + +<pre class="brush: js">var re = /-/g; +var str = '2016-01-02'; +var result = re[Symbol.split](str); +console.log(result); // ["2016", "01", "02"] +</pre> + +<h3 id="Использование_split_в_подклассах">Использование <code>@@split</code> в подклассах</h3> + +<p>Подклассы {{jsxref("RegExp")}} могут переопределить <code>[@@split]()</code> для изменения дефольтного поведения.</p> + +<pre class="brush: js">class MyRegExp extends RegExp { + [Symbol.split](str, limit) { + var result = RegExp.prototype[Symbol.split].call(this, str, limit); + return result.map(x => "(" + x + ")"); + } +} + +var re = new MyRegExp('-'); +var str = '2016-01-02'; +var result = str.split(re); // String.prototype.split calls re[@@split]. +console.log(result); // ["(2016)", "(01)", "(02)"] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<div> + + +<p>{{Compat("javascript.builtins.RegExp.@@split")}}</p> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}</li> + <li>{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}</li> + <li>{{jsxref("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}</li> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html b/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html new file mode 100644 index 0000000000..fdd7c92041 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/exec/index.html @@ -0,0 +1,228 @@ +--- +title: RegExp.prototype.exec() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/exec +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/exec +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>exec()</code></strong> выполняет поиск сопоставления регулярного выражения в указанной строке. Возвращает массив с результатами или {{jsxref("null")}}.</p> + +<p>Если целью выполнения является просто определить, проходит оно или нет, используйте метод {{jsxref("RegExp.prototype.test()")}}, либо метод строки {{jsxref("String.prototype.search()")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>regexObj</var>.exec(<var>str</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Строка, с которой производится сопоставление регулярного выражения.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Если сопоставление успешно выполнилось, метод <code>exec()</code> возвращает массив и обновляет свойства объекта регулярного выражения. Возвращаемый массив в первом элементе содержит сопоставленный текст, а в последующих элементах — текст, захваченный при сопоставлении круглыми скобками.</p> + +<p>Если сопоставление не удалось, метод <code>exec()</code> возвращает {{jsxref("null")}}.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Рассмотрим следующий пример:</p> + +<pre class="brush: js">// Сопоставляется с фразой «кайф, сплющь», за которой следует слово «вши», +// игнорируя любые символы между ними. Запоминает слова «сплющь» и «вши». +// Игнорирует регистр символов. +var re = /кайф,\s(сплющь).+?(вши)/ig; +var result = re.exec('Эх, чужд кайф, сплющь объём вши, грызя цент.'); +</pre> + +<p>Таблица ниже показывает результаты выполнения данного примера:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Объект</td> + <td class="header">Свойство/Индекс</td> + <td class="header">Описание</td> + <td class="header">Пример</td> + </tr> + <tr> + <td rowspan="4"><code>result</code></td> + <td><code>[0]</code></td> + <td>Все сопоставившиеся символы в строке.</td> + <td><code>кайф, сплющь объём вши</code></td> + </tr> + <tr> + <td><code>[1], ...[<em>n</em>]</code></td> + <td>Сопоставившиеся подстроки в круглых скобках, если они присутствуют. Количество возможных подстрок ничем не ограничено.</td> + <td><code>[1] = сплющь<br> + [2] = вши</code></td> + </tr> + <tr> + <td><code>index</code></td> + <td>Индекс сопоставления в строке, начинается с нуля.</td> + <td><code>9</code></td> + </tr> + <tr> + <td><code>input</code></td> + <td>Оригинальная строка.</td> + <td><code>Эх, чужд кайф, сплющь объём вши, грызя цент.</code></td> + </tr> + <tr> + <td rowspan="5"><code>re</code></td> + <td><code>lastIndex</code></td> + <td>Индекс, с которого начнётся следующая попытка сопоставления. Если отсутствует флаг <code>"g"</code>, остаётся равным нулю.</td> + <td><code>31</code></td> + </tr> + <tr> + <td><code>ignoreCase</code></td> + <td>Указывает, что в регулярном выражении используется флаг игнорирования регистра <code>"i"</code>.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>global</code></td> + <td>Указывает, что в регулярном выражении используется флаг глобального сопоставления <code>"g"</code>.</td> + <td><code>true</code></td> + </tr> + <tr> + <td><code>multiline</code></td> + <td>Указывает, что в регулярном выражении используется флаг сопоставления по нескольким строкам <code>"m"</code>.</td> + <td><code>false</code></td> + </tr> + <tr> + <td><code>source</code></td> + <td>Текст шаблона регулярного выражения.</td> + <td><code>кайф,\s(сплющь).+?(вши)</code></td> + </tr> + </tbody> +</table> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Finding_successive_matches" name="Example:_Finding_successive_matches">Пример: поиск последовательных сопоставлений</h3> + +<p>Если ваше регулярное выражение использует флаг <code>"g"</code>, вы можете использовать метод <code>exec()</code> несколько раз для нахождения последовательных сопоставлений в одной и той же строке. Если вы сделаете это, поиск начнётся по подстроке строки <code>str</code>, начало которой определяется свойством {{jsxref("RegExp.lastIndex", "lastIndex")}} регулярного выражения (метод {{jsxref("RegExp.prototype.test()", "test()")}} также увеличивает свойство {{jsxref("RegExp.lastIndex", "lastIndex")}}). Например, предположим, что у вас есть следующий скрипт:</p> + +<pre class="brush: js">var myRe = /аб*/g; +var str = 'аббвгдеабж'; +var myArray; +while ((myArray = myRe.exec(str)) !== null) { + var msg = 'Найдено ' + myArray[0] + '. '; + msg += 'Следующее сопоставление начнётся с позиции ' + myRe.lastIndex; + console.log(msg); +} +</pre> + +<p>Этот скрипт выведет следующий текст:</p> + +<pre class="brush: js">Найдено абб. Следующее сопоставление начнётся с позиции 3 +Найдено аб. Следующее сопоставление начнётся с позиции 9 +</pre> + +<p>Примечание: не помещайте литерал регулярного выражения (или конструктор {{jsxref("RegExp")}}) внутрь условия <code>while</code>; это приведёт к бесконечному циклу, поскольку свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} будет сбрасываться в ноль на каждой итерации цикла. Также убедитесь, что установлен флаг глобального сопоставления, в противном случае цикл будет бесконечным.</p> + +<h3 id="Example:_Using_exec_with_RegExp_literals" name="Example:_Using_exec_with_RegExp_literals">Пример: использование метода <code>exec()</code> вместе с литералами регулярного выражения</h3> + +<p>Вы можете использовать метод <code>exec()</code> без создания объекта {{jsxref("RegExp")}}:</p> + +<pre class="brush: js">var matches = /(привет \S+)/.exec('Это привет миру!'); +console.log(matches[1]); +</pre> + +<p>Скрипт выведет в журнал строку «привет миру!».</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.6.21', 'RegExp.exec')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype.exec', 'RegExp.exec')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Глава про <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions">регулярные выражения</a> в <a href="/ru/docs/Web/JavaScript/Guide">руководстве по JavaScript</a></li> + <li>{{jsxref("RegExp")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html b/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html new file mode 100644 index 0000000000..c69b279c3e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/flags/index.html @@ -0,0 +1,120 @@ +--- +title: RegExp.prototype.flags +slug: Web/JavaScript/Reference/Global_Objects/RegExp/flags +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/flags +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>flags</code></strong> возвращает строку, состоящую из флагов текущего регулярного выражения.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Флаги в свойстве <code>flags</code> упорядочены по алфавиту (слева направо, то есть <code>"gimuy"</code>).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_flags" name="Example:_Using_flags">Пример: использование свойства <code>flags</code></h3> + +<pre class="brush: js">/foo/ig.flags; // "gi" +/bar/myu.flags; // "muy" +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<pre class="brush: js">if (RegExp.prototype.flags === undefined) { + Object.defineProperty(RegExp.prototype, 'flags', { + configurable: true, + get: function() { + return this.toString().match(/[gimuy]*$/)[0]; + } + }); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.flags', 'RegExp.prototype.flags')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("37")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("37")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp.prototype.source")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/global/index.html b/files/ru/web/javascript/reference/global_objects/regexp/global/index.html new file mode 100644 index 0000000000..ea31bfb150 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/global/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.global +slug: Web/JavaScript/Reference/Global_Objects/RegExp/global +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/global +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>global</code></strong> указывает, использовался ли в определении регулярного выражения флаг <code>"g"</code>. Свойство <code>global</code> является свойством только для чтения и принадлежит экземпляру регулярного выражения.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение свойства <code>global</code> имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит <code>true</code>, если при определении регулярного выражения использовался флаг <code>"g"</code>; в противном случае оно содержит <code>false</code>. Флаг <code>"g"</code> указывает на то, что регулярное выражение должно проверять все возможные сопоставления в строке.</p> +<p>Вы не можете напрямую изменить это свойство.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_global" name="Example:_Using_global">Пример: использование свойства <code>global</code></h3> +<pre class="brush: js">var regex = new RegExp('foo', 'g'); + +console.log(regex.global); // true +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.<br> + JavaScript 1.5: свойство <code>global</code> является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.7.2', 'RegExp.prototype.global')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.global', 'RegExp.prototype.global')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Свойство <code>global</code> теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("RegExp.lastIndex")}}</li> + <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li> + <li>{{jsxref("RegExp.prototype.multiline")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> + <li>{{jsxref("RegExp.prototype.sticky")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html b/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html new file mode 100644 index 0000000000..f8888887b5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/ignorecase/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.ignoreCase +slug: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/ignoreCase +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>ignoreCase</code></strong> указывает, использовался ли в определении регулярного выражения флаг <code>"i"</code>. Свойство <code>ignoreCase</code> является свойством только для чтения и принадлежит экземпляру регулярного выражения.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение свойства <code>ignoreCase</code> имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит <code>true</code>, если при определении регулярного выражения использовался флаг <code>"i"</code>; в противном случае оно содержит <code>false</code>. Флаг <code>"i"</code> указывает на то, что регистр символов в строке, с которой сопоставляется регулярное выражение, должен игнорироваться.</p> +<p>Вы не можете напрямую изменить это свойство.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_ignoreCase" name="Example:_Using_ignoreCase">Пример: использование свойства <code>ignoreCase</code></h3> +<pre class="brush: js">var regex = new RegExp('foo', 'i'); + +console.log(regex.ignoreCase); // true +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.<br> + JavaScript 1.5: свойство <code>ignoreCase</code> является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.7.3', 'RegExp.prototype.ignoreCase')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.ignorecase', 'RegExp.prototype.ignoreCase')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Свойство <code>ignoreCase</code> теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("RegExp.lastIndex")}}</li> + <li>{{jsxref("RegExp.prototype.global")}}</li> + <li>{{jsxref("RegExp.prototype.multiline")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> + <li>{{jsxref("RegExp.prototype.sticky")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/index.html b/files/ru/web/javascript/reference/global_objects/regexp/index.html new file mode 100644 index 0000000000..9a864bee32 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/index.html @@ -0,0 +1,665 @@ +--- +title: RegExp +slug: Web/JavaScript/Reference/Global_Objects/RegExp +tags: + - Constructor + - JavaScript + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Конструктор <strong><code>RegExp</code></strong> создаёт объект регулярного выражения для сопоставления текста с шаблоном.</p> + +<p>Введение в то, что представляют собой регулярные выражения, читайте в <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions">главе «Регулярные выражения» в руководстве по JavaScript</a>.</p> + +<div>{{EmbedInteractiveExample("pages/js/regexp-constructor.html")}}</div> + +<p class="hidden">Исходный код этого интерактивного примера хранится в репозитории на GitHub. Если вы хотите участвовать в проекте интерактивных примеров, пожалуйста, склонируйте <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и пришлите нам запрос на принятие изменений.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<p>Возможны как литеральная запись, так и запись через конструктор:</p> + +<pre class="syntaxbox notranslate"><code>/<var>pattern</var>/<var>flags</var> +new RegExp(<var>pattern</var>, <var>flags</var>)</code> +</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>pattern</code></dt> + <dd>Текст регулярного выражения.</dd> + <dt><code>flags</code></dt> + <dd> + <p>Если определён, может принимать любую комбинацию нижеследующих значений:</p> + + <dl> + <dt><code>g</code></dt> + <dd>глобальное сопоставление</dd> + <dt><code>i</code></dt> + <dd>игнорирование регистра при сопоставлении</dd> + <dt><code>m</code></dt> + <dd>сопоставление по нескольким строкам; символы начала и конца (^ и $) начинают работать по нескольким строкам (то есть, происходит сопоставление с началом или концом <em>каждой</em> строки (строки разделяются символами \n или \r), а не только с началом или концом всей вводимой строки)</dd> + <dt><code>y</code> {{experimental_inline}}</dt> + <dd>«липкий» поиск; сопоставление в целевой строке начинается с индекса, на который указывает свойство <code>lastIndex</code> этого регулярного выражения (и не пытается сопоставиться с любого более позднего индекса).</dd> + </dl> + </dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Существует два способа создания объекта <code>RegExp</code>: литеральная запись и использование конструктора. При записи строк параметры в литеральной записи не используют символы кавычек, в то время как параметры функции-конструктора используют кавычки. Так что следующие выражения создают одинаковые регулярные выражения:</p> + +<pre class="brush: js notranslate">/ab+c/i; +new RegExp('ab+c', 'i'); +</pre> + +<p>Литеральная запись обеспечивает компиляцию регулярного выражения при вычислении выражения. Используйте литеральную запись если регулярное выражение будет неизменным. Например, если вы используете литеральную запись для конструирования регулярного выражения, используемого в цикле, регулярное выражение не будет перекомпилироваться на каждой итерации.</p> + +<p>Конструктор объекта регулярного выражения, например, <code>new RegExp('ab+c')</code>, обеспечивает компиляцию регулярного выражения во время выполнения. Используйте функцию-конструктор, если вы знаете, что шаблон регулярного выражения будет меняться или если вы не знаете шаблон и получаете его из внешних источников, например, из пользовательского ввода.</p> + +<p>При использовании функции-конструктора необходимо использовать обычные правила экранирования в строках (предварять специальные символы символом обратного слеша «\»). Например, следующие выражения эквивалентны:</p> + +<pre class="brush: js notranslate">var re = /\w+/; +var re = new RegExp('\\w+'); +</pre> + +<h2 id="Special_characters_meaning_in_regular_expressions" name="Special_characters_meaning_in_regular_expressions">Значение специальных символов в регулярных выражениях</h2> + +<ul> + <li><a href="#character-classes">Символьные классы</a></li> + <li><a href="#character-sets">Наборы символов</a></li> + <li><a href="#boundaries">Границы</a></li> + <li><a href="#grouping-back-references">Группировка и обратные ссылки</a></li> + <li><a href="#quantifiers">Квантификаторы</a></li> +</ul> + +<table class="fullwidth-table"> + <tbody> + <tr id="character-classes"> + <th colspan="2">Символьные классы</th> + </tr> + <tr> + <th>Символ</th> + <th>Значение</th> + </tr> + <tr> + <td><code>.</code></td> + <td> + <p>(Точка, десятичная запятая) сопоставляется с любым символом <em>за исключением</em> символов новой строки: <code>\n</code>, <code>\r</code>, <code>\u2028</code> или <code>\u2029</code>.</p> + + <p>Обратите внимание, что флаг многострочности <code>m</code> не изменяет поведение точки. Так что для сопоставления с шаблона с несколькими строками используйте набор символов <code>[^]</code> (конечно, если только вам не нужно поддерживать старые версии IE), он сопоставляется с любым символом, включая символы новой строки.</p> + + <p>Например, шаблон <code>/.н/</code> сопоставляется с подстрокой «ан», но не подстрокой «ну», во фразе «ну что, потанцуем».</p> + </td> + </tr> + <tr> + <td><code>\d</code></td> + <td> + <p>Сопоставляется с символом цифры в базовом латинском алфавите. Эквивалентен набору символов <code>[0-9]</code>.</p> + + <p>Например, шаблоны <code>/\d/</code> и <code>/[0-9]/</code> сопоставляются с подстрокой «2» в строке «B2 — это номер люкс».</p> + </td> + </tr> + <tr> + <td><code>\D</code></td> + <td> + <p>Сопоставляется с любым символом, который не является цифрой в базовом латинском алфавите. Эквивалентен набору символов <code>[^0-9]</code>.</p> + + <p>Например, шаблоны <code>/\D/</code> и <code>/[^0-9]/</code> сопоставляются с подстрокой «B» в строке «B2 — это номер люкс».</p> + </td> + </tr> + <tr> + <td><code>\w</code></td> + <td> + <p>Сопоставляется с любым алфавитно-цифровым символом из базового латинского алфавита, включая символ подчёркивания. Эквивалентен набору символов <code>[A-Za-z0-9_]</code>.</p> + + <p>Например, шаблон <code>/\w/</code> сопоставляется с подстрокой «a» в строке «apple», с подстрокой «5» в строке «$5.28» и с подстрокой «3» в строке «3D».</p> + </td> + </tr> + <tr> + <td><code>\W</code></td> + <td> + <p>Сопоставляется с любым символом из базового латинского алфавита, не являющимся символом, из которых состоят слова. Эквивалентен набору символов <code>[^A-Za-z0-9_]</code>.</p> + + <p>Например, шаблоны <code>/\W/</code> и <code>/[^A-Za-z0-9_]/</code> сопоставляются с подстрокой «%» в строке «50%».</p> + </td> + </tr> + <tr> + <td><code>\s</code></td> + <td> + <p>Сопоставляется с одиночным пробельным символом, который включает в себя пробел, табуляцию, подачу страницы, перевод строки и другие пробельные символы Юникода. Эквивалентен набору символов <code>[ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]</code>.</p> + + <p>Например, шаблон <code>/\s\w*/</code> сопоставляется с подстрокой « bar» в строке «foo bar».</p> + </td> + </tr> + <tr> + <td><code>\S</code></td> + <td> + <p>Сопоставляется с одиночным символом, не являющимся пробельным. Эквивалентен набору символов <code>[^ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]</code>.</p> + + <p>Например, шаблон <code>/\S\w*/</code> сопоставляется с подстрокой «foo» в строке «foo bar».</p> + </td> + </tr> + <tr> + <td><code>\t</code></td> + <td>Сопоставляется с символом табуляции.</td> + </tr> + <tr> + <td><code>\r</code></td> + <td>Сопоставляется с символом возврата каретки.</td> + </tr> + <tr> + <td><code>\n</code></td> + <td>Сопоставляется с символом перевода строки.</td> + </tr> + <tr> + <td><code>\v</code></td> + <td>Сопоставляется с символом вертикальной табуляции.</td> + </tr> + <tr> + <td><code>\f</code></td> + <td>Сопоставляется с символом подачи страницы.</td> + </tr> + <tr> + <td><code>[\b]</code></td> + <td>Сопоставляется с символом забоя (не перепутайте его с символьным классом <code>\b</code>).</td> + </tr> + <tr> + <td><code>\0</code></td> + <td>Сопоставляется с нулевым символом. Не ставьте за ним другую цифру.</td> + </tr> + <tr> + <td><code>\c<em>X</em></code></td> + <td> + <p>Где <code><em>X</em></code> является буквой от «A» до «Z». Сопоставляется с управляющим символом в строке.</p> + + <p>Например, шаблон <code>/\cM/</code> сопоставляется с символом control-M в строке.</p> + </td> + </tr> + <tr> + <td><code>\x<em>hh</em></code></td> + <td>Сопоставляется с символом с кодом <code><em>hh</em></code> (две шестнадцатеричные цифры).</td> + </tr> + <tr> + <td><code>\u<em>hhhh</em></code></td> + <td>Сопоставляется с символом со значением Юникода <code><em>hhhh</em></code> (четыре шестнадцатеричные цифры).</td> + </tr> + <tr> + <td><code>\</code></td> + <td> + <p>Для символов, которые обычно трактуются буквально, указывает, что следующий символ является специальным и не должен интерпретироваться буквально.</p> + + <p>Например, шаблон <code>/b/</code> сопоставляется с символом «b». Поместив перед ним символ обратного слеша, то есть превратив шаблон в <code>/\b/</code>, символ приобретёт специальное значение, обозначающее сопоставление с границей слова.</p> + + <p><em>или</em></p> + + <p>Для символов, которые обычно трактуются специальным образом, указывает, что следующий символ не является специальным и должен интерпретироваться буквально.</p> + + <p>Например, звёздочка «*» является специальным символом, обозначающим ноль или более вхождений предшествующего символа при сопоставлении; поэтому шаблон <code>/a*/</code> означает сопоставление с нулём или более символов «a». Для буквального сопоставления со звёздочкой <code>*</code> предварите её символом обратного слеша; например, шаблон <code>/a\*/</code> сопоставляется со строкой «a*».</p> + </td> + </tr> + </tbody> + <tbody> + <tr id="character-sets"> + <th colspan="2">Наборы символов</th> + </tr> + <tr> + <th>Символ</th> + <th>Значение</th> + </tr> + <tr> + <td><code>[xyz]</code></td> + <td> + <p>Набор символов. Сопоставляется с любым из заключённых в квадратные скобки символов. С помощью дефиса вы можете определить диапазон символов.</p> + + <p>Например, шаблон <code>[абвгд]</code> означает тоже самое, что и шаблон <code>[а-д]</code>. Они сопоставляются с символом «г» в слове «грудинка» и символом «б» в слове «отбивная».</p> + </td> + </tr> + <tr> + <td><code>[^xyz]</code></td> + <td> + <p>Отрицательный или дополнительный набор символов. То есть он сопоставляется со всеми символами, что не заключены в квадратные скобки. С помощью дефиса вы можете определить диапазон символов.</p> + + <p>Например, шаблон <code>[^абвгд]</code> означает тоже самое, что и шаблон <code>[^а-д]</code>. Они сопоставляются с символом «е» в слове «бекон» и символом «о» в слове «отбивная».</p> + </td> + </tr> + </tbody> + <tbody> + <tr id="boundaries"> + <th colspan="2">Границы</th> + </tr> + <tr> + <th>Символ</th> + <th>Значение</th> + </tr> + <tr> + <td><code>^</code></td> + <td> + <p>Сопоставляется c началом ввода. Если установлен флаг многострочности, также сопоставляется с позицией сразу за символом переноса строки.</p> + + <p>Например, шаблон <code>/^Б/</code> не сопоставляется с буквой «Б» в строке «буква Б», но сопоставляеся с первой буквой «Б» в строке «Буква Б».</p> + </td> + </tr> + <tr> + <td><code>$</code></td> + <td> + <p>Сопоставляется c концом ввода. Если установлен флаг многострочности, также сопоставляется с позицией сразу перед символом переноса строки.</p> + + <p>Например, шаблон <code>/т$/</code> не сопоставляется с буквой «т» в слове «кормить», но сопоставляеся с ней в слове «кормит».</p> + </td> + </tr> + <tr> + <td><code>\b</code></td> + <td> + <p>Сопоставляется с границей слова нулевой ширины, например с позицией между буквой и пробелом (не путайте его с набором символов <code>[\b]</code>).</p> + + <p>Например, шаблон <code>/\bпол/</code> сопоставляется с подстрокой «пол» в строке «в полдень»; шаблон <code>/но\b/</code> сопоставляется с подстрокой «но» в строке «возможно завтра».</p> + </td> + </tr> + <tr> + <td><code>\B</code></td> + <td> + <p>Сопоставляется с границей не-слов нулевой ширины, например с позицией между двумя буквами или двумя пробелами.</p> + + <p>Например, шаблон <code>/\Bдень/</code> сопоставляется с подстрокой «день» в строке «в полдень»; шаблон <code>/за\B/</code> сопоставляется с подстрокой «за» в строке «возможно завтра».</p> + </td> + </tr> + </tbody> + <tbody> + <tr id="grouping-back-references"> + <th colspan="2">Группировка и обратные ссылки</th> + </tr> + <tr> + <th>Символ</th> + <th>Значение</th> + </tr> + <tr> + <td><code>(<em>x</em>)</code></td> + <td> + <p>Сопоставляется с <code><em>x</em></code> и запоминает сопоставление. Называется «захватывающие скобки».</p> + + <p>Например, шаблон <code>/(foo)/</code> сопоставлется с подстрокой «foo» и запоминает её в строке «foo bar». Сопоставленую подстроку можно достать из элементов <code>[1], ..., [n]</code> результирующего массива или из предопределённых свойств <code>$1, ..., $9</code> объекта <code>RegExp</code>.</p> + + <p>Захват групп ведёт к проседанию производительности. Если вам не нужно повторно ссылаться на захваченную подстроку, лучше использовать скобки без захвата (смотрите ниже).</p> + </td> + </tr> + <tr> + <td><code>\<em>n</em></code></td> + <td> + <p>Где <code><em>n</em></code> является целым положительным числом. Обратная ссылка на последнюю сопоставившуюся подстроку в <em>n</em>-ных по счёту круглых скобках в регулярном выражении (нумерация скобок идет слева направо).</p> + + <p>Например, шаблон <code>/яблоко(,)\sапельсин\1/</code> сопоставится подстроке «яблоко, апельсин,» в строке «яблоко, апельсин, вишня, персик». Более подробный пример смотрите после этой таблицы.</p> + </td> + </tr> + <tr> + <td><code>(?:<em>x</em>)</code></td> + <td>Сопоставляется с <code><em>x</em></code>, но не запоминает сопоставление. Называется «незахватывающие скобки». Сопоставленную подстроку нельзя достать из элементов <code>[1], ..., [n]</code> результирующего массива или из предопределённых свойств <code>$1, ..., $9</code> объекта <code>RegExp</code>.</td> + </tr> + </tbody> + <tbody> + <tr id="quantifiers"> + <th colspan="2">Квантификаторы</th> + </tr> + <tr> + <th>Символ</th> + <th>Значение</th> + </tr> + <tr> + <td><code><em>x</em>*</code></td> + <td> + <p>Сопоставляется с предшествующим элементом <em>x</em> ноль или более раз.</p> + + <p>Например, шаблон <code>/ела*/</code> сопоставляется с подстрокой «ел» в строке «Призрак просвистел» и подстрокой «ела» в строке «Птица пропела», но ни с чем не сопоставится в строке «Козёл хмыкнул».</p> + </td> + </tr> + <tr> + <td><code><em>x</em>+</code></td> + <td> + <p>Сопоставляется с предшествующим элементом <em>x</em> один или более раз. Эквивалентен квантификатору <code>{1,}</code>.</p> + + <p>Например, шаблон <code>/о+/</code> сопоставляется с символом «о» в строке «конфета» и со всеми символами «о» в строке «коооооонфета».</p> + </td> + </tr> + <tr> + <td><code><em>x</em>*?</code><br> + <code><em>x</em>+?</code></td> + <td> + <p>Сопоставляется с предшествующим элементом <em>x</em> подобно квантификаторам <code>*</code> и <code>+</code>, описанным выше, однако ищет минимально возможное сопоставление.</p> + + <p>Например, шаблон <code>/".*?"/</code> сопоставляется с подстрокой «"foo"» в строке «"foo" "bar"» и не сопоставляется со строкой «"foo" "bar"», поскольку за звёздочкой <code>*</code> следует символ вопроса <code>?</code>.</p> + </td> + </tr> + <tr> + <td><code><em>x</em>?</code></td> + <td> + <p>Сопоставляется с предшествующим элементом <em>x</em> ноль или один раз.</p> + + <p>Например, шаблон <code>/о?то?/</code> сопоставляется с подстрокой «от» в строке «кот» и подстрокой «то» в строке «ток».</p> + + <p>Если символ используется сразу после какого-то из квантификаторов <code>*</code>, <code>+</code>, <code>?</code>, или <code>{}</code>, то он делает этот квантификатор «нежадным» (сопоставление происходит минимально возможное количество раз), в противоположность «жадному» поведению квантификатора по умолчанию (сопоставление происходит максимально возможное количество раз).</p> + + <p>Также символ используется в квантификаторах предпросмотра <code>(?=)</code>, <code>(?!)</code> и <code>(?:)</code>, также описанных в этой таблице.</p> + </td> + </tr> + <tr> + <td><code><em>x</em>(?=<em>y</em>)</code></td> + <td>Сопоставлется с <code><em>x</em></code>, только если за <code><em>x</em></code> следует <code><em>y</em></code>. Например, шаблон <code>/Джек(?=Шпрот)/</code> сопоставлется со строкой «Джек» только если за ней следует строка «Шпрот». Шаблон <code>/Джек(?=Шпрот|Мороз)/</code> сопоставлется со строкой «Джек» только если за ней следуют строки «Шпрот» или «Мороз». Однако, ни «Шпрот», ни «Мороз» не являются частью результата сопоставления.</td> + </tr> + <tr> + <td><code><em>x</em>(?!<em>y</em>)</code></td> + <td> + <p>Сопоставлется с <code><em>x</em></code>, только если за <code><em>x</em></code> не следует <code><em>y</em></code>. Например, шаблон <code>/\d+(?!\.)/</code> сопоставляется с числом только если за ним не следует десятичная запятая.</p> + + <p>Выражение <code>/\d+(?!\.)/.exec('3.141')</code> сопоставится с «141» но не с «3.141».</p> + </td> + </tr> + <tr> + <td><code>(?<=<em>y</em>)<em>x</em></code></td> + <td> + <p><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Сопоставляется с </span></font><em>x</em></code>, только если <code><em>x</em></code> предшествует <code><em>y</em></code></p> + + <p>Например, /<code>(?<=Пётр)Иванов/</code> сопоставится с "Иванов" только если ему будет предшествовать "Петр".<br> + <code>/(?<=Пётр|Владислав)Иванов/</code> сопоставится с "Иванов" только если ему будет предшествовать "Пётр" или "Владислав".<br> + В любом случае, ни "Пётр" ни "Владислав" не войдут в результат сопоставления.</p> + </td> + </tr> + <tr> + <td><code>(?<!<em>y</em>)<em>x</em></code></td> + <td> + <table> + <tbody> + <tr> + <td> + <p><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Сопоставляется с </span></font><em>x</em></code>, только если <code><em>x</em></code> не предшествует <code><em>y</em></code></p> + + <p>Например, <code>/(?<!-)\d+/</code> сопоставится с цифрой, только если ей не предшествует минус.<br> + <code>/(?<!-)\d+/.exec('3')</code> вернет "3".<br> + <code>/(?<!-)\d+/.exec('-3')</code> не сопоставится с цифрой, тк цифре перед цифрой 3 присутствует минус.</p> + </td> + </tr> + </tbody> + </table> + </td> + </tr> + <tr> + <td><code><em>x</em>|<em>y</em></code></td> + <td> + <p>Сопоставляется либо с <code><em>x</em></code>, либо с <code><em>y</em></code>.</p> + + <p>Например, шаблон <code>/зелёное|красное/</code> сопоставится с подстрокой «зелёное» в строке «зелёное яблоко» и подстрокой «красное» в строке «красное яблоко».</p> + </td> + </tr> + <tr> + <td><code><em>x</em>{<em>n</em>}</code></td> + <td> + <p>Где <code><em>n</em></code> является целым положительным числом. Сопоставляется точно с <code><em>n</em></code> вхождениями предшествующего элемента <em>x</em>.</p> + + <p>Например, шаблон <code>/о{2}/</code> не сопоставится с символом «о» в слове «конфета», но сопоставится со всеми символами «о» в слове «коонфета» и с первыми двумя символами «о» в слове «кооонфета».</p> + </td> + </tr> + <tr> + <td><code><em>x</em>{<em>n</em>,}</code></td> + <td> + <p>Где <code><em>n</em></code> является целым положительным числом. Сопоставляется по крайней мере с <code><em>n</em></code> вхождениями предшествующего элемента <em>x</em>.</p> + + <p>Например, шаблон <code>/о{2,}/</code> не сопоставится с символом «о» в слове «конфета», но сопоставится со всеми символами «о» в словах «коонфета» и даже в «кооооооонфета».</p> + </td> + </tr> + <tr> + <td><code><em>x</em>{<em>n</em>,<em>m</em>}</code></td> + <td> + <p>Где <code><em>n</em></code> и <code><em>m</em></code> являются целыми положительными числами. Сопоставляется по крайней мере с <code><em>n</em></code> но не более, чем с <code><em>m</em></code> вхождениями предшествующего элемента <em>x</em>.</p> + + <p>Например, шаблон <code>/о{1,3}/</code> ни с чем не сопоставится в слове «кнфета», с символом «о» в слове «конфета», с двумя символами «о» в слове «коонфета» и с первыми тремя символами «о» в слове «кооооооонфета». Обратите внимание, что при сопоставлении со словом «кооооооонфета» сопоставиласть только подстрока «ооо», хотя слово содержало гораздо больше символов «о».</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("RegExp.prototype")}}</dt> + <dd>Позволяет добавлять свойства ко всем объектам регулярных выражений.</dd> + <dt><code>RegExp.length</code></dt> + <dd>Значение <code>RegExp.length</code> равно 2.</dd> +</dl> + +<div>{{jsOverrides("Function", "Properties", "prototype")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> + +<p>Глобальный объект <code>RegExp</code> не имеет собственных методов, однако, он наследует некоторые методы через цепочку прототипов.</p> + +<div>{{jsOverrides("Function", "Methods", "prototype")}}</div> + +<h2 id="RegExp_prototype_objects_and_instances" name="RegExp_prototype_objects_and_instances">Экземпляры регулярного выражения</h2> + +<h3 id="Properties_of_RegExp_instance" name="Properties_of_RegExp_instance">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_RegExp_instance" name="Methods_of_RegExp_instance">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/RegExp/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_a_regular_expression_to_change_data_format" name="Example:_Using_a_regular_expression_to_change_data_format">Пример: использование регулярных выражений для смены формата данных</h3> + +<p>Следующий скрипт использует метод {{jsxref("String.prototype.replace()", "replace()")}} экземпляра строки {{jsxref("Global_Objects/String", "String")}} для сопоставления с именем в формате <em>имя фамилия</em> и выводит его в формате <em>фамилия, имя</em>. В тесте замены скрипт использует заменители <code>$1</code> и <code>$2</code>, которые заменяются на результаты соответствующих сопоставившихся подгрупп регулярного выражения.</p> + +<pre class="brush: js notranslate">var re = /(\w+)\s(\w+)/; +var str = 'John Smith'; +var newstr = str.replace(re, '$2, $1'); +console.log(newstr); + +// пример с русскими буквами +var re = /([а-яё]+)\s([а-яё]+)/i; +var str = 'Джон Смит'; +var newstr = str.replace(re, '$2, $1'); +console.log(newstr); +</pre> + +<p>Пример выведет «Smith, John» и «Смит, Джон»</p> + +<h3 id="Example_Using_regular_expression_to_split_lines" name="Example:_Using_regular_expression_to_split_lines">Пример: использование регулярного выражения для разбиения строк с различными символами конца строки</h3> + +<p>Символы конца строки различаются на различных платформах (Unix, Windows и так далее). Разбиение строк из этого примера работает на всех платформах.</p> + +<pre class="brush: js notranslate">var text = 'Некоторый текст\nЕщё текст\r\nИ ещё\rЭто конец'; +var lines = text.split(/\r\n|\r|\n/); +console.log(lines); // выведет [ 'Некоторый текст', 'Ещё текст', 'И ещё', 'Это конец' ] +</pre> + +<p>Обратите внимание, что порядок шаблонов в регулярном выражении имеет значение.</p> + +<h3 id="Example_Using_regular_expression_on_multiple_lines" name="Example:_Using_regular_expression_on_multiple_lines">Пример: использование регулярных выражений на нескольких строках</h3> + +<pre class="brush: js notranslate">var s = 'Please yes\nmake my day!'; +s.match(/yes.*day/); +// Вернёт null +s.match(/yes[^]*day/); +// Вернёт 'yes\nmake my day' +</pre> + +<h3 id="Example_Using_a_regular_expression_with_the_.22sticky.22_flag" name="Example:_Using_a_regular_expression_with_the_.22sticky.22_flag">Пример: использование регулярных выражений с флагом «липучести»</h3> + +<p>Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.</p> + +<pre class="brush: js notranslate">var text = 'Первая строка\nВторая строка'; +var regex = /(\S+) строка\n?/y; + +var match = regex.exec(text); +console.log(match[1]); // напечатает 'Первая' +console.log(regex.lastIndex); // напечатает '14' + +var match2 = regex.exec(text); +console.log(match2[1]); // напечатает 'Вторая' +console.log(regex.lastIndex); // напечатает '27' + +var match3 = regex.exec(text); +console.log(match3 === null); // напечатает 'true' +</pre> + +<p>Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока <code>try { … } catch { … }</code>. Для этого надо использовать либо выражение с <code>eval(…)</code>, либо конструктор <code>RegExp(<var>строка-регулярки</var>, <var>строка-с-флагами</var>)</code> (поскольку нотация <code>/<var>регулярка</var>/<var>флаги</var></code> обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока <code>catch</code>). Например:</p> + +<pre class="brush: js notranslate">var supports_sticky; +try { RegExp('', 'y'); supports_sticky = true; } +catch(e) { supports_sticky = false; } +console.log(supports_sticky); // напечатает 'true' +</pre> + +<h3 id="Example_Regular_expression_and_Unicode_characters" name="Example:_Regular_expression_and_Unicode_characters">Пример: регулярные выражения и символы Юникода</h3> + +<p>Как уже сказано выше, символьные классы <code>\w</code> и <code>\W</code> сопоставляются только с базовыми символами ASCII; то есть, с символами от «a» до «z», от «A» до «Z», от «0» до «9» и символом «_». Для сопоставления с символами из других языков, например, с кириллическими или иврита, используйте форму <code>\uhhhh</code>, где «hhhh» — это значение символа Юникода, записанное в шестнадцатеричной форме. Этот пример демонстрирует, как можно выделить символы Юникода, составляющие слова.</p> + +<pre class="brush: js notranslate">var text = 'Образец text на русском языке'; +var regex = /[\u0400-\u04FF]+/g; + +var match = regex.exec(text); +console.log(match[0]); // напечатает 'Образец' +console.log(regex.lastIndex); // напечатает '7' + +var match2 = regex.exec(text); +console.log(match2[0]); // напечатает 'на' [не 'text'] +console.log(regex.lastIndex); // напечатает '15' + +// и так далее +</pre> + +<p>Вот на этом внешнем ресурсе можно составить полный диапазон блоков Юникода для различных письменностей: <a href="http://kourge.net/projects/regexp-unicode-block">regexp-unicode-block</a>.</p> + +<h3 id="Example_Extracting_subdomain_name_from_URL" name="Example:_Extracting_subdomain_name_from_URL">Пример: извлечение имени поддомена из URL</h3> + +<pre class="brush: js notranslate">var url = 'http://xxx.domain.com'; +console.log(/[^.]+/.exec(url)[0].substr(7)); // напечатает 'xxx' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10', 'RegExp')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp-regular-expression-objects', 'RegExp')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Флаг «липучести» («y»)</td> + <td>{{CompatChrome("39")}} (через флаг)</td> + <td>{{CompatGeckoDesktop("1.9")}} ES4-Style {{bug(773687)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Флаг «липучести» («y»)</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("1.9")}} ES4-Style {{bug(773687)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko_specific_notes" name="Gecko_specific_notes">Примечания по Gecko</h3> + +<p>Начиная с Gecko 34 {{geckoRelease(34)}}, в случае захвата группы с квантификаторами, предотвращающими появление группы в результате сопоставления, сопоставившийся текст для захваченной группы теперь имеет значение <code>undefined</code> вместо пустой строки:</p> + +<pre class="brush: js notranslate">// Firefox 33 или более ранние +'x'.replace(/x(.)?/g, function(m, group) { + console.log("'group:" + group + "'"); +}); // 'group:' + +// Firefox 34 или более новые +'x'.replace(/x(.)?/g, function(m, group) { + console.log("'group:" + group + "'"); +}); // 'group:undefined' +</pre> + +<p>Обратите внимание, что для поддержания обратной совместимости, свойства <code>RegExp.$N</code> по-прежнему возвращают пустую строку вместо значения <code>undefined</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1053944">bug 1053944</a>).</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Глава про <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions">регулярные выражения</a> в <a href="/ru/docs/Web/JavaScript/Guide">руководстве по JavaScript</a></li> + <li>{{jsxref("String.prototype.match()")}}</li> + <li>{{jsxref("String.prototype.replace()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/input/index.html b/files/ru/web/javascript/reference/global_objects/regexp/input/index.html new file mode 100644 index 0000000000..1e85d92013 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/input/index.html @@ -0,0 +1,55 @@ +--- +title: RegExp.input ($_) +slug: Web/JavaScript/Reference/Global_Objects/RegExp/input +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/input +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Нестандартное свойство <strong><code>input</code> </strong>является статическим свойством регулярных выражений. Оно содержит строку, для которой произошло совпадение по регулярному выражению. Значение свойства также можно получить как <code>RegExp.$_</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>RegExp</var>.input +RegExp.$_ +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Поскольку свойство <code>input</code> статическое, к нему можно обратиться только как <code>RegExp.input</code> или <code>RegExp.$_</code>.</p> + +<p>Значение данного свойства изменяется каждый раз при возникновении совпадений с регулярным выражением для новой строки.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_input_и__">Использование <code>input</code> и <code>$_</code></h3> + +<pre class="brush: js">var re = /hi/g; +re.test('hi there!'); +RegExp.input; // "hi there!" +re.test('foo'); // новая проверка, совпадений нет +RegExp.$_; // "hi there!" +re.test('hi world!'); // новая проверка, совпадение есть +RegExp.$_; // "hi world!" +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<p>Не стандартизированно. Не является частью какой-либо спецификации.</p> + +<h2 id="Поддержка_в_браузерах">Поддержка в браузерах</h2> + +<div> + + +<p>{{Compat("javascript.builtins.RegExp.input")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{non-standard_inline}} {{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.n", "RegExp.$1-$9")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html b/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html new file mode 100644 index 0000000000..3b9b80efea --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/lastindex/index.html @@ -0,0 +1,130 @@ +--- +title: RegExp.lastIndex +slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex +tags: + - JavaScript + - Property + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>lastIndex</code></strong> является целочисленным свойством регулярного выражения, доступным как для чтения, так и для записи, которое определяет индекс, с которого следует начинать следующее сопоставление.</p> + +<div>{{js_property_attributes(1, 0, 0)}}</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>regExpObj</var>.lastIndex</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Это свойство устанавливается только в том случае, если в регулярном выражении используется флаг <code>"g"</code>, указывающий на необходимость глобального поиска. Оно подчиняется следующим правилам:</p> +<ul> + <li>Если свойство <code>lastIndex</code> больше длины строки, методы {{jsxref("RegExp.prototype.test()", "test()")}} и {{jsxref("RegExp.prototype.exec()", "exec()")}} завершатся с неудачей, а свойство <code>lastIndex</code> будет установлено в 0.</li> + <li>Если свойство <code>lastIndex</code> равно длине строки и регулярное выражение сопоставляется с пустой строкой, то регулярное выражение начнёт сопоставляться, начиная с позиции <code>lastIndex</code>.</li> + <li>Если свойство <code>lastIndex</code> равно длине строки и регулярное выражение не сопоставляется с пустой строкой, то регулярное выражение не соответствует входу и свойство <code>lastIndex</code> сбрасывается в 0.</li> + <li>Во всех остальных случаях свойство <code>lastIndex</code> устанавливается в позицию, следующую за самым последним сопоставлением.</li> +</ul> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_lastIndex" name="Example:_Using_lastIndex">Пример: использование свойства <code>lastIndex</code></h3> +<p>Рассмотрим следующую последовательность инструкций:</p> +<pre class="brush: js">var re = /(привет)?/g; +</pre> +<p>Сопоставляется с пустой строкой.</p> +<pre class="brush: js">console.log(re.exec('привет')); +console.log(re.lastIndex); +</pre> +<p>Выведет массив <code>["привет", "привет"]</code>, а свойство <code>lastIndex</code> будет равным 6.</p> +<pre class="brush: js">console.log(re.exec('привет')); +console.log(re.lastIndex); +</pre> +<p>Выведет массив <code>["", undefined]</code>, «пустой» массив, чей нулевой элемент является сопоставившейся строкой. В данном случае, ей является пустая строка, поскольку свойство <code>lastIndex</code> было равно 6 (и остаётся равным 6), а строка <code>"привет"</code> имеет длину 6.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.<br> + JavaScript 1.5: свойство <code>lastIndex</code> является свойством экземпляра {{jsxref("RegExp")}}, а не самого объекта {{jsxref("RegExp")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.7.5', 'RegExp.lastIndex')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-regexp-instances', 'RegExp.lastIndex')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li> + <li>{{jsxref("RegExp.prototype.global")}}</li> + <li>{{jsxref("RegExp.prototype.multiline")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> + <li>{{jsxref("RegExp.prototype.sticky")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html new file mode 100644 index 0000000000..94e140a0a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/lastmatch/index.html @@ -0,0 +1,54 @@ +--- +title: RegExp.lastMatch ($&) +slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastMatch +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Нестандартное свойство <strong>lastMatch </strong>является доступным только для чтения статическим свойством регулярных выражений. Оно содержит последние совпавшие символы. Значение свойства также можно получить как <code>RegExp.$&</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><var>RegExp</var>.lastMatch +RegExp['$&'] +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Поскольку свойство <code>lastMatch</code> статическое, к нему можно обратиться только как <code>RegExp.lastMatch</code> или <code>RegExp['$&'].</code></p> + +<p>Значение свойства <code>lastMatch</code> доступно только для чтение и изменяется при успешном совпадении с регулярным выражением.</p> + +<p>Поскольку использование символа "&" приведет к выбрасыванию ошибки {{jsxref("SyntaxError")}}, обратиться к данному свойству с помощью точечной нотации(<code>RegExp.$&</code>) нельзя. Вместо этого стоит использовать <a href="/ru/docs/Web/JavaScript/Reference/Operators/Property_Accessors">скобочную нотацию</a> (<code>RegExp['$&']</code>).</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_lastMatch_и">Использование <code>lastMatch</code> и <code>$&</code></h3> + +<pre class="brush: js notranslate">var re = /hi/g; +re.test('hi there!'); +RegExp.lastMatch; // "hi" +RegExp['$&']; // "hi" +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<p>Не стандартизированно. Не является частью какой-либо спецификации.</p> + +<h2 id="Поддержка_в_браузерах">Поддержка в браузерах</h2> + +<div> + + +<p>{{Compat("javascript.builtins.RegExp.lastMatch")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{non-standard_inline}} {{jsxref("RegExp.input", "RegExp.input ($_)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.n", "RegExp.$1-$9")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html b/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html new file mode 100644 index 0000000000..734964950f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/multiline/index.html @@ -0,0 +1,115 @@ +--- +title: RegExp.prototype.multiline +slug: Web/JavaScript/Reference/Global_Objects/RegExp/multiline +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/multiline +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>multiline</code></strong> указывает, использовался ли в определении регулярного выражения флаг <code>"m"</code>. Свойство <code>multiline</code> является свойством только для чтения и принадлежит экземпляру регулярного выражения.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Значение свойства <code>multiline</code> имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит <code>true</code>, если при определении регулярного выражения использовался флаг <code>"m"</code>; в противном случае оно содержит <code>false</code>. Флаг <code>"m"</code> указывает на то, что многострочная входная строка должна рассматриваться в виде нескольких строк. Например, если используется флаг <code>"m"</code>, специальные символы <code>"^"</code> и <code>"$"</code> меняют своё поведение: с установленным флагом они сопоставляются в началом / концом каждой строки в многострочной строке, а не с началом / концом всей многострочной строки.</p> +<p>Вы не можете напрямую изменить это свойство.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_multiline" name="Example:_Using_multiline">Пример: использование свойства <code>multiline</code></h3> +<pre class="brush: js">var regex = new RegExp('foo', 'm'); + +console.log(regex.multiline); // true +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.<br> + JavaScript 1.5: свойство <code>multiline</code> является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.7.4', 'RegExp.prototype.multiline')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.multiline', 'RegExp.prototype.multiline')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Свойство <code>multiline</code> теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("RegExp.lastIndex")}}</li> + <li>{{jsxref("RegExp.prototype.global")}}</li> + <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> + <li>{{jsxref("RegExp.prototype.sticky")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/n/index.html b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html new file mode 100644 index 0000000000..a785e92f01 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/n/index.html @@ -0,0 +1,64 @@ +--- +title: RegExp.$1-$9 +slug: Web/JavaScript/Reference/Global_Objects/RegExp/n +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/n +--- +<div>{{JSRef}} {{non-standard_header}}</div> + +<p>Нестандартные свойства <strong>$1, $2, $3, $4, $5, $6, $7, $8, $9</strong> являются статическими и доступными только для чтения свойствами регулярных выражений, которые содержат найденые подстроки, обернутые в скобки.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>RegExp</var>.$1 +RegExp.$2</code> +RegExp.$3 +RegExp.$4 +RegExp.$5 +RegExp.$6 +RegExp.$7 +RegExp.$8 +RegExp.$9 +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Свойства $1, ..., $9 являются статичными, они не являются свойствами конкретного объекта регулярного выражения, поэтому вы всегда можете использовать их как <code>RegExp.$1</code>, ..., <code>RegExp.$9</code>.</p> + +<p>Значения этих свойств не доступны для изменения, они модифицируются всякий раз при успешном совпадении регулярного выражения.</p> + +<p>Количество возможных подстрок в круглых скобках неограничено, но объект <code>RegExp</code> может содержать в себе только последние 9. Вы можете получить доступ ко всем подстрокам, совпавшим с выражениями внутри круглых скобок, с помощью индексов возвращенного массива.</p> + +<p>Эти свойства могу использоваться при замене текста в методе {{jsxref("String.replace")}}. Когда используете его, не добавляйте их в <code>RegExp</code>. Пример ниже демонстрирует правильное применение. Когда круглые скобки не включены в регулярное выражение, код интерпритирует такие значения, как <code>$n</code> буквально, как литерал (n - положительное число).</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_n_со_String.replace">Использование <code>$n</code> со <code>String.replace</code></h3> + +<p>Следующий код использует метод {{jsxref("String.prototype.replace()", "replace()")}} строки {{jsxref("String")}}, чтобы преобразовать строку в формате <em>Имя Фамилия</em> в формат <em>Фамилия, Имя</em>. В коде замены текста используются <code>$1</code> и <code>$2</code> чтобы указать порядок вывода результата совпадений полученных при сравнивании с шаблоном регулярного выражения, имеющего круглые скобки.</p> + +<pre class="brush: js">var re = /(\w+)\s(\w+)/; +var str = 'John Smith'; +str.replace(re, '$2, $1'); // "Smith, John" +RegExp.$1; // "John" +RegExp.$2; // "Smith" +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<p>Не стандартизированно. Не является частью какой-либо спецификации</p> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.RegExp.n")}}</p> + +<div id="compat-mobile"></div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{non-standard_inline}} {{jsxref("RegExp.input", "RegExp.input ($_)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.lastMatch", "RegExp.lastMatch ($&)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.lastParen", "RegExp.lastParen ($+)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.leftContext", "RegExp.leftContext ($`)")}}</li> + <li>{{non-standard_inline}} {{jsxref("RegExp.rightContext", "RegExp.rightContext ($')")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html b/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html new file mode 100644 index 0000000000..dd6989d2fd --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/prototype/index.html @@ -0,0 +1,140 @@ +--- +title: RegExp.prototype +slug: Web/JavaScript/Reference/Global_Objects/RegExp/prototype +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>RegExp.prototype</code></strong> представляет объект прототипа для констуктора {{jsxref("Global_Objects/RegExp", "RegExp")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Описание экземпляров регулярных выражений смотрите на странице документации, посвящёной объекту {{jsxref("Global_Objects/RegExp", "RegExp")}}. Экземпляры регулярных выражений наследуются от <code>RegExp.prototype</code>. Изменение объекта прототипа распространяется на все экземпляры регулярных выражений.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<p>Также смотрите <a href="/ru/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties">устаревшие свойства объекта <code>RegExp</code></a></p> +<p>Обратите внимание, что некоторые свойста объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} имеют как длинные, так и короткие (Perl-подобные) имена. Оба имени всегда ссылаются на одно и тоже значение. Perl — это язык программирования, откуда JavaScript взял свои регулярные выражения.</p> +<dl> + <dt><code>RegExp.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип объекта.</dd> + <dt>{{jsxref("RegExp.prototype.global")}}</dt> + <dd>Определяет, надо ли проверять регулярное выражение на все возможные сопоставления со строкой, или достаточно только первый раз.</dd> + <dt>{{jsxref("RegExp.prototype.ignoreCase")}}</dt> + <dd>Определяет, надо ли игнорировать регистр символов при попытке сопоставления со строкой.</dd> + <dt>{{jsxref("RegExp.prototype.lastIndex")}}</dt> + <dd>Индекс, по которому начинается следующее сопоставление.</dd> + <dt>{{jsxref("RegExp.prototype.multiline")}}</dt> + <dd>Определяет, надо ли искать по нескольким строкам.</dd> + <dt>{{jsxref("RegExp.prototype.source")}}</dt> + <dd>Текст шаблона.</dd> + <dt>{{jsxref("RegExp.prototype.sticky")}} {{experimental_inline}}</dt> + <dd>Определяет, включён ли режим «липкого» поиска.</dd> + <dt>{{jsxref("RegExp.prototype.flags")}} {{experimental_inline}}</dt> + <dd>Строка, состоящая из флагов объекта регулярного выражения.</dd> +</dl> +<div>{{jsOverrides("Object", "properties", "constructor", "global", "ignoreCase", "lastIndex", "multiline", "source", "sticky")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Также смотрите <a href="/ru/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Methods">устаревшие методы объекта <code>RegExp</code></a></p> +<dl> + <dt>{{jsxref("RegExp.prototype.exec()")}}</dt> + <dd>Выполняет поиск сопоставлений регулярного выражения в своём строковом параметре.</dd> + <dt>{{jsxref("RegExp.prototype.test()")}}</dt> + <dd>Пытается сопоставить регулярное выражение своему строковому параметру.</dd> + <dt>{{jsxref("RegExp.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает объектный литерал, представляющий указаный объект; вы можете использовать это значение для создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("RegExp.prototype.toString()")}}</dt> + <dd>Возвращает строку, представляющую указаннный объект. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> +</dl> +<div>{{jsOverrides("Object", "Methods", "exec", "test", "toSource", "toString")}}</div> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.5.1', 'RegExp')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype', 'RegExp.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>Глава про <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions">регулярные выражения</a> в <a href="/ru/docs/Web/JavaScript/Guide">руководстве по JavaScript</a></li> + <li>{{jsxref("Global_Objects/RegExp", "RegExp")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/source/index.html b/files/ru/web/javascript/reference/global_objects/regexp/source/index.html new file mode 100644 index 0000000000..32d0bb687d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/source/index.html @@ -0,0 +1,121 @@ +--- +title: RegExp.prototype.source +slug: Web/JavaScript/Reference/Global_Objects/RegExp/source +tags: + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/source +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>source</code></strong> возвращает {{jsxref("Global_Objects/String", "строку", "", 1)}}, содержащую текст шаблона регулярного выражения без прямых слешей с обеих сторон и без флагов регулярного выражения.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_source" name="Example:_Using_source">Пример: использование свойства <code>source</code></h3> + +<pre class="brush: js">var regex = /fooBar/ig; + +console.log(regex.source); // 'fooBar', не содержит прямые слеши /.../ и флаги 'ig'. +</pre> + +<p>Начиная с ECMAScript 5, свойство <code>source</code> больше не возвращает пустую строку для пустых регулярных выражений. Вместо этого, возвращается строка" (?:)". Кроме того, теперь экранируются символы окончания строк (такие как, "\n").</p> + +<pre>new RegExp().source; // "(?:)" + +new RegExp('\n').source === '\n'; // true, до появления ES5 +new RegExp('\n').source === '\\n'; // true, начиная с ES5</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.<br> + JavaScript 1.5: свойство <code>source</code> является свойством экземпляра {{jsxref("Global_Objects/RegExp", "RegExp")}}, а не самого объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.7.1', 'RegExp.prototype.source')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.source', 'RegExp.prototype.source')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Свойство <code>source</code> теперь является свойством доступа в прототипе объекта, а не собственным свойством данных экземпляра.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp.prototype.flags")}}</li> +</ul> + +<div class="ddict_btn" style="top: 882px; left: 573.6px;"><img></div> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html b/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html new file mode 100644 index 0000000000..84801849db --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/sticky/index.html @@ -0,0 +1,139 @@ +--- +title: RegExp.prototype.sticky +slug: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Property + - Prototype + - Reference + - RegExp + - Référence(2) + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/sticky +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>sticky</code></strong> отражает тот факт, является ли поиск «липким» (то есть, начинается ли он с индекса, на который указывает свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} регулярного выражения). Свойство <code>sticky</code> является свойством только для чтения и принадлежит экземпляру регулярного выражения.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Значение свойства <code><strong>sticky</strong></code> имеет тип {{jsxref("Global_Objects/Boolean", "Boolean")}} и содержит <code>true</code>, если при определении регулярного выражения использовался флаг <code>"y",</code> в противном случае оно содержит <code>false</code>. Флаг <code>"y"</code> указывает на то, что регулярное выражение сопоставляется с целевой строкой начиная с позиции, на которую указывает его свойство {{jsxref("RegExp.lastIndex", "lastIndex")}} (и не пытается сопоставиться по любому более старшему индексу). Такое поведение позволяет эффективно использовать символ <code>"^"</code> сопоставления-с-началом в любом месте строки путём смены значения свойства {{jsxref("RegExp.lastIndex", "lastIndex")}}.</p> + +<p>Вы не можете напрямую изменить это свойство.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_a_regular_expression_with_the_.22sticky.22_flag" name="Example:_Using_a_regular_expression_with_the_.22sticky.22_flag">Пример: использование регулярных выражений с флагом «липучести»</h3> + +<p>Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.</p> + +<pre class="brush: js">var text = 'Первая строка\nВторая строка'; +var regex = /(\S+) строка\n?/y; + +var match = regex.exec(text); +console.log(match[1]); // напечатает 'Первая' +console.log(regex.lastIndex); // напечатает '14' + +var match2 = regex.exec(text); +console.log(match2[1]); // напечатает 'Вторая' +console.log(regex.lastIndex); // напечатает '27' + +var match3 = regex.exec(text); +console.log(match3 === null); // напечатает 'true' +</pre> + +<h2 id="Compatibility_test" name="Compatibility_test">Проверка совместимости</h2> + +<p>Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока <code>try { … } catch { … }</code>. Для этого надо использовать либо выражение с <code>eval(…)</code>, либо конструктор <code>RegExp(<var>строка регулярного выражения</var>, <var>строка-с-флагами</var>)</code> (поскольку нотация <code>/<var>регулярное выражение</var>/<var>флаги</var></code> обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока <code>catch</code>). Например:</p> + +<pre class="brush: js">var supports_sticky; +try { RegExp('', 'y'); supports_sticky = true; } +catch(e) { supports_sticky = false; } +console.log(supports_sticky); // напечатает 'false' в Firefox 2 и 'true' в Firefox 3+ +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-regexp.prototype.sticky', 'RegExp.prototype.sticky')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("1.9")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("1.9")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp.lastIndex")}}</li> + <li>{{jsxref("RegExp.prototype.global")}}</li> + <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li> + <li>{{jsxref("RegExp.prototype.multiline")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/test/index.html b/files/ru/web/javascript/reference/global_objects/regexp/test/index.html new file mode 100644 index 0000000000..3723064858 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/test/index.html @@ -0,0 +1,143 @@ +--- +title: RegExp.prototype.test() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/test +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/test +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>test()</code></strong> выполняет поиск сопоставления регулярного выражения указанной строке. Возвращает <code>true</code> или <code>false</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre><code><var>regexObj</var>.test(str)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Строка, с которой сопоставляется регулярное выражение.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Логическое значение: <code>true</code> или <code>false</code>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Используйте метод <code>test()</code>, если вы просто хотите узнать, находится ли шаблон в строке (он почти аналогичен методу {{jsxref("String.prototype.search()")}}, только вместо индекса шаблона возвращает <code>true</code> или <code>false</code>); для получения дополнительной информации о сопоставлении (но за счёт более медленного выполнения) используйте метод {{jsxref("RegExp.prototype.exec()", "exec()")}} (он аналогичен методу {{jsxref("String.prototype.match()")}}). Как и при вызове метода {{jsxref("RegExp.prototype.exec()", "exec()")}} (или при совместном с ним вызове), метод <code>test()</code>, вызванный несколько раз на одном и том же экземпляре глобального регулярного выражения, будет начинать проверку с конца предыдущего сопоставления.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_test" name="Example:_Using_test">Пример: использование метода <code>test()</code></h3> + +<p>Следующий пример печатает сообщение, в зависимости от того, была ли проверка успешной:</p> + +<pre class="brush: js">function testinput(re, str){ + var midstring; + if (re.test(str)) { + midstring = ' содержит '; + } else { + midstring = ' не содержит '; + } + console.log(str + midstring + re.source); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.10.6.3', 'RegExp.test')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype.test', 'RegExp.test')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<p>До Gecko 8.0 {{geckoRelease("8.0")}} метод <code>test()</code> был реализован неправильно; когда он вызывался без параметров, он проверял на сопоставление предыдущее проверенное значение (свойство <code>RegExp.input</code>) вместо сопоставления со строкой <code>"undefined"</code>. Это поведение было исправлено; теперь <code>/undefined/.test()</code> правильно вернёт <code>true</code> вместо ошибки.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>Глава про <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions">регулярные выражения</a> в <a href="/ru/docs/Web/JavaScript/Guide">руководстве по JavaScript</a></li> + <li>{{jsxref("Global_Objects/RegExp", "RegExp")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html b/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html new file mode 100644 index 0000000000..470f288df6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/tosource/index.html @@ -0,0 +1,106 @@ +--- +title: RegExp.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/toSource +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - RegExp +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toSource +--- +<div>{{JSRef("Global_Objects", "RegExp")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>toSource()</code></strong> возвращает строковое представление исходного кода объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>regexObj</var>.toSource() +RegExp.toSource() +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>toSource()</code> возвращает следующие значения:</p> + +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}, метод <code>toSource()</code> возвращает следующую строку, указывающую, что исходный код недоступен: + + <pre class="brush: js">function RegExp() { + [native code] +} +</pre> + </li> + <li>Для экземпляров объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}, метод <code>toSource()</code> возвращает строковое представление исходного кода.</li> +</ul> + +<p>Этот метод обычно вызывается внутри движка JavaScript, а не явно в коде.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html b/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html new file mode 100644 index 0000000000..2e0d9badec --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/tostring/index.html @@ -0,0 +1,116 @@ +--- +title: RegExp.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/RegExp/toString +tags: + - JavaScript + - Method + - Prototype + - Reference + - RegExp + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/toString +--- +<div>{{JSRef("Global_Objects", "RegExp")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toString()</code></strong> возвращает строковое представление регулярного выражения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>regexObj</var>.toString()</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<p>Нет.</p> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Global_Objects/RegExp", "RegExp")}} переопределяет метод <code>toString()</code> объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/RegExp", "RegExp")}}, метод <code>toString()</code> возвращает строковое представление регулярного выражения.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toString" name="Example:_Using_toString">Пример: использование метода <code>toString()</code></h3> +<p>Следующий пример отображает строковое значение объекта {{jsxref("Global_Objects/RegExp", "RegExp")}}:</p> +<pre class="brush: js">var myExp = new RegExp('a+b+c'); +console.log(myExp.toString()); // отобразит '/a+b+c/' + +var foo = new RegExp('bar', 'g'); +console.log(foo.toString()); // отобразит '/bar/g' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.9.5.2', 'RegExp.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-regexp.prototype.tostring', 'RegExp.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html new file mode 100644 index 0000000000..6f585f94f7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/regexp/unicode/index.html @@ -0,0 +1,70 @@ +--- +title: RegExp.prototype.unicode +slug: Web/JavaScript/Reference/Global_Objects/RegExp/unicode +translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/unicode +--- +<div>{{JSRef}}</div> + +<p>Свойство unicode указывает, используется ли флаг «u» с регулярным выражением. Свойство unicode доступно только для чтения конкретного экземпляра регулярного выражения.</p> + +<div>{{EmbedInteractiveExample("pages/js/regexp-prototype-unicode.html", "taller")}}</div> + +<p class="hidden">Источник этого интерактивного примера хранится в GitHub репозитории. Если вы хотите внести свой вклад в проект интерактивных примеров, скопируйте https://github.com/mdn/interactive-examples и отправьте нам pull request.</p> + +<div>{{js_property_attributes(0, 0, 1)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Значение unicode является {{jsxref ("Boolean")}}. True, если используется флаг u, или false - противном случае. Флаг «u» позволяет использовать различные функции, связанные с Unicode. С флагом «u» любые escape-последовательности кода Unicode будут интерпретироваться как таковые, например.</p> + +<p>Вы не можете напрямую изменить это свойство. Оно доступно только для чтения.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Испльзование_свойства_unicode">Испльзование свойства <code>unicode</code></h3> + +<pre class="brush: js">var regex = new RegExp('\u{61}', 'u'); + +console.log(regex.unicode); // true +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-get-regexp.prototype.unicode', 'RegExp.prototype.unicode')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-regexp.prototype.unicode', 'RegExp.prototype.unicode')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, зайдите на https://github.com/mdn/browser-compat-data и отправьте нам pull request.</div> + +<p>{{Compat("javascript.builtins.RegExp.unicode")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp.lastIndex")}}</li> + <li>{{jsxref("RegExp.prototype.global")}}</li> + <li>{{jsxref("RegExp.prototype.ignoreCase")}}</li> + <li>{{jsxref("RegExp.prototype.multiline")}}</li> + <li>{{jsxref("RegExp.prototype.source")}}</li> + <li>{{jsxref("RegExp.prototype.sticky")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/add/index.html b/files/ru/web/javascript/reference/global_objects/set/add/index.html new file mode 100644 index 0000000000..44ac1e81b8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/add/index.html @@ -0,0 +1,76 @@ +--- +title: Set.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/Set/add +translation_of: Web/JavaScript/Reference/Global_Objects/Set/add +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>add()</strong></code> добавляет новый элемент с заданным значением в конец объекта <code>Set</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-add.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.add(value);</code></pre> + +<h3 id="Параметы">Параметы</h3> + +<dl> + <dt>value</dt> + <dd>Обязательное. Значение элемента, добавляемого в объект <code>Set</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Объект <code>Set</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_add">Использование метода <code>add</code> </h3> + +<pre class="brush: js">var mySet = new Set(); + +mySet.add(1); +mySet.add(5).add('some text'); // можно делать цепочки + +console.log(mySet); +// Set [1, 5, "some text"] +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.add', 'Set.prototype.add')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.add', 'Set.prototype.add')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.add")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("Set.prototype.delete()")}}</li> + <li>{{jsxref("Set.prototype.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/clear/index.html b/files/ru/web/javascript/reference/global_objects/set/clear/index.html new file mode 100644 index 0000000000..376c848719 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/clear/index.html @@ -0,0 +1,74 @@ +--- +title: Set.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/Set/clear +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/clear +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>clear()</strong></code> удаляет все элементы из объекта <code>Set</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.clear();</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_clear">Использование метода <code>clear</code></h3> + +<pre class="brush: js">var mySet = new Set(); +mySet.add(1); +mySet.add('foo'); + +mySet.size; // 2 +mySet.has('foo'); // true + +mySet.clear(); + +mySet.size; // 0 +mySet.has('bar') // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.clear', 'Set.prototype.clear')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.clear', 'Set.prototype.clear')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.clear")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("Set.prototype.delete()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/delete/index.html b/files/ru/web/javascript/reference/global_objects/set/delete/index.html new file mode 100644 index 0000000000..3ba75646a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/delete/index.html @@ -0,0 +1,93 @@ +--- +title: Set.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/Set/delete +translation_of: Web/JavaScript/Reference/Global_Objects/Set/delete +--- +<div>{{JSRef}}</div> + +<div>Метод <code><strong>delete()</strong></code> удаляет уникальный элемент из объекта <code>Set</code>.</div> + +<div></div> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-delete.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.delete(value);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>value</dt> + <dd>Обязательный. Значение элемента для удаления из объекта <code>Set</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><code>true</code>, если элемент был успешно удален из объекта <code>Set</code>, иначе <code>false</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_delete">Использование метода <code>delete</code></h3> + +<pre class="brush: js">var mySet = new Set(); +mySet.add('foo'); + +mySet.delete('bar'); // Вернет false. Отсутсвует элемент "bar" для удаления. +mySet.delete('foo'); // Вернет true. Успешно удален. + +mySet.has('foo'); // Вернет false. Элемент "foo" больше не присутствует. +</pre> + +<p>Давайте проверим как удалить Object из Set.</p> + +<pre class="brush: js">var setObj = new Set(); // Создаем новый Set. + +setObj.add({x: 10, y: 20}); // Добавляем объект в набор. + +setObj.add({x: 20, y: 30}); // Добавляем объект в набор. + +// Удаляем любой point с `x > 10`. +setObj.forEach(function(point){ + if(point.x > 10){ + setObj.delete(point) + } +}) +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.delete', 'Set.prototype.delete')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.delete', 'Set.prototype.delete')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.delete")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("Set.prototype.clear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/entries/index.html b/files/ru/web/javascript/reference/global_objects/set/entries/index.html new file mode 100644 index 0000000000..52184bd79a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/entries/index.html @@ -0,0 +1,71 @@ +--- +title: Set.prototype.entries() +slug: Web/JavaScript/Reference/Global_Objects/Set/entries +translation_of: Web/JavaScript/Reference/Global_Objects/Set/entries +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>entries()</strong></code> возвращает новый <strong><code><a href="/ru/docs/Web/JavaScript/Guide/Iterators_and_Generators">Итератор</a></code></strong>, который содержит массив <strong><code>[значение, значение]</code></strong> для каждого элемента в объекте <code>Set</code> в порядке их добавления. Для объекта <code>Set</code> не существует ключа <code>key</code>, как в объекте <code>Map</code>. Тем не менее, чтобы API было схож с объектом <code>Map</code>, каждая <em>запись</em> содержит значение как в <em>ключе,</em> так и в <em>значении</em>, возвращая массив <code>[значение, значение]</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-entries.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.entries()</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый <code>Итератор</code>, который содержит массив <code>[значение, значение]</code> для каждого элемента, полученного в <code>Set</code> в порядке их добавления. </p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_entries">Использование <code>entries()</code></h3> + +<pre class="brush:js">var mySet = new Set(); +mySet.add('foobar'); +mySet.add(1); +mySet.add('baz'); + +var setIter = mySet.entries(); + +console.log(setIter.next().value); // ["foobar", "foobar"] +console.log(setIter.next().value); // [1, 1] +console.log(setIter.next().value); // ["baz", "baz"] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.entries', 'Set.prototype.entries')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Первоначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.entries', 'Set.prototype.entries')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.entries")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set.prototype.keys()")}}</li> + <li>{{jsxref("Set.prototype.values()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/foreach/index.html b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html new file mode 100644 index 0000000000..5ed212666b --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/foreach/index.html @@ -0,0 +1,110 @@ +--- +title: Set.prototype.forEach() +slug: Web/JavaScript/Reference/Global_Objects/Set/forEach +translation_of: Web/JavaScript/Reference/Global_Objects/Set/forEach +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>forEach()</strong></code> выполняет функцию по одному разу для каждого элемента из <code>Set</code> в порядке их расположения.</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-foreach.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><em>mySet</em>.forEach(<em>callback</em>[, <var>thisArg</var>]<code>)</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>callback</code></dt> + <dd>Функция, которая будет выполнена для каждого элемента, принимает три параметра:</dd> + <dd> + <dl> + <dt><code>currentValue</code>, <code>currentKey</code></dt> + <dd>Текущий элемент из <code>Set</code>. Т.к. в <code>Set</code> нет ключей, в каждом будет лежать value.</dd> + <dt><code>set</code></dt> + <dd>Сам объект <code>Set</code> для которого был вызван <code>forEach()</code>.</dd> + </dl> + </dd> + <dt><code>thisArg</code></dt> + <dd>Значение, используемое как <code>this</code> в ходе выполнения <code>callback</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>forEach()</code> выполняет <code>callback</code> по одному разу для каждого значения, которое находится в объекте <code>Set</code>. Функция не будет выполняться для значений, которые были удалены. Тем не менее функция выполнится с элементами, значение которых <code>undefined</code>.</p> + +<p><code>callback</code> вызывается с <strong>тремя аргументами</strong>:</p> + +<ul> + <li><strong>значение элемента</strong></li> + <li><strong>ключ элемента</strong></li> + <li><strong><code>Set</code> объект обхода</strong></li> +</ul> + +<p>В объектах типа <code>Set</code> нет ключей, поэтому оба первых аргумента принимают <strong>значение</strong> содержащееся в {{jsxref("Set")}}. Это делает метод <code>forEach()</code> для объекта Set совместимым с методами <code>forEach()</code> других объектов, таких как {{jsxref("Map.foreach", "Map")}} и {{jsxref("Array.forEach","Array")}}.</p> + +<p><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Если аргумент </span></font>thisArg</code> был передан в <code>forEach()</code>, то он будет передан в <code>callback</code> , во время исполнения, для использование его в качестве <code>this</code>. Иначе в <code>this</code> будет хранится значение <code>undefined</code>. Значение <code>this</code> используемое в <code>callback</code> определено согласно <a href="/en-US/docs/Web/JavaScript/Reference/Operators/this">с обычными правилами определения <code>this</code> используемого функцией</a> </p> + +<p>Каждое значение используется только один раз, исключая те случаи, когда оно было удалено и передобавлено до того, как <code>forEach()</code> завершился. <code>callback</code> не будет выполнена для элементов, которые были удалены до их использования. Новые значения, которые были добавлены до того как <code>forEach()</code> завершился будут использованы.</p> + +<p><code>forEach()</code> выполняет <code>callback</code> однажды для каждого элемента из объекта <code>Set</code>; Он не возвращает никакого значения.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Содержимое_объекта_Set">Содержимое объекта <code>Set</code> </h3> + +<p>Приведенный код показывает состояние каждого элемента в объекте <code>Set</code>:</p> + +<pre class="brush:js">function logSetElements(value1, value2, set) { + console.log('s[' + value1 + '] = ' + value2); +} + +new Set(['foo', 'bar', undefined]).forEach(logSetElements); + +// logs: +// "s[foo] = foo" +// "s[bar] = bar" +// "s[undefined] = undefined" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.foreach', 'Set.prototype.forEach')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_в_браузерах">Совместимость в браузерах</h2> + + + +<p>{{Compat("javascript.builtins.Set.forEach")}}</p> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Array.prototype.forEach()")}}</li> + <li>{{jsxref("Map.prototype.forEach()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/has/index.html b/files/ru/web/javascript/reference/global_objects/set/has/index.html new file mode 100644 index 0000000000..45a5de9131 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/has/index.html @@ -0,0 +1,91 @@ +--- +title: Set.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/Set/has +translation_of: Web/JavaScript/Reference/Global_Objects/Set/has +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>has()</strong></code> возвращает логическое значение, показывающее, существует ли элемент с указанным значением в объекте <code>Set</code> или нет.</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-has.html")}}</div> + + + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.has(value);</code></pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt>value</dt> + <dd>Required. The value to test for presence in the <code>Set</code> object.</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<dl> + <dt>Boolean</dt> + <dd> + <p>Returns <code>true</code> if an element with the specified value exists in the <code>Set</code> object; otherwise <code>false</code>.</p> + + <div class="note"> + <p><strong>Note:</strong> Technically speaking, <code>has()</code> uses the <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Same-value-zero_equality">sameValueZero</a></code> algorithm to determine whether the given element is found.</p> + </div> + </dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<h3 id="Using_the_has_method">Using the <code>has</code> method</h3> + +<pre class="brush: js">var mySet = new Set(); +mySet.add('foo'); + +mySet.has('foo'); // returns true +mySet.has('bar'); // returns false + +var set1 = new Set(); +var obj1 = {'key1': 1}; +set1.add(obj1); + +set1.has(obj1); // returns true +set1.has({'key1': 1}); // returns false because they are different object references +set1.add({'key1': 1}); // now set1 contains 2 entries +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.has', 'Set.prototype.has')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.has', 'Set.prototype.has')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Set.has")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("Set.prototype.add()")}}</li> + <li>{{jsxref("Set.prototype.delete()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/index.html b/files/ru/web/javascript/reference/global_objects/set/index.html new file mode 100644 index 0000000000..0233c7fcb5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/index.html @@ -0,0 +1,242 @@ +--- +title: Set +slug: Web/JavaScript/Reference/Global_Objects/Set +tags: + - ECMAScript6 + - JavaScript + - set + - Экспериментальный +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +<div>{{JSRef("Global_Objects", "Set")}}</div> + +<h2 id="Сводка">Сводка</h2> + +<p>Объекты <strong><code>Set</code></strong> позволяют вам сохранять <em>уникальные</em> значения любого типа, как {{Glossary("Primitive", "примитивы")}}, так и другие типы объектов.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"> new Set([iterable]);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>iterable</dt> + <dd>При передаче <a href="/ru/docs/Web/JavaScript/Reference/Statements/for...of">итерируемого объекта</a>, все его элементы будут добавлены в новый Set. Иначе (или при <code>null</code>) новый <code>Set</code> будет пуст.</dd> + <dt> + <h3 id="Возвращает">Возвращает</h3> + </dt> + <dd> + <p>Новый <code>Set</code> объект.</p> + </dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>Объекты <code>Set</code> представляют коллекции значений, по которым вы можете выполнить обход в порядке вставки элементов. Значение элемента в <code>Set</code> может присутствовать <strong>только в одном экземпляре</strong>, что обеспечивает его уникальность в коллекции <code>Set</code>.</p> + +<h3 id="Сравнение_значений">Сравнение значений</h3> + +<p>Поскольку каждое значение в <code>Set</code> должно быть уникальным, сравнение значений основано на алгоритме "подобное значение": <code>NaN</code> равно <code>NaN</code> (несмотря на то, что <code>NaN !== NaN</code>); все другие значения рассматриваются равными исходя из семантики оператора строго равенства ===. В ранних версиях черновика ECMAScript 6 <code>-0</code> и <code>+0</code> считались разными (несмотря на то, что <code>-0 === +0</code>), это было изменено в последующих версиях и адаптировано в Gecko 29 {{geckoRelease("29")}} ({{bug("952870")}}) и <a href="https://code.google.com/p/v8/issues/detail?id=3069">последней ночной сборке Chrome</a>. <code>NaN</code> и <code>undefined</code> также могут сохраняться в <code>Set</code>.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>Set.length</code></dt> + <dd>Значение свойства <code>length</code> всегда равно 0.</dd> + <dd>Чтобы узнать количество элементов в <code>Set</code>, используйте {{jsxref("Set.prototype.size")}}.</dd> + <dt>{{jsxref("Set.@@species", "get Set[@@species]")}}</dt> + <dd>Функция-конструктор, которая используется для создания производных объектов.</dd> + <dt>{{jsxref("Set.prototype")}}</dt> + <dd>Представляет прототип конструктора <code>Set</code>. Позволяет добавлять свойства всем объектам типа <code>Set</code>.</dd> +</dl> + +<h2 id="Set_instances" name="Set_instances">Экземпляры <code>Set</code></h2> + +<p>Все экземпляры <code>Set</code> унаследованы от {{jsxref("Set.prototype")}}.</p> + +<h3 id="Свойства">Свойства</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/Set/prototype','Properties')}}</p> + +<h3 id="Методы">Методы</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/Set/prototype','Methods')}}</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_объекта_Set">Использование объекта <code>Set</code></h3> + +<pre class="brush: js">var mySet = new Set(); + +mySet.add(1); // Set { 1 } +mySet.add(5); // Set { 1, 5 } +mySet.add(5); // Set { 1, 5 } +mySet.add("some text"); // Set { 1, 5, 'some text' } +var o = {a: 1, b: 2}; +mySet.add(o); + +mySet.add({a: 1, b: 2}); // переменная o связана с другим объектом, поэтому данная строка также сработает + +mySet.has(1); // true +mySet.has(3); // false, 3 не было добавлено в set +mySet.has(5); // true +mySet.has(Math.sqrt(25)); // true +mySet.has("Some Text".toLowerCase()); // true +mySet.has(o); // true + +mySet.size; // 5 + +mySet.delete(5); // удаляет 5 из set +mySet.has(5); // false, 5 было удалено + +mySet.size; // 4, было удалено одно значение +console.log(mySet); // Set {1, 'some text', Object {a: 1, b: 2}, Object {a: 1, b: 2}}</pre> + +<h3 id="Обход_Set">Обход Set</h3> + +<pre class="brush: js">// обход элементов set +// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2} +for (let item of mySet) console.log(item); + +// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2} +for (let item of mySet.keys()) console.log(item); + +// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2} +for (let item of mySet.values()) console.log(item); + +// выведет элементы по порядку: 1, "some text", {"a": 1, "b": 2} +//(key и value в данном случае одинаковы) +for (let [key, value] of mySet.entries()) console.log(key); + +// преобразует Set в Array +var myArr = Array.from(mySet); // [1, "some text", {"a": 1, "b": 2}] + +// следующее будет работать при запуске с HTML документом +mySet.add(document.body); +mySet.has(document.querySelector("body")); // true + +// преобразования из Array в Set и обратно +mySet2 = new Set([1,2,3,4]); +mySet2.size; // 4 +[...mySet2]; // [1,2,3,4] + +// пересечение можно представить следующим образом +var intersection = new Set([...set1].filter(x => set2.has(x))); + +// разность можно представить следующим образом +var difference = new Set([...set1].filter(x => !set2.has(x))); + +// Обход элементов set при помощи forEach +mySet.forEach(function(value) { + console.log(value); +}); + +// 1 +// 2 +// 3 +// 4 +</pre> + +<h3 id="Реализация_простых_операций">Реализация простых операций</h3> + +<pre class="brush: js"><code>function isSuperset(set, subset) { + for (var elem of subset) { + if (!set.has(elem)) { + return false; + } + } + return true; +} + +function union(setA, setB) { + var _union = new Set(setA); + for (var elem of setB) { + _union.add(elem); + } + return _union; +} + +function intersection(setA, setB) { + var _intersection = new Set(); + for (var elem of setB) { + if (setA.has(elem)) { + _intersection.add(elem); + } + } + return _intersection; +} + +function difference(setA, setB) { + var _difference = new Set(setA); + for (var elem of setB) { + _difference.delete(elem); + } + return _difference; +} + +// Например +var setA = new Set([1, 2, 3, 4]), + setB = new Set([2, 3]), + setC = new Set([3, 4, 5, 6]); + +isSuperset(setA, setB); // => true +union(setA, setC); // => Set [1, 2, 3, 4, 5, 6] +intersection(setA, setC); // => Set [3, 4] +difference(setA, setC); // => Set [1, 2]</code> +</pre> + +<h3 id="Взаимоотношения_с_объектом_Array">Взаимоотношения с объектом <code>Array</code></h3> + +<pre class="brush: js">var myArray = ["value1", "value2", "value3"]; + +// Используйте конструктор Set для преобразования Array в Set +var mySet = new Set(myArray); + +mySet.has("value1"); // вернёт true + +// Используйте spread оператор для преобразования Set в Array +console.log([...mySet]); // Отобразит тот же массив, что и myArray +</pre> + +<h3 id="Взаимоотношения_со_String">Взаимоотношения со <code>String</code></h3> + +<pre class="brush: js"><code>var text = 'India'; + +var mySet = new Set(text); // Set ['I', 'n', 'd', 'i', 'a'] +mySet.size; // 5</code> +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-set-objects', 'Set')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set-objects', 'Set')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.Set")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/prototype/index.html b/files/ru/web/javascript/reference/global_objects/set/prototype/index.html new file mode 100644 index 0000000000..c546a1997f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/prototype/index.html @@ -0,0 +1,80 @@ +--- +title: Set.prototype +slug: Web/JavaScript/Reference/Global_Objects/Set/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Set +--- +<div>{{JSRef}}</div> + +<p>The <code><strong>Set</strong></code><strong><code>.prototype</code></strong> property represents the prototype for the {{jsxref("Set")}} constructor.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Description">Description</h2> + +<p>{{jsxref("Set")}} instances inherit from {{jsxref("Set.prototype")}}. You can use the constructor's prototype object to add properties or methods to all <code>Set</code> instances.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Set.prototype.constructor</code></dt> + <dd>Возвращает функцию, которая создала прототип экземпляра. Это функция {{jsxref("Set")}} по умолчанию.</dd> + <dt>{{jsxref("Set.prototype.size")}}</dt> + <dd>Возвращает количество элементов в объекте <code>Set</code>.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Set.add", "Set.prototype.add(value)")}}</dt> + <dd>Добавляет новый элемент с переданным значением в <code>Set</code> объект. Возвращает <code>Set</code> объект.</dd> + <dt>{{jsxref("Set.prototype.clear()")}}</dt> + <dd>Removes all elements from the <code>Set</code> object.</dd> + <dt>{{jsxref("Set.delete", "Set.prototype.delete(value)")}}</dt> + <dd>Removes the element associated to the <code>value</code> and returns the value that <code>Set.prototype.has(value)</code> would have previously returned. <code>Set.prototype.has(value)</code> will return <code>false</code> afterwards.</dd> + <dt>{{jsxref("Set.prototype.entries()")}}</dt> + <dd>Returns a new <code>Iterator</code> object that contains<strong> an array of <code>[value, value]</code></strong> for each element in the <code>Set</code> object, in insertion order. This is kept similar to the <code>Map</code> object, so that each entry has the same value for its <em>key</em> and <em>value</em> here.</dd> + <dt>{{jsxref("Set.forEach", "Set.prototype.forEach(callbackFn[, thisArg])")}}</dt> + <dd>Calls <code>callbackFn</code> once for each value present in the <code>Set</code> object, in insertion order. If a <code>thisArg</code> parameter is provided to <code>forEach</code>, it will be used as the <code>this</code> value for each callback.</dd> + <dt>{{jsxref("Set.has", "Set.prototype.has(value)")}}</dt> + <dd>Returns a boolean asserting whether an element is present with the given value in the <code>Set</code> object or not.</dd> + <dt>{{jsxref("Set.prototype.keys()")}}</dt> + <dd>Is the same function as the <strong><code>values()</code></strong> function and returns a new <code>Iterator</code> object that contains the values for each element in the <code>Set</code> object in insertion order.</dd> + <dt>{{jsxref("Set.prototype.values()")}}</dt> + <dd>Returns a new <code>Iterator</code> object that contains the <strong>values</strong> for each element in the <code>Set</code> object in insertion order.</dd> + <dt>{{jsxref("Set.prototype.@@iterator()", "Set.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Iterator</code> object that contains the <strong>values</strong> for each element in the <code>Set</code> object in insertion order.</dd> +</dl> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype', 'Set.prototype')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype', 'Set.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Set.prototype")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Map.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/set/index.html b/files/ru/web/javascript/reference/global_objects/set/set/index.html new file mode 100644 index 0000000000..66e1d0108e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/set/index.html @@ -0,0 +1,72 @@ +--- +title: Set() конструктор +slug: Web/JavaScript/Reference/Global_Objects/Set/Set +translation_of: Web/JavaScript/Reference/Global_Objects/Set/Set +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary"><strong>Конструктор Set</strong> позволяет создавать объекты Set, в которых хранятся уникальные значения любого типа, будь то <a href="https://developer.mozilla.org/ru/docs/%D0%A1%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/Primitive">примитивные значения</a> или ссылки на объекты.</span></p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-constructor.html")}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate">new Set([<var>iterable</var>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code><var>iterable</var></code> {{optional_inline}}</dt> + <dd> + <p>Если передается <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/for...of">итеративный объект</a>, все его элементы будут добавлены в новый Set.</p> + + <p>Если вы не укажете этот параметр или его значение равно нулю, новый набор будет пустым.</p> + </dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый объект Set.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_объекта_Set">Использование объекта Set</h3> + +<pre class="brush: js notranslate">let mySet = new Set() + +mySet.add(1) // Set [ 1 ] +mySet.add(5) // Set [ 1, 5 ] +mySet.add(5) // Set [ 1, 5 ] +mySet.add('какой-то текст') // Set [ 1, 5, 'какой-то текст' ] +let o = {a: 1, b: 2} +mySet.add(o)</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-set-constructor', 'Set constructor')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.Set")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> +</ul> + +<ul> + <li><a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Set">Set</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/size/index.html b/files/ru/web/javascript/reference/global_objects/set/size/index.html new file mode 100644 index 0000000000..5b530d7331 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/size/index.html @@ -0,0 +1,68 @@ +--- +title: Set.prototype.size +slug: Web/JavaScript/Reference/Global_Objects/Set/size +tags: + - ECMAScript6 + - JavaScript + - set + - Свойство + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/Set/size +--- +<div>{{JSRef}}</div> + +<p>Метод доступа <code><strong>size</strong></code> возвращает количество (уникальных) элементов в объекте {{jsxref("Set")}}</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-size.html")}}</div> + + + +<h2 id="Описание">Описание</h2> + +<p>Значение <code>size</code> является целым числом, которое показывает как много записей имеет объект <code>Set</code>. Функция для установки <code>size</code> равна <code>undefined</code>; вы не можете изменить это свойство.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_size">Использование <code>size</code></h3> + +<pre class="brush:js">var mySet = new Set(); +mySet.add(1); +mySet.add(5); +mySet.add('некоторый текст') + +mySet.size; // 3 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-get-set.prototype.size', 'Set.prototype.size')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-set.prototype.size', 'Set.prototype.size')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.size")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/set/values/index.html b/files/ru/web/javascript/reference/global_objects/set/values/index.html new file mode 100644 index 0000000000..115d300b53 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/set/values/index.html @@ -0,0 +1,72 @@ +--- +title: Set.prototype.values() +slug: Web/JavaScript/Reference/Global_Objects/Set/values +translation_of: Web/JavaScript/Reference/Global_Objects/Set/values +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>values()</strong></code> возвращает новый <code>Итератор</code>, который содержит значения для каждого элемента в объекте <code>Set</code> в порядке их добавления.</p> + +<p>Метод <strong><code>keys()</code></strong> является синонимом этого метода (для схожести с объектами {{jsxref("Map")}}). Он ведёт себя точно так же и возвращает <strong>значения</strong> элементов <code>Set</code>.</p> + +<div>{{EmbedInteractiveExample("pages/js/set-prototype-values.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>mySet</em>.values(); +</code></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый <code><strong>Итератор</strong></code>, содержащий значения для каждого элемента <code>Set</code>, в порядке их добавления.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Ипсользование_values()">Ипсользование <code>values()</code></h3> + +<pre class="brush:js">var mySet = new Set(); +mySet.add('foo'); +mySet.add('bar'); +mySet.add('baz'); + +var setIter = mySet.values(); + +console.log(setIter.next().value); // "foo" +console.log(setIter.next().value); // "bar" +console.log(setIter.next().value); // "baz"</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-set.prototype.values', 'Set.prototype.values')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Начальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-set.prototype.values', 'Set.prototype.values')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Set.values")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set.prototype.entries()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html new file mode 100644 index 0000000000..884ab88fa1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/sharedarraybuffer/index.html @@ -0,0 +1,209 @@ +--- +title: SharedArrayBuffer +slug: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +translation_of: Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>SharedArrayBuffer</code></strong> используется для создания разделенного буфера фиксированной длины для хранения примитивных бинарных данных, подобно объекту {{jsxref("ArrayBuffer")}}, но могут быть использованы для создания обзора на разделенную память. В отличие от <code>ArrayBuffer</code>, <code>SharedArrayBuffer</code> не может быть отсоединен.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new SharedArrayBuffer(length) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>length</code></dt> + <dd>Размер, в байтах, для создания буферного массива.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новый объект <code>SharedArrayBuffer</code> указаной длины. Его содержимое после инициализаци равно 0.</p> + +<h2 id="Описание">Описание</h2> + +<h3 id="Распределение_и_разделение_память">Распределение и разделение память</h3> + +<p>Для разделения памяти с помощью объекта {{jsxref("SharedArrayBuffer")}} между одним агентом в кластере и другим (агент может быть как основной программой web-страницы, так и одним из web-workers), используются <code><a href="/en-US/docs/Web/API/Worker/postMessage">postMessage</a></code> и <a href="/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured cloning</a>.</p> + +<p>Алгоритм структурированного клонирования принимает <code>SharedArrayBuffers</code> и <code>TypedArrays,</code> отображенный в <code>SharedArrayBuffers</code>. В обоих случаях, объект <code>SharedArrayBuffer</code> передается получателю, результируя в новый, приватный объект SharedArrayBuffer внутри агента-получателя (так же как для {{jsxref("ArrayBuffer")}}). Однако, блок общих данных, на который ссылаются оба объекта <code>SharedArrayBuffer, </code>это один и тот же блок данных, и сторонние эффекты в блоке в одном из агентов в итоге станут заметны в другом агенте.</p> + +<pre class="brush: js">var sab = new SharedArrayBuffer(1024); +worker.postMessage(sab); +</pre> + +<h3 id="Обновление_и_синхронизация_разделенной_памяти_с_помощью_Атомарных_операций">Обновление и синхронизация разделенной памяти с помощью Атомарных операций</h3> + +<p>Разделенная память может быть создана и изменена одновременно в workers или основном потоке. В зависимости от системы (ЦПУ, ОС, браузер) может уйти время пока изменения будут распространены по всем контекстам. Для синхронизации необходимы {{jsxref("Атомарные", "атомарные", "", 1)}} операции .</p> + +<h3 id="API_принимающие_объекты_SharedArrayBuffer">API, принимающие объекты <code>SharedArrayBuffer</code></h3> + +<ul> + <li>{{domxref("WebGLRenderingContext.bufferData()")}}</li> + <li>{{domxref("WebGLRenderingContext.bufferSubData()")}}</li> + <li>{{domxref("WebGL2RenderingContext.getBufferSubData()")}}</li> +</ul> + +<h3 id="Конструкции_требуют_оператор_new">Конструкции требуют оператор <code>new</code></h3> + +<p>Конструторы <code>SharedArrayBuffer</code> необходимо вызывать с помощью оператора {{jsxref("Operators/new", "new")}}. Вызов конструктора <code>SharedArrayBuffer</code> как функции без указания <code>new</code>, вызовет ошибку {{jsxref("TypeError")}}.</p> + +<pre class="brush: js example-bad">var sab = SharedArrayBuffer(1024); +// TypeError: вызов встроенного конструктора SharedArrayBuffer +// без new запрещено</pre> + +<pre class="brush: js example-good">var sab = new SharedArrayBuffer(1024);</pre> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>SharedArrayBuffer.length</code></dt> + <dd>Длина конструктора <code>SharedArrayBuffer,</code> чье значение равно 1.</dd> + <dt>{{jsxref("SharedArrayBuffer.prototype")}}</dt> + <dd>Позволяет дополнительные свойства для всех объектов <code>SharedArrayBuffer</code>.</dd> +</dl> + +<h2 id="SharedArrayBuffer_объект_prototype"><code>SharedArrayBuffer</code> объект prototype</h2> + +<p>Все экземпляры <code>SharedArrayBuffer</code> наследуются от {{jsxref("SharedArrayBuffer.prototype")}}.</p> + +<h3 id="Свойства_2">Свойства</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','Properties')}}</p> + +<h3 id="Методы">Методы</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/prototype','Methods')}}</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ES2017.</td> + </tr> + <tr> + <td>{{SpecName('ES8', '#sec-sharedarraybuffer-objects', 'SharedArrayBuffer')}}</td> + <td>{{Spec2('ES8')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}} [2]</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + <tr> + <td><code>slice()</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("52")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + <tr> + <td>SAB in DataView</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("53")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("55")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + <tr> + <td><code>slice()</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("52")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + <tr> + <td>SAB in DataView</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("53")}} [1]</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("10.1")}}</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] Enabled by default in Firefox 55. In Firefox version 46 until version 54, this feature is disabled by a preference setting (in about:config, set <code>javascript.options.shared_memory</code> to <code>true</code>). </p> + +<p>[2] The implementation is under development and needs these runtime flags: <code>--js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer</code></p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Atomics")}}</li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li><a href="/en-US/docs/Web/API/Web_Workers_API">Web Workers</a></li> + <li><a href="https://github.com/lars-t-hansen/parlib-simple">parlib-simple </a>– a simple library providing synchronization and work distribution abstractions.</li> + <li><a href="https://github.com/tc39/ecmascript_sharedmem/blob/master/TUTORIAL.md">Shared Memory – a brief tutorial</a></li> + <li> + <p><a href="https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/">A Taste of JavaScript’s New Parallel Primitives – Mozilla Hacks</a></p> + </li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html b/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html new file mode 100644 index 0000000000..a493783be3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/@@iterator/index.html @@ -0,0 +1,131 @@ +--- +title: 'String.prototype[@@iterator]()' +slug: Web/JavaScript/Reference/Global_Objects/String/@@iterator +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - Iterator + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/@@iterator +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>[@@iterator]()</code></strong> возвращает новый объект итератора <code>Iterator</code>, который проходит по кодовым точкам строкового значения, возвращая каждую кодовую точку в виде строкового значения.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>string</var>[Symbol.iterator]</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_.5B.40.40iterator.5D" name="Example:_Using_.5B.40.40iterator.5D()">Пример: использование метода <code>[@@iterator]()</code></h3> + +<pre class="brush:js notranslate">var string = 'A\uD835\uDC68'; + +var strIter = string[Symbol.iterator](); + +console.log(strIter.next().value); // "A" +console.log(strIter.next().value); // "\uD835\uDC68" +</pre> + +<h3 id="Example_Using_.5B.40.40iterator.5D_with_for..of" name="Example:_Using_.5B.40.40iterator.5D()_with_for..of">Пример: использование метода <code>[@@iterator]()</code> вместе с циклом <code>for..of</code></h3> + +<pre class="brush:js notranslate">var string = 'A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A'; + +for (var v of string) { + console.log(v); +} +// "A" +// "\uD835\uDC68" +// "B" +// "\uD835\uDC69" +// "C" +// "\uD835\uDC6A" +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype-@@iterator', 'String.prototype[@@iterator]()')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("17")}} (<code>.iterator</code>)<br> + {{CompatGeckoDesktop("27")}} (<code>["@@iterator"]</code>)<br> + {{CompatGeckoDesktop("36")}} (<code>[Symbol.iterator]</code>)</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("17")}} (<code>.iterator</code>)<br> + {{CompatGeckoMobile("27")}} (<code>["@@iterator"]</code>)<br> + {{CompatGeckoMobile("36")}} (<code>[Symbol.iterator]</code>)</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<ul> + <li>С Gecko 17 {{geckoRelease("17")}} по Gecko 26 {{geckoRelease("26")}} вместо {{jsxref("Global_Objects/Symbol", "символа", "", 1)}} <code>@@iterator</code> использовалось свойство <code>iterator</code> ({{bug(907077)}}), а с Gecko 27 {{geckoRelease("27")}} по Gecko 35 {{geckoRelease("35")}} — строка-заменитель <code>"@@iterator"</code> ({{bug("918828")}}).</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/anchor/index.html b/files/ru/web/javascript/reference/global_objects/string/anchor/index.html new file mode 100644 index 0000000000..43b5161a75 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/anchor/index.html @@ -0,0 +1,131 @@ +--- +title: String.prototype.anchor() +slug: Web/JavaScript/Reference/Global_Objects/String/anchor +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/anchor +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>anchor()</code></strong> создаёт якорный HTML-элемент {{HTMLElement("a")}}, используемый в качестве цели гиперссылки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.anchor(<var>name</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>name</code></dt> + <dd>Строка, представляющая атрибут <code>name</code> создаваемого тега.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>anchor()</code> используется для программного создания и отображения якоря в документе.</p> + +<p>Текстовая строка представляет из себя буквальный текст, который ва хотите показать пользователю. Строковый параметр <code>name</code> представляет атрибут <code>name</code> элемента {{HTMLElement("a")}}.</p> + +<p>Якоря, созданные методом <code>anchor()</code>, становятся элементами в массиве {{domxref("document.anchors")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_anchor" name="Example:_Using_anchor">Пример: использование метода <code>anchor()</code></h3> + +<pre class="brush: js">var myString = 'Оглавление'; + +document.body.innerHTML = myString.anchor('contents_anchor'); +</pre> + +<p>приведёт к выводу следующего HTML:</p> + +<pre class="brush: html"><a name="contents_anchor">Оглавление</a> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.anchor', 'String.prototype.anchor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<p>Начиная с версии {{gecko("17")}}, символ <code>"</code> (кавычка) в строках, передаваемых в качестве параметра <code>name</code>, заменяется его HTML-мнемоникой <code>&quot;</code>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.link()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/big/index.html b/files/ru/web/javascript/reference/global_objects/string/big/index.html new file mode 100644 index 0000000000..b0172de18a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/big/index.html @@ -0,0 +1,112 @@ +--- +title: String.prototype.big() +slug: Web/JavaScript/Reference/Global_Objects/String/big +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/big +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>big()</code></strong> создаёт HTML-элемент {{HTMLElement("big")}}, заставляющий строку отображаться большим шрифтом.</p> +<div class="note"> + <p><strong>Примечание по использованию:</strong> элемент <big> был удалён из <a href="/ru/docs/Web/Guide/HTML/HTML5">HTML5</a> и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства <a href="/ru/docs/Web/CSS">CSS</a>.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.big()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>big()</code> заключает строку в тег <code><big></code>: <code>"<big>str</big>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_big" name="Example:_Using_big">Пример: использование метода <code>big()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +console.log(worldString.small()); // <small>Привет, мир</small> +console.log(worldString.big()); // <big>Привет, мир</big> +console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize> +</pre> +<p>При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута <code>style</code> элемента и управлять им более обобщённым способом, например:</p> +<pre class="brush: js">document.getElementById('yourElemId').style.fontSize = '2em'; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.big', 'String.prototype.big')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.fontsize()")}}</li> + <li>{{jsxref("String.prototype.small()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/blink/index.html b/files/ru/web/javascript/reference/global_objects/string/blink/index.html new file mode 100644 index 0000000000..4cb5218f7f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/blink/index.html @@ -0,0 +1,117 @@ +--- +title: String.prototype.blink() +slug: Web/JavaScript/Reference/Global_Objects/String/blink +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/blink +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>blink()</code></strong> создаёт HTML-элемент {{HTMLElement("blink")}}, заставляющий строку мерцать.</p> +<div class="warning"> + <p><strong>Предупреждение:</strong> мерцающий текст осуждается некоторыми стандартами доступности. Сам элемент <code><blink></code> является нестандартным и устаревшим!</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.blink()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>blink()</code> заключает строку в тег <code><blink></code>: <code>"<blink>str</blink>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_blink" name="Example:_Using_blink">Пример: использование метода <code>blink()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +document.write(worldString.blink()); +document.write(worldString.bold()); +document.write(worldString.italics()); +document.write(worldString.strike()); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html"><blink>Привет, мир</blink> +<b>Привет, мир</b> +<i>Привет, мир</i> +<strike>Привет, мир</strike> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.blink', 'String.prototype.blink')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.bold()")}}</li> + <li>{{jsxref("String.prototype.italics()")}}</li> + <li>{{jsxref("String.prototype.strike()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/bold/index.html b/files/ru/web/javascript/reference/global_objects/string/bold/index.html new file mode 100644 index 0000000000..255ff7623c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/bold/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.bold() +slug: Web/JavaScript/Reference/Global_Objects/String/bold +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/bold +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>bold()</code></strong> создаёт HTML-элемент {{HTMLElement("b")}}, заставляющий строку отображаться полужирным шрифтом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.bold()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>bold()</code> заключает строку в тег <code><b></code>: <code>"<b>str</b>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_bold" name="Example:_Using_bold">Пример: использование метода <code>bold()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +document.write(worldString.blink()); +document.write(worldString.bold()); +document.write(worldString.italics()); +document.write(worldString.strike()); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html"><blink>Привет, мир</blink> +<b>Привет, мир</b> +<i>Привет, мир</i> +<strike>Привет, мир</strike> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.bold', 'String.prototype.bold')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.blink()")}}</li> + <li>{{jsxref("String.prototype.italics()")}}</li> + <li>{{jsxref("String.prototype.strike()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/charat/index.html b/files/ru/web/javascript/reference/global_objects/string/charat/index.html new file mode 100644 index 0000000000..c86dae26aa --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/charat/index.html @@ -0,0 +1,270 @@ +--- +title: String.prototype.charAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charAt +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/charAt +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>charAt()</code></strong> возвращает указанный символ из строки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.charAt(<var>index</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>index</code></dt> + <dd>Целое число от 0 до длины строки минус 1.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке <code>stringName</code> равен <code>stringName.length - 1</code>. Если предоставленный вами параметр <code>index</code> выходит за пределы этого диапазона, JavaScript вернёт пустую строку.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Displaying_characters_at_different_locations_in_a_string" name="Example:_Displaying_characters_at_different_locations_in_a_string">Пример: отображение символов из различных позиций строки</h3> +<p>Следующий пример показывает символы в различных позициях в строке <code>"Дивный новый мир"</code>:</p> +<pre class="brush: js">var anyString = 'Дивный новый мир'; + +console.log("Символ по индексу 0 равен '" + anyString.charAt(0) + "'"); +console.log("Символ по индексу 1 равен '" + anyString.charAt(1) + "'"); +console.log("Символ по индексу 2 равен '" + anyString.charAt(2) + "'"); +console.log("Символ по индексу 3 равен '" + anyString.charAt(3) + "'"); +console.log("Символ по индексу 4 равен '" + anyString.charAt(4) + "'"); +console.log("Символ по индексу 5 равен '" + anyString.charAt(5) + "'"); +console.log("Символ по индексу 999 равен '" + anyString.charAt(999) + "'"); +</pre> +<p>Этот код отобразит следующее:</p> +<pre class="brush: js">Символ по индексу 0 равен 'Д' +Символ по индексу 1 равен 'и' +Символ по индексу 2 равен 'в' +Символ по индексу 3 равен 'н' +Символ по индексу 4 равен 'ы' +Символ по индексу 5 равен 'й' +Символ по индексу 999 равен '' +</pre> + +<h3 id="Example:_Getting_whole_characters" name="Example:_Getting_whole_characters">Пример: получение целых символов</h3> +<p>Следующий пример показывает, как обойти строку в цикле, каждый раз гарантированно получая целый символ, даже если строка содержит символы, не помещающиеся на Базовую многоязыковую плоскость (БМП).</p> +<pre class="brush: js">var str = 'A \uD87E\uDC04 Z'; // Также можно использовать не-БМП символы напрямую +for (var i = 0, chr; i < str.length; i++) { + if ((chr = getWholeChar(str, i)) === false) { + continue; + } + // Поместите эти строки в самое начало каждого цикла, передавая в функцию строку + // и текущую итерацию; возвращаемая переменная будут представлять + // отдельный символ + + console.log(chr); +} + +function getWholeChar(str, i) { + var code = str.charCodeAt(i); + + if (isNaN(code)) { + return ''; // Позиция не найдена + } + if (code < 0xD800 || code > 0xDFFF) { + return str.charAt(i); + } + + // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, + // чтобы трактовать старшую часть суррогатной пары в частной плоскости как + // одиночный символ) + if (0xD800 <= code && code <= 0xDBFF) { + if (str.length <= (i + 1)) { + throw 'Старшая часть суррогатной пары без следующей младшей'; + } + var next = str.charCodeAt(i + 1); + if (0xDC00 > next || next > 0xDFFF) { + throw 'Старшая часть суррогатной пары без следующей младшей'; + } + return str.charAt(i) + str.charAt(i + 1); + } + // Младшая часть суррогатной пары (0xDC00 <= code && code <= 0xDFFF) + if (i === 0) { + throw 'Младшая часть суррогатной пары без предшествующей старшей'; + } + var prev = str.charCodeAt(i - 1); + + // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую + // часть суррогатной пары в частной плоскости как одиночный символ) + if (0xD800 > prev || prev > 0xDBFF) { + throw 'Младшая часть суррогатной пары без предшествующей старшей'; + } + // Теперь мы можем пропустить младшую часть суррогатной пары, + // которую мы уже обработали + return false; +} +</pre> +<p>В среде, поддерживающей JavaScript 1.7+ (например, в Firefox), который позволяет деструктуризующее присваивание, можно использовать более лаконичную и более гибкую альтернативу в том смысле, что она автоматически увеличивает счётчик (если символ гарантированно является суррогатной парой).</p> +<pre class="brush: js">var str = 'A\uD87E\uDC04Z'; // Также можно использовать не-БМП символы напрямую +for (var i = 0, chr; i < str.length; i++) { + [chr, i] = getWholeCharAndI(str, i); + // Поместите эту строку в самое начало каждого цикла, передавая в функцию строку + // и текущую итерацию; возвращаемый массив будет содержать отдельный символ и + // новое значение счётчика цикла 'i' (изменится только при встрече суррогатной пары) + + console.log(chr); +} + +function getWholeCharAndI(str, i) { + var code = str.charCodeAt(i); + + if (isNaN(code)) { + return ''; // Позиция не найдена + } + if (code < 0xD800 || code > 0xDFFF) { + return [str.charAt(i), i]; // Обычный символ, оставляем переменную 'i' неизменной + } + + // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, + // чтобы трактовать старшую часть суррогатной пары в частной плоскости как + // одиночный символ) + if (0xD800 <= code && code <= 0xDBFF) { + if (str.length <= (i + 1)) { + throw 'Старшая часть суррогатной пары без следующей младшей'; + } + var next = str.charCodeAt(i + 1); + if (0xDC00 > next || next > 0xDFFF) { + throw 'Старшая часть суррогатной пары без следующей младшей'; + } + return [str.charAt(i) + str.charAt(i + 1), i + 1]; + } + // Младшая часть суррогатной пары (0xDC00 <= code && code <= 0xDFFF) + if (i === 0) { + throw 'Младшая часть суррогатной пары без предшествующей старшей'; + } + var prev = str.charCodeAt(i - 1); + + // (последнее число можно изменить на 0xDB7F, чтобы трактовать старшую + // часть суррогатной пары в частной плоскости как одиночный символ) + if (0xD800 > prev || prev > 0xDBFF) { + throw 'Младшая часть суррогатной пары без предшествующей старшей'; + } + // Возвращаем следующий символ (и увеличиваем счётчик) + return [str.charAt(i + 1), i + 1]; +} +</pre> + +<h3 id="Example:_Fixing_charAt_to_support_non-Basic-Multilingual-Plane_(BMP)_characters" name="Example:_Fixing_charAt_to_support_non-Basic-Multilingual-Plane_(BMP)_characters">Пример: добавление к методу <code>charAt()</code> поддержки символов не в Базовой многоязыковой плоскости (БМП)</h3> +<p>В то время как пример выше может быть более полезен тем, кто хочет поддерживать символы не в плоскости БМП (поскольку он не требует от вызывающей стороны знания о том, где может встретиться символ из не-БМП), в случае, если кто-то желает <em>выбирать</em> символы по индексу и трактовать суррогатную пару внутри строки как один символ, он может использовать следующий код:</p> +<pre class="brush: js">function fixedCharAt(str, idx) { + var ret = ''; + str += ''; + var end = str.length; + + var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + while ((surrogatePairs.exec(str)) != null) { + var li = surrogatePairs.lastIndex; + if (li - 2 < idx) { + idx++; + } else { + break; + } + } + + if (idx >= end || idx < 0) { + return ''; + } + + ret += str.charAt(idx); + + if (/[\uD800-\uDBFF]/.test(ret) && /[\uDC00-\uDFFF]/.test(str.charAt(idx + 1))) { + // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары + ret += str.charAt(idx + 1); + } + return ret; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.4', 'String.prototype.charAt')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.charat', 'String.prototype.charAt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("String.prototype.charCodeAt()")}}</li> + <li>{{jsxref("String.prototype.codePointAt()")}}</li> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("String.fromCodePoint()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html b/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html new file mode 100644 index 0000000000..d5c58899cf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/charcodeat/index.html @@ -0,0 +1,205 @@ +--- +title: String.prototype.charCodeAt() +slug: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +tags: + - JavaScript + - Method + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/charCodeAt +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>charCodeAt()</code></strong> возвращает числовое значение Юникода для символа по указанному индексу (за исключением кодовых точек Юникода, больших 0x10000).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.charCodeAt(<var>index</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>index</code></dt> + <dd>Целое число больше, либо равное 0 и меньше длины строки; если параметр не является числом, он устанавливается в 0.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Кодовые точки Юникода простираются в диапазоне от 0 до 1114111 (0x10FFFF). Первые 128 кодовых точек Юникода напрямую отображаются в кодировку ASCII. Информацию по Юникоду смотрите в <a href="/ru/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Unicode">Руководстве по JavaScript</a>.</p> + +<p>Обратите внимание, что метод <code>charCodeAt()</code> всегда возвращает значение, меньшее 65536. Так происходит потому, что большие кодовые точки представляются парой (меньших значений) «суррогатных» псевдо-символов, которые используются для составления настоящего символа. Поэтому для того, чтобы получить полный символ для значений символов от 65536 и выше, необходимо получить не только значение <code>charCodeAt(i)</code>, но также значение <code>charCodeAt(i + 1)</code> (как если бы строка состояла из двух букв). Смотрите второй и третий примеры ниже.</p> + +<p>Метод <code>charCodeAt()</code> возвращает {{jsxref("Global_Objects/NaN", "NaN")}}, если указанный индекс меньше нуля или больше длины строки.</p> + +<p>Обратная совместимость: в более старых версиях (например, в JavaScript 1.2) метод <code>charCodeAt()</code> возвращал число из кодировки ISO-Latin-1 по указанному индексу. Диапазон символов в кодировке ISO-Latin-1 простирается от 0 до 255. Первые 127 чисел напрямую отображаются в кодировку ASCII.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_charCodeAt" name="Example:_Using_charCodeAt">Пример: использование метода <code>charCodeAt()</code></h3> + +<p>В следующем примере возвращается число 65, значение Unicode для латинского символа «A».</p> + +<pre class="brush: js">'ABC'.charCodeAt(0); // вернёт 65 +</pre> + +<h3 id="Example:_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown" name="Example:_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_unknown">Пример: исправление метода <code>charCodeAt()</code> для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке неизвестно</h3> + +<p>Эта версия может использоваться в циклах for, даже когда неизвестно, были ли до указанной позиции символы из не-БМП.</p> + +<pre class="brush: js">function fixedCharCodeAt(str, idx) { + // например, fixedCharCodeAt('\uD800\uDC00', 0); // 65536 + // например, fixedCharCodeAt('\uD800\uDC00', 1); // false + idx = idx || 0; + var code = str.charCodeAt(idx); + var hi, low; + + // Старшая часть суррогатной пары (последнее число можно изменить на 0xDB7F, + // чтобы трактовать старшую часть суррогатной пары в частной плоскости как + // одиночный символ) + if (0xD800 <= code && code <= 0xDBFF) { + hi = code; + low = str.charCodeAt(idx + 1); + if (isNaN(low)) { + throw 'Старшая часть суррогатной пары без следующей младшей в fixedCharCodeAt()'; + } + return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000; + } + if (0xDC00 <= code && code <= 0xDFFF) { // Младшая часть суррогатной пары + // Мы возвращаем false, чтобы цикл пропустил эту итерацию, + // поскольку суррогатная пара + // уже обработана в предыдущей итерации + return false; + // hi = str.charCodeAt(idx - 1); + // low = code; + // return ((hi - 0xD800) * 0x400) + + // (low - 0xDC00) + 0x10000; + } + return code; +} +</pre> + +<h3 id="Example:_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_known" name="Example:_Fixing_charCodeAt_to_handle_non-Basic-Multilingual-Plane_characters_if_their_presence_earlier_in_the_string_is_known">Пример: исправление метода <code>charCodeAt()</code> для обработки символов не в Базовой многоязыковой плоскости, если их предыдущее присутствие в строке известно</h3> + +<pre class="brush: js">function knownCharCodeAt(str, idx) { + str += ''; + var code, + end = str.length; + + var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + while ((surrogatePairs.exec(str)) != null) { + var li = surrogatePairs.lastIndex; + if (li - 2 < idx) { + idx++; + } + else { + break; + } + } + + if (idx >= end || idx < 0) { + return NaN; + } + + code = str.charCodeAt(idx); + + var hi, low; + if (0xD800 <= code && code <= 0xDBFF) { + hi = code; + low = str.charCodeAt(idx + 1); + // Перешагиваем через один, поскольку один «символ» является частью суррогатной пары + return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000; + } + return code; +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.5', 'String.prototype.charCodeAt')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.charcodeat', 'String.prototype.charCodeAt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.fromCharCode()")}}</li> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.fromCodePoint()")}}</li> + <li>{{jsxref("String.prototype.codePointAt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html b/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html new file mode 100644 index 0000000000..db2b8a4e19 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/codepointat/index.html @@ -0,0 +1,174 @@ +--- +title: String.prototype.codePointAt() +slug: Web/JavaScript/Reference/Global_Objects/String/codePointAt +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/codePointAt +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>codePointAt()</code></strong> возвращает неотрицательное целое число, являющееся закодированным в UTF-16 значением кодовой точки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.codePointAt(<var>pos</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>pos</code></dt> + <dd>Позиция элемента в строке, чья кодовоя точка возвращается функцией.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если на указанной позиции нет элементов, будет возвращено значение {{jsxref("Global_Objects/undefined", "undefined")}}. Если суррогатная пара UTF-16 не начинается в позиции <code>pos</code>, будет возвращено кодовое значение в позиции <code>pos</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_codePointAt" name="Example:_Using_codePointAt">Пример: использование метода <code>codePointAt()</code></h3> + +<pre class="brush: js">'ABC'.codePointAt(1); // 66 +'\uD800\uDC00'.codePointAt(0); // 65536 + +'XYZ'.codePointAt(42); // undefined +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Следующий полифилл расширяет прототип строки определённой в ECMAScript 6 функцией <code>codePointAt()</code>, если браузер не имеет её родной поддержки.</p> + +<pre class="brush: js">/*! http://mths.be/codepointat v0.1.0 от @mathias */ +if (!String.prototype.codePointAt) { + (function() { + 'use strict'; // необходимо для поддержки методов `apply`/`call` с `undefined`/`null` + var codePointAt = function(position) { + if (this == null) { + throw TypeError(); + } + var string = String(this); + var size = string.length; + // `ToInteger` + var index = position ? Number(position) : 0; + if (index != index) { // лучше, чем `isNaN` + index = 0; + } + // Проверяем выход индекса за границы строки + if (index < 0 || index >= size) { + return undefined; + } + // Получаем первое кодовое значение + var first = string.charCodeAt(index); + var second; + if ( // проверяем, не начинает ли оно суррогатную пару + first >= 0xD800 && first <= 0xDBFF && // старшая часть суррогатной пары + size > index + 1 // следующее кодовое значение + ) { + second = string.charCodeAt(index + 1); + if (second >= 0xDC00 && second <= 0xDFFF) { // младшая часть суррогатной пары + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + } + } + return first; + }; + if (Object.defineProperty) { + Object.defineProperty(String.prototype, 'codePointAt', { + 'value': codePointAt, + 'configurable': true, + 'writable': true + }); + } else { + String.prototype.codePointAt = codePointAt; + } + }()); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.codepointat', 'String.prototype.codePointAt')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("41")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>11 на Windows 10 Preview</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("29")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.fromCodePoint()")}}</li> + <li>{{jsxref("String.fromCharCode()")}}</li> + <li>{{jsxref("String.prototype.charCodeAt()")}}</li> + <li>{{jsxref("String.prototype.charAt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/concat/index.html b/files/ru/web/javascript/reference/global_objects/string/concat/index.html new file mode 100644 index 0000000000..b8df563087 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/concat/index.html @@ -0,0 +1,121 @@ +--- +title: String.prototype.concat() +slug: Web/JavaScript/Reference/Global_Objects/String/concat +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/concat +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>concat()</code></strong> объединяет текст из двух или более строк и возвращает новую строку.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.concat(<var>string2</var>, <var>string3</var>[, ..., <var>stringN</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>string2...string<em>N</em></code></dt> + <dd>Строки, объединяемые в эту строку.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>concat()</code> объединяет текст из двух или более строк и возвращает новую строку. Изменения в тексте в одной строке не затрагивают остальные строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_concat" name="Example:_Using_concat">Пример: использование метода <code>concat()</code></h3> +<p>В следующем примере несколько строк объединяются в одну.</p> +<pre class="brush: js">var hello = 'Привет, '; +console.log(hello.concat('Кевин', ', удачного дня.')); + +/* Привет, Кевин, удачного дня. */ +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> +<p>Настоятельно рекомендуется вместо метода <code>concat()</code> использовать {{jsxref("Operators/Assignment_Operators", "операторы присваивания", "", 1)}} (<code>+</code>, <code>+=</code>). Смотрите это <a href="http://jsperf.com/concat-vs-plus-vs-join">сравнение производительности</a>.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.6', 'String.prototype.concat')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.concat', 'String.prototype.concat')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Array.prototype.concat()")}}</li> + <li>{{jsxref("Operators/Assignment_Operators", "Операторы присваивания", "", 1)}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/endswith/index.html b/files/ru/web/javascript/reference/global_objects/string/endswith/index.html new file mode 100644 index 0000000000..f2f6aa5c2c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/endswith/index.html @@ -0,0 +1,145 @@ +--- +title: String.prototype.endsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/endsWith +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/endsWith +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>endsWith()</code></strong> позволяет определить, заканчивается ли строка символами указанными в скобках, возвращая, соотвественно, <code>true</code> или <code>false</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>str</var>.endsWith(<var>searchString</var>[, <var>length</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchString</code></dt> + <dd>Символы, искомые в конце строки.</dd> + <dt><code><var>length</var></code></dt> + <dd>Необязательный параметр. Позволяет искать внутри строки, обрезая её по диапазону; по умолчанию равен длине строки.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><strong><code>true</code></strong> если данные символы находятся в конце строки; в противном случае, <strong><code>false</code></strong>.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод позволяет определять, заканчивается ли строка искомыми символами. Метод чувствителен к регистру.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_endsWith" name="Example:_Using_endsWith">Пример: использование метода <code>endsWith()</code></h3> + +<pre class="brush: js notranslate">var str = 'Быть или не быть, вот в чём вопрос.'; + +console.log(str.endsWith('вопрос.')); // true +console.log(str.endsWith('быть')); // false +console.log(str.endsWith('быть', 16)); // true +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был добавлен к спецификации ECMAScript 6 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:</p> + +<pre class="brush: js notranslate">if (!String.prototype.endsWith) { + Object.defineProperty(String.prototype, 'endsWith', { + value: function(searchString, position) { + var subjectString = this.toString(); + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + } + }); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.endswith', 'String.prototype.endsWith')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("41")}}</td> + <td>{{CompatGeckoDesktop("17")}}</td> + <td>12</td> + <td>{{CompatNo}}</td> + <td>{{CompatSafari("9")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("36")}}</td> + <td>{{CompatGeckoMobile("17")}}</td> + <td>12</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.startsWith()")}} {{experimental_inline}}</li> + <li>{{jsxref("String.prototype.contains()")}} {{experimental_inline}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/fixed/index.html b/files/ru/web/javascript/reference/global_objects/string/fixed/index.html new file mode 100644 index 0000000000..8f3feae555 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fixed/index.html @@ -0,0 +1,108 @@ +--- +title: String.prototype.fixed() +slug: Web/JavaScript/Reference/Global_Objects/String/fixed +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fixed +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>fixed()</code></strong> создаёт HTML-элемент {{HTMLElement("tt")}}, заставляющий строку отображаться моноширинным шрифтом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.fixed()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>fixed()</code> заключает строку в тег <code><tt></code>: <code>"<tt>str</tt>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_fixed" name="Example:_Using_fixed">Пример: использование метода <code>fixed()</code></h3> +<p>В следующем примере для изменения форматирования строки используется метод <code>fixed()</code>:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +document.write(worldString.fixed()); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html"><tt>Привет, мир</tt> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.fixed', 'String.prototype.fixed')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.bold()")}}</li> + <li>{{jsxref("String.prototype.italics()")}}</li> + <li>{{jsxref("String.prototype.strike()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html b/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html new file mode 100644 index 0000000000..549d0e2b54 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fontcolor/index.html @@ -0,0 +1,119 @@ +--- +title: String.prototype.fontcolor() +slug: Web/JavaScript/Reference/Global_Objects/String/fontcolor +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontcolor +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>fontcolor()</code></strong> создаёт HTML-элемент {{HTMLElement("font")}}, заставляющий строку отображаться шрифтом указанного цвета.</p> +<div class="note"> + <p><strong>Примечание по использованию:</strong> элемент <font> был удалён из <a href="/ru/docs/Web/Guide/HTML/HTML5">HTML5</a> и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства <a href="/ru/docs/Web/CSS">CSS</a>.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.fontcolor(<var>color</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>color</code></dt> + <dd>Строка, выражающая цвет в виде шестнадцатеричного триплета RGB, либо в виде названия цвета. Названия цветов перечислены в <a href="/ru/docs/Web/CSS/color_value">справочнике по значению цвета в CSS</a>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Ксли вы выразили цвет в виде шестнадцатеричного триплета RGB, вы должны использовать формат <code>rrggbb</code>. Например, шестнадцатеричные значения RGB для оранжево-розового цвета такие: красный=FA, зелёный=80 и синий=72, так что RGB-триплет для оранжево-розового цвета будет следующим <code>"FA8072"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_fontcolor" name="Example:_Using_fontcolor">Пример: использование метода <code>fontcolor()</code></h3> +<p>В следующем примере метод <code>fontcolor()</code> используется для изменения цвета строки путём генерирования строки с HTML-тегом <code><font></code>.</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +console.log(worldString.fontcolor('red') + ' на этой строке красный'); +// '<font color="red">Привет, мир</font> на этой строке красный' + +console.log(worldString.fontcolor('FF00') + ' на этой строке красный в шестнадцатеричной форме'); +// '<font color="FF00">Привет, мир</font> на этой строке красный в шестнадцатеричной форме' +</pre> +<p>При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута <code>style</code> элемента и управлять им более обобщённым способом, например:</p> +<pre class="brush: js">document.getElementById('yourElemId').style.color = 'red'; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.fontcolor', 'String.prototype.fontcolor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.fontsize()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html b/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html new file mode 100644 index 0000000000..3ed48133c3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fontsize/index.html @@ -0,0 +1,118 @@ +--- +title: String.prototype.fontsize() +slug: Web/JavaScript/Reference/Global_Objects/String/fontsize +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/fontsize +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>fontsize()</code></strong> создаёт HTML-элемент {{HTMLElement("font")}}, заставляющий строку отображаться шрифтом указанного размера.</p> +<div class="note"> + <p><strong>Примечание по использованию:</strong> элемент <font> был удалён из <a href="/ru/docs/Web/Guide/HTML/HTML5">HTML5</a> и больше не должен использоваться. Вместо него веб-разработчикам следует использовать свойства <a href="/ru/docs/Web/CSS">CSS</a>.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.fontsize(<var>size</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>size</code></dt> + <dd>Целое число от 1 до 7, либо строка с целым числом со знаком по модулю от 1 до 7.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>При задании размера в виде целого числа, вы устанавливаете размер шрифта строки <code>str</code> в один из 7 предопределённых размеров. При задании размера в виде строки, например, "-2", вы задаёте размер шрифта строки <code>str</code> относительно размера, установленного тегом {{HTMLElement("basefont")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_fontsize" name="Example:_Using_fontsize">Пример: использование метода <code>fontsize()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +console.log(worldString.small()); // <small>Привет, мир</small> +console.log(worldString.big()); // <big>Привет, мир</big> +console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize> +</pre> +<p>При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута <code>style</code> элемента и управлять им более обобщённым способом, например:</p> +<pre class="brush: js">document.getElementById('yourElemId').style.fontSize = '0.7em'; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.fontsize', 'String.prototype.fontsize')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.big()")}}</li> + <li>{{jsxref("String.prototype.small()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html b/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html new file mode 100644 index 0000000000..04e5c26ada --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fromcharcode/index.html @@ -0,0 +1,138 @@ +--- +title: String.fromCharCode() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +tags: + - JavaScript + - Method + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCharCode +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Статический метод <strong><code>String.fromCharCode()</code></strong> возвращает строку, созданную из указанной последовательности значений единиц кода UTF-16.</p> + +<p>. </p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>String.fromCharCode(<var>num1</var>[, ...[, <var>numN</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>num1, ..., num<em>N</em></code></dt> + <dd>Последовательность чисел, являющихся значениями единиц кода UTF-16. <span style="font-size: 1rem; letter-spacing: -0.00278rem;">Диапазон составляет от 0 до 65535 (0xFFFF). Числа больше 0xFFFF усекаются. Проверка достоверности не производится.</span></dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод возвращает примитивную строку, а не объект {{jsxref("Global_Objects/String", "String")}}.</p> + +<p>Поскольку метод <code>fromCharCode()</code> является статическим методом объекта {{jsxref("Global_Objects/String", "String")}}, вы всегда должны использовать его как <code>String.fromCharCode()</code>, а не как метод созданного вами экземпляра {{jsxref("Global_Objects/String", "String")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_fromCharCode" name="Example:_Using_fromCharCode">Пример: использование метода <code>fromCharCode()</code></h3> + +<p>Следующий пример вернёт строку "ABC".</p> + +<pre class="brush: js">String.fromCharCode(65, 66, 67); // "ABC" +</pre> + +<p dir="ltr" id="tw-target-text"><a href="https://asecuritysite.com/coding/asc2">Полная таблица UTF-16</a></p> + +<h2 id="Getting_it_to_work_with_higher_values" name="Getting_it_to_work_with_higher_values">Как заставить его работать с большими значениями</h2> + +<p>Хотя большинство распространённых значений Юникода может быть представлено одним 16-битным числом (как ожидалось на ранней стадии стандартизации JavaScript) и метод <code>fromCharCode()</code> может использоваться для возврата одного символа для самых распространённых значений (точнее, значений UCS-2, которые являются подмножеством самых распространённых символов UTF-16), для работы со ВСЕМИ допустимыми значениями Юникода (занимающими до 21 бита) одного метода <code>fromCharCode()</code> недостаточно. Поскольку большие кодовые точки используют (самое меньшее) два «суррогатных» числа для представления одного символа, для возврата таких пар можно использовать метод {{jsxref("String.fromCodePoint()")}} (являющийся частью черновика ES6) и, таким образом, адекватно представлять эти символы.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.3.2', 'StringfromCharCode')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.fromcharcodes', 'String.fromCharCode')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.fromCodePoint()")}}</li> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.charCodeAt()")}}</li> + <li>{{jsxref("String.prototype.codePointAt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html b/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html new file mode 100644 index 0000000000..6f4cde3a52 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/fromcodepoint/index.html @@ -0,0 +1,213 @@ +--- +title: String.fromCodePoint() +slug: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/fromCodePoint +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Статический метод <strong><code>String.fromCodePoint()</code></strong> возвращает строку, созданную из указанной последовательности кодовых точек.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>String.fromCodePoint(<var>num1</var>[, ...[, <var>numN</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>num1, ..., num<em>N</em></code></dt> + <dd>Последовательность кодовых точек.</dd> +</dl> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Исключение {{jsxref("Global_Objects/RangeError", "RangeError")}} выбрасывается в случае, если методу предоставлена неверная кодовая точка Юникода (например, "RangeError: NaN is not a valid code point").</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Поскольку метод <code>fromCodePoint()</code> является статическим методом объекта {{jsxref("Global_Objects/String", "String")}}, вы всегда должны использовать его как <code>String.fromCodePoint()</code>, а не как метод созданного вами экземпляра {{jsxref("Global_Objects/String", "String")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_fromCharCode" name="Example:_Using_fromCharCode">Пример: использование метода <code>fromCodePoint()</code></h3> + +<pre class="brush: js">String.fromCodePoint(42); // "*" +String.fromCodePoint(65, 90); // "AZ" +String.fromCodePoint(0x404); // "\u0404" +String.fromCodePoint(0x2F804); // "\uD87E\uDC04" +String.fromCodePoint(194564); // "\uD87E\uDC04" +String.fromCodePoint(0x1D306, 0x61, 0x1D307) // "\uD834\uDF06a\uD834\uDF07" + +String.fromCodePoint('_'); // RangeError +String.fromCodePoint(Infinity); // RangeError +String.fromCodePoint(-1); // RangeError +String.fromCodePoint(3.14); // RangeError +String.fromCodePoint(3e-2); // RangeError +String.fromCodePoint(NaN); // RangeError +</pre> + +<pre class="brush: js">// Метод String.fromCharCode() не может вернуть символ по такой большой кодовой точке +// Следующий же метод может вернуть 4-байтный символ так же, как и обычный +// 2-байтный (то есть, он может вернуть один символ, который на самом деле +// имеет длину 2, а не 1!) +console.log(String.fromCodePoint(0x2F804)); // или 194564 в десятичной записи +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Метод <code>String.fromCodePoint()</code> был добавлен к стандарту ECMAScript в 6-й версии и может поддерживаться ещё не во всех браузерах или окружениях. Используйте код ниже в качестве полифилла:</p> + +<pre class="brush: js">/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */ +if (!String.fromCodePoint) { + (function() { + var defineProperty = (function() { + // IE 8 поддерживает метод `Object.defineProperty` только на элементах DOM + try { + var object = {}; + var $defineProperty = Object.defineProperty; + var result = $defineProperty(object, object, object) && $defineProperty; + } catch(error) {} + return result; + }()); + var stringFromCharCode = String.fromCharCode; + var floor = Math.floor; + var fromCodePoint = function() { + var MAX_SIZE = 0x4000; + var codeUnits = []; + var highSurrogate; + var lowSurrogate; + var index = -1; + var length = arguments.length; + if (!length) { + return ''; + } + var result = ''; + while (++index < length) { + var codePoint = Number(arguments[index]); + if ( + !isFinite(codePoint) || // `NaN`, `+Infinity` или `-Infinity` + codePoint < 0 || // неверная кодовая точка Юникода + codePoint > 0x10FFFF || // неверная кодовая точка Юникода + floor(codePoint) != codePoint // не целое число + ) { + throw RangeError('Invalid code point: ' + codePoint); + } + if (codePoint <= 0xFFFF) { // кодовая точка Базовой многоязыковой плоскости (БМП) + codeUnits.push(codePoint); + } else { // Астральная кодовая точка; делим её на суррогатную пару + // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + codePoint -= 0x10000; + highSurrogate = (codePoint >> 10) + 0xD800; + lowSurrogate = (codePoint % 0x400) + 0xDC00; + codeUnits.push(highSurrogate, lowSurrogate); + } + if (index + 1 == length || codeUnits.length > MAX_SIZE) { + result += stringFromCharCode.apply(null, codeUnits); + codeUnits.length = 0; + } + } + return result; + }; + if (defineProperty) { + defineProperty(String, 'fromCodePoint', { + 'value': fromCodePoint, + 'configurable': true, + 'writable': true + }); + } else { + String.fromCodePoint = fromCodePoint; + } + }()); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.fromcodepoint', 'String.fromCodePoint')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("41")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("29")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.fromCharCode()")}}</li> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.codePointAt()")}}</li> + <li>{{jsxref("String.prototype.charCodeAt()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/includes/index.html b/files/ru/web/javascript/reference/global_objects/string/includes/index.html new file mode 100644 index 0000000000..a766377bb8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/includes/index.html @@ -0,0 +1,127 @@ +--- +title: String.prototype.includes() +slug: Web/JavaScript/Reference/Global_Objects/String/includes +tags: + - JavaScript + - Prototype + - Reference + - String + - метод +translation_of: Web/JavaScript/Reference/Global_Objects/String/includes +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>includes()</code></strong> проверяет, содержит ли строка заданную подстроку, и возвращает, соответственно <code>true</code> или <code>false</code>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.includes(<var>searchString</var>[, <var>position</var>])</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>searchString</code></dt> + <dd>Строка для поиска в данной строке.</dd> + <dt><code>position</code> {{optional_inline}}</dt> + <dd>Позиция в строке, с которой начинать поиск строки <code>searchString</code>, по умолчанию 0.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p><strong><code>true</code></strong>, если искомая строка была найдена в данной строке; иначе <strong><code>false</code></strong>.</p> + +<h2 id="Описание">Описание</h2> + +<p>Этот метод позволяет вам определять, содержит ли строка другую строку.</p> + +<h3 id="Чувствительность_к_регистру_символов">Чувствительность к регистру символов</h3> + +<p>Метод <code>includes()</code> является регистрозависимым. Например, следующее выражение вернёт <code>false</code>:</p> + +<pre class="brush: js">'Синий кит'.includes('синий'); // вернёт false +</pre> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_includes()">Использование <code>includes()</code></h3> + +<pre class="brush: js">var str = 'Быть или не быть вот в чём вопрос.'; + +console.log(str.includes('Быть')); // true +console.log(str.includes('вопрос')); // true +console.log(str.includes('несуществующий')); // false +console.log(str.includes('Быть', 1)); // false +console.log(str.includes('БЫТЬ')); // false +</pre> + +<h2 id="Полифилл">Полифилл</h2> + +<p>Этот метод был добавлен в спецификации ECMAScript 2015 и может быть недоступен в некоторых реализациях JavaScript. Однако, можно легко эмулировать этот метод:</p> + +<pre class="brush: js">if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + 'use strict'; + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; +} + +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.includes', 'String.prototype.includes')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.includes', 'String.prototype.includes')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{Compat("javascript.builtins.String.includes")}}</p> + +<h2 id="String.prototype.contains">String.prototype.contains</h2> + +<p> </p> + +<p>В Firefox с версии 18 по версию 39, этот метод назывался «contains». Он был переименован в «includes» в замечании {{bug(1102219)}} по следующей причине:</p> + +<p>Как было <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=789036">сообщено</a>, некоторые сайты, использующие MooTools 1.2, ломаются в Firefox 17. Эта версия MooTools проверяет существование метода <code>String.prototype.contains()</code> и, если он не существует, добавляет свой собственный. С введением этого метода в Firefox 17, поведение этой проверки изменилось таким образом, что реализация <code>String.prototype.contains()</code>, основанная на MooTools, сломалась. В результате это изменение было <a href="https://hg.mozilla.org/releases/mozilla-aurora/rev/086db97198a8">отключено</a> в Firefox 17. Метод <code>String.prototype.contains()</code> доступен в следующей версии Firefox — Firefox 18.</p> + +<p>MooTools 1.3 принудительно использует свою собственную версию метода <code>String.prototype.contains()</code>, так что использующие его веб-сайты не должны ломаться. Тем не менее, следует отметить, что <a href="http://mootools.net/core/docs/1.3.2/Types/String#String-method:-contains">сигнатура метода в MooTools 1.3</a> отличается от сигнатуры метода в ECMAScript 2015 (во втором аргументе). <a href="https://github.com/mootools/mootools-core/blob/master/Docs/Types/String.md#note">В MooTools 1.5+ сигнатура изменена для соответствия стандарту ES2015.</a></p> + +<p> </p> + +<p>В Firefox 48, метод <code>String.prototype.contains()</code> был удалён. Следует использовать только <code>String.prototype.includes()</code>.</p> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Array.prototype.includes()")}} {{experimental_inline}}</li> + <li>{{jsxref("TypedArray.prototype.includes()")}} {{experimental_inline}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("String.prototype.startsWith()")}}</li> + <li>{{jsxref("String.prototype.endsWith()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/index.html b/files/ru/web/javascript/reference/global_objects/string/index.html new file mode 100644 index 0000000000..887272aab2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/index.html @@ -0,0 +1,301 @@ +--- +title: String +slug: Web/JavaScript/Reference/Global_Objects/String +tags: + - JavaScript + - NeedsUpdate + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<p>Объект <strong><code>String</code></strong> используется, чтобы представить и конструировать последовательность символов.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<p>Строковые литералы могут быть следующих форм:</p> + +<pre class="syntaxbox notranslate"><code>'строка текста' +"строка текста" +"中文 español English हिन्दी العربية português বাংলা русский 日本語 ਪੰਜਾਬੀ 한국어 தமிழ்" +</code></pre> + +<p>Кроме регулярных печатных символов можно использовать специальные символы, которые можно закодировать, используя нотацию escape-последовательностей:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Код</th> + <th scope="col">Вывод</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>\0</code></td> + <td>нулевой символ (символ NUL)</td> + </tr> + <tr> + <td><code>\'</code></td> + <td>одинарная кавычка</td> + </tr> + <tr> + <td><code>\"</code></td> + <td>двойная кавычка</td> + </tr> + <tr> + <td><code>\\</code></td> + <td>обратный слэш</td> + </tr> + <tr> + <td><code>\n</code></td> + <td>новая строка</td> + </tr> + <tr> + <td><code>\r</code></td> + <td>возврат каретки</td> + </tr> + <tr> + <td><code>\v</code></td> + <td>вертикальная табуляция</td> + </tr> + <tr> + <td><code>\t</code></td> + <td>табуляция</td> + </tr> + <tr> + <td><code>\b</code></td> + <td>забой</td> + </tr> + <tr> + <td><code>\f</code></td> + <td>подача страницы</td> + </tr> + <tr> + <td><code>\uXXXX</code></td> + <td>кодовая точка Юникода</td> + </tr> + <tr> + <td><code>\xXX</code></td> + <td>символ из кодировки Latin-1</td> + </tr> + </tbody> +</table> + +<p>Либо можно использовать глобальный объект <code>String</code> напрямую:</p> + +<pre class="syntaxbox notranslate"><code>String(thing) +new String(thing) +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>thing</code></dt> + <dd>Всё, что может быть преобразовано в строку.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Строки полезны для хранения данных, которые можно представить в текстовой форме. Некоторые из наиболее частых операций со строками — это проверка их {{jsxref("String.length", "длины", "", 1)}}, построение строки с помощью <a href="/ru/docs/Web/JavaScript/Reference/Operators/String_Operators">операций строковой конкатенации + и +=</a>, проверка на существование или местоположение подстрок с помощью метода {{jsxref("String.prototype.indexOf()", "indexOf()")}}, либо извлечение подстрок с помощью метода {{jsxref("String.prototype.substring()", "substring()")}}.</p> + +<h3 id="Character_access" name="Character_access">Доступ к символам</h3> + +<p>Существует два способа добраться до конкретного символа в строке. В первом способе используется метод {{jsxref("String.prototype.charAt()", "charAt()")}}:</p> + +<pre class="brush: js notranslate">return 'кот'.charAt(1); // вернёт "о" +</pre> + +<p>Другим способом (введённым в ECMAScript 5) является рассмотрение строки как массивоподобного объекта, в котором символы имеют соответствующие числовые индексы:</p> + +<pre class="brush: js notranslate">return 'кот'[1]; // вернёт "о" +</pre> + +<p>При доступе к символам посредством нотации с квадратными скобками, попытка удалить символ, или присвоить значение числовому свойству закончится неудачей, поскольку эти свойства являются незаписываемыми и ненастраиваемыми. Смотрите документацию по методу {{jsxref("Object.defineProperty()")}} для дополнительной информации.</p> + +<h3 id="Comparing_strings" name="Comparing_strings">Сравнение строк</h3> + +<p>Разработчики на C имеют для сравнения строк функцию <code>strcmp()</code>. В JavaScript вы просто используете <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B_%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F">операторы меньше и больше</a>:</p> + +<pre class="brush: js notranslate">var a = 'a'; +var b = 'b'; +if (a < b) { // true + print(a + ' меньше чем ' + b); +} else if (a > b) { + print(a + ' больше чем ' + b); +} else { + print(a + ' и ' + b + ' равны.'); +} +</pre> + +<p>Подобный результат также может быть достигнут путём использования метода {{jsxref("String.prototype.localeCompare()", "localeCompare()")}}, имеющегося у всех экземпляров <code>String</code>.</p> + +<h3 id="Distinction_between_string_primitives_and_String_objects" name="Distinction_between_string_primitives_and_String_objects">Разница между строковыми примитивами и объектами <code>String</code></h3> + +<p>Обратите внимание, что JavaScript различает объекты <code>String</code> и значения строкового примитива (то же самое верно и для объектов {{jsxref("Global_Objects/Boolean", "Boolean")}} и {{jsxref("Global_Objects/Number", "Number")}}).</p> + +<p>Строковые литералы (обозначаемые двойными или одинарными кавычками) и строки, возвращённые вызовом <code>String</code> в неконструкторном контексте (то есть, без использования ключевого слова {{jsxref("Operators/new", "new")}}) являются строковыми примитивами. JavaScript автоматически преобразует примитивы в объекты <code>String</code>, так что на строковых примитивах возможно использовать методы объекта <code>String</code>. В контекстах, когда на примитивной строке вызывается метод или происходит поиск свойства, JavaScript автоматически оборачивает строковый примитив объектом и вызывает на нём метод или ищет в нём свойство.</p> + +<pre class="brush: js notranslate">var s_prim = 'foo'; +var s_obj = new String(s_prim); + +console.log(typeof s_prim); // выведет 'string' +console.log(typeof s_obj); // выведет 'object' +</pre> + +<p>Строковые примитивы и объекты <code>String</code> также дают разные результаты при использовании глобальной функции {{jsxref("Global_Objects/eval", "eval()")}}. Примитивы, передаваемые в <code>eval()</code>, трактуются как исходный код; объекты же <code>String</code> трактуются так же, как и все остальные объекты, а именно: возвращается сам объект. Например:</p> + +<pre class="brush: js notranslate">var s1 = '2 + 2'; // создаёт строковый примитив +var s2 = new String('2 + 2'); // создаёт объект String +console.log(eval(s1)); // выведет число 4 +console.log(eval(s2)); // выведет строку '2 + 2' +</pre> + +<p>По этим причинам код может сломаться, если он получает объекты <code>String</code>, а ожидает строковые примитивы, хотя в общем случае вам не нужно беспокоиться о различиях между ними.</p> + +<p>Объект <code>String</code> также всегда может быть преобразован в его примитивный аналог при помощи метода {{jsxref("String.prototype.valueOf()", "valueOf()")}}.</p> + +<pre class="brush: js notranslate">console.log(eval(s2.valueOf())); // выведет число 4 +</pre> + +<div class="note"><strong>Примечание:</strong> для того, чтобы узнать больше о другом возможном подходе к строкам в JavaScript, прочитайте статью о <a href="/ru/Add-ons/Code_snippets/StringView"><code>StringView</code> — C-подобном представлении строк на основе типизирванных массивов</a>.</div> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("String.prototype")}}</dt> + <dd>Позволяет добавлять свойства к объекту <code>String</code>.</dd> +</dl> + +<div>{{jsOverrides("Function", "Properties", "prototype")}}</div> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("String.fromCharCode()")}}</dt> + <dd>Возвращает строку, созданную из указанной последовательности значений Юникода.</dd> + <dt>{{jsxref("String.fromCodePoint()")}} {{experimental_inline}}</dt> + <dd>Возвращает строку, созданную из указанной последовательности кодовых точек Юникода.</dd> + <dt>{{jsxref("String.raw()")}} {{experimental_inline}}</dt> + <dd>Возвращает строку, созданную из сырой шаблонной строки.</dd> +</dl> + +<div>{{jsOverrides("Function", "Methods", "fromCharCode", "fromCodePoint", "raw")}}</div> + +<h2 id="String_generic_methods" name="String_generic_methods">Общие методы объекта <code>String</code></h2> + +<p>Методы экземпляров <code>String</code> также доступны в Firefox как часть JavaScript 1.6 (который не является частью стандарта ECMAScript) на объекте <code>String</code>, что позволяет применять эти методы к любому объекту:</p> + +<pre class="brush: js notranslate">var num = 15; +console.log(String.replace(num, /5/, '2')); +</pre> + +<p>{{jsxref("Global_Objects/Array", "Общие методы", "#Array_generic_methods", 1)}} также доступны для объекта {{jsxref("Global_Objects/Array", "Array")}}.</p> + +<p>Следующая прослойка позволяет использовать их во всех браузерах:</p> + +<pre class="brush: js notranslate">/*globals define*/ +// Предполагаем, что все требуемые методы экземпляров String уже присутствуют +// (для них так же можно использовать полифиллы, если их нет) +(function() { + 'use strict'; + + var i, + // Мы могли построить массив методов следующим образом, однако метод + // getOwnPropertyNames() нельзя реализовать на JavaScript: + // Object.getOwnPropertyNames(String).filter(function(methodName) { + // return typeof String[methodName] === 'function'; + // }); + methods = [ + 'quote', 'substring', 'toLowerCase', 'toUpperCase', 'charAt', + 'charCodeAt', 'indexOf', 'lastIndexOf', 'startsWith', 'endsWith', + 'trim', 'trimLeft', 'trimRight', 'toLocaleLowerCase', + 'toLocaleUpperCase', 'localeCompare', 'match', 'search', + 'replace', 'split', 'substr', 'concat', 'slice' + ], + methodCount = methods.length, + assignStringGeneric = function(methodName) { + var method = String.prototype[methodName]; + String[methodName] = function(arg1) { + return method.apply(arg1, Array.prototype.slice.call(arguments, 1)); + }; + }; + + for (i = 0; i < methodCount; i++) { + assignStringGeneric(methods[i]); + } +}()); +</pre> + +<h2 id="String_instances" name="String_instances">Экземпляры объекта <code>String</code></h2> + +<h3 id="Properties_of_String_instance" name="Properties_of_String_instance">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_String_instance" name="Methods_of_String_instance">Методы</h3> + +<h4 id="Methods_unrelated_to_HTML" name="Methods_unrelated_to_HTML">Методы, не относящиеся к HTML</h4> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'Methods_unrelated_to_HTML')}}</div> + +<h4 id="HTML_wrapper_methods" name="HTML_wrapper_methods">Методы-обёртки HTML</h4> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/String/prototype', 'HTML_wrapper_methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_String_conversion" name="Example:_String_conversion">Пример: преобразование в строку</h3> + +<p>Объект <code>String</code> можно использовать как «безопасную» альтернативу методу {{jsxref("String.prototype.toString()", "toString()")}}, так как хотя он обычно и вызывает соответствующий метод <code>toString()</code>, он также работает и для значений {{jsxref("Global_Objects/null", "null")}} и {{jsxref("Global_Objects/undefined", "undefined")}}. Например:</p> + +<pre class="brush: js notranslate">var outputStrings = []; +for (var i = 0, n = inputValues.length; i < n; ++i) { + outputStrings.push(String(inputValues[i])); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5', 'String')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string-objects', 'String')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.String",2)}}</p> + +<div></div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{domxref("DOMString")}}</li> + <li><a href="/ru/Add-ons/Code_snippets/StringView"><code>StringView</code> — C-подобное представление строк на основе типизированных массивов</a></li> + <li><a href="/ru/docs/Web/API/DOMString/Binary">Двоичные строки</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/indexof/index.html b/files/ru/web/javascript/reference/global_objects/string/indexof/index.html new file mode 100644 index 0000000000..2b91bdc97a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/indexof/index.html @@ -0,0 +1,194 @@ +--- +title: String.prototype.indexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/indexOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/indexOf +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>indexOf()</code></strong> возвращает индекс первого вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, начиная с индекса <code>fromIndex</code>. Возвращает -1, если значение не найдено.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.indexOf(<var>searchValue</var>, [<var>fromIndex</var>]</code>)</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchValue</code></dt> + <dd>Строка, представляющая искомое значение.</dd> + <dt><code>fromIndex</code></dt> + <dd>Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если <code>fromIndex < 0</code>, поиск ведётся по всей строке (так же, как если бы был передан 0). Если <code>fromIndex >= str.length</code>, метод вернёт -1, но только в том случае, если <code>searchValue</code> не равен пустой строке, в этом случае он вернёт <code>str.length</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке <code>stringName</code> равен <code>stringName.length - 1</code>.</p> + +<pre class="brush: js">'Синий кит'.indexOf('Синий'); // вернёт 0 +'Синий кит'.indexOf('Голубой'); // вернёт -1 +'Синий кит'.indexOf('кит', 0); // вернёт 6 +'Синий кит'.indexOf('кит', 5); // вернёт 6 +'Синий кит'.indexOf('', 8); // вернёт 8 +'Синий кит'.indexOf('', 9); // вернёт 9 +'Синий кит'.indexOf('', 10); // вернёт 9 +</pre> + +<h3 id="Case-sensitivity" name="Case-sensitivity">Регистрозависимость</h3> + +<p>Метод <code>indexOf()</code> является регистрозависимым. Например, следующее выражение вернёт -1:</p> + +<pre class="brush: js">'Синий кит'.indexOf('синий'); // вернёт -1 +</pre> + +<h3 id="Checking_occurrences" name="Checking_occurrences">Проверка на вхождение</h3> + +<p>Обратите внимание, что значение 0 не вычисляется в <code>true</code>, а значение -1 не вычисляется в <code>false</code>. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:</p> + +<pre class="brush: js">'Синий кит'.indexOf('Синий') !== -1; // true +'Синий кит'.indexOf('Голубой') !== -1; // false +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_indexOf_and_lastIndexOf" name="Example:_Using_indexOf_and_lastIndexOf">Пример: использование методов <code>indexOf()</code> и <code>lastIndexOf()</code></h3> + +<p>В следующем примере используются методы <code>indexOf()</code> и {{jsxref("String.prototype.lastIndexOf()", "lastIndexOf()")}} для нахождения значений в строке <code>"Дивный новый мир"</code>.</p> + +<pre class="brush: js">var anyString = 'Дивный новый мир'; + +console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й')); +// Отобразит 5 +console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й')); +// Отобразит 11 + +console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый')); +// Отобразит 7 +console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый')); +// Отобразит 7 +</pre> + +<h3 id="Example:_indexOf_and_case-sensitivity" name="Example:_indexOf_and_case-sensitivity">Пример: метод <code>indexOf()</code> и регистрозависимость</h3> + +<p>В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода {{domxref("console.log()")}} отобразит 18. Но поскольку метод <code>indexOf()</code> является регистрозависимым, строка <code>"чеддер"</code> в переменной <code>myCapString</code> не будет найдена, так что второй вызов метода <code>console.log()</code> отобразит -1.</p> + +<pre class="brush: js">var myString = 'бри, пеппер джек, чеддер'; +var myCapString = 'Бри, Пеппер Джек, Чеддер'; + +console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер')); +// Отобразит 18 +console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер')); +// Отобразит -1 +</pre> + +<h3 id="Example:_Using_indexOf_to_count_occurrences_of_a_letter_in_a_string" name="Example:_Using_indexOf_to_count_occurrences_of_a_letter_in_a_string">Пример: использование метода <code>indexOf()</code> для подсчёта вхождений буквы в строку</h3> + +<p>Следующий пример устанавливает значение переменной <code>count</code> в количество вхождений буквы <code>в</code> в строку <code>str</code>:</p> + +<pre class="brush: js">var str = 'Быть или не быть, вот в чём вопрос.'; +var count = 0; +var pos = str.indexOf('в'); + +while (pos !== -1) { + count++; + pos = str.indexOf('в', pos + 1); +} + +console.log(count); // отобразит 3 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.7', 'String.prototype.indexOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.indexof', 'String.prototype.indexOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/italics/index.html b/files/ru/web/javascript/reference/global_objects/string/italics/index.html new file mode 100644 index 0000000000..3876249dcb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/italics/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.italics() +slug: Web/JavaScript/Reference/Global_Objects/String/italics +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/italics +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>italics()</code></strong> создаёт HTML-элемент {{HTMLElement("i")}}, заставляющий строку отображаться курсивом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.italics()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>italics()</code> заключает строку в тег <code><i></code>: <code>"<i>str</i>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_italics" name="Example:_Using_italics">Пример: использование метода <code>italics()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +document.write(worldString.blink()); +document.write(worldString.bold()); +document.write(worldString.italics()); +document.write(worldString.strike()); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html"><blink>Привет, мир</blink> +<b>Привет, мир</b> +<i>Привет, мир</i> +<strike>Привет, мир</strike> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.italics', 'String.prototype.italics')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.blink()")}}</li> + <li>{{jsxref("String.prototype.bold()")}}</li> + <li>{{jsxref("String.prototype.strike()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html b/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html new file mode 100644 index 0000000000..853670b0e1 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/lastindexof/index.html @@ -0,0 +1,155 @@ +--- +title: String.prototype.lastIndexOf() +slug: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/lastIndexOf +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>lastIndexOf()</code></strong> возвращает индекс последнего вхождения указанного значения в строковый объект {{jsxref("Global_Objects/String", "String")}}, на котором он был вызван, или -1, если ничего не было найдено. Поиск по строке ведётся от конца к началу, начиная с индекса <code>fromIndex</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.lastIndexOf(<var>searchValue</var>[, <var>fromIndex</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchValue</code></dt> + <dd>Строка, представляющая искомое значение.</dd> + <dt><code>fromIndex</code></dt> + <dd>Необязательный параметр. Местоположение внутри строки, откуда начинать поиск, нумерация индексов идёт слева направо. Может быть любым целым числом. Значение по умолчанию установлено в <code>str.length</code>. Если оно отрицательно, трактуется как 0. Если <code>fromIndex > str.length</code>, параметр <code>fromIndex</code> будет трактоваться как <code>str.length</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке <code>stringName</code> равен <code>stringName.length - 1</code>.</p> + +<pre class="brush: js">'канал'.lastIndexOf('а'); // вернёт 3 +'канал'.lastIndexOf('а', 2); // вернёт 1 +'канал'.lastIndexOf('а', 0); // вернёт -1 +'канал'.lastIndexOf('ч'); // вернёт -1 +</pre> + +<h3 id="Case-sensitivity" name="Case-sensitivity">Регистрозависимость</h3> + +<p>Метод <code>lastIndexOf()</code> является регистрозависимым. Например, следующее выражение вернёт -1:</p> + +<pre class="brush: js">'Cиний кит, касатка'.lastIndexOf('синий'); // вернёт -1 +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_indexOf_and_lastIndexOf" name="Example:_Using_indexOf_and_lastIndexOf">Пример: использование методов <code>indexOf()</code> и <code>lastIndexOf()</code></h3> + +<p>В следующем примере используются методы {{jsxref("String.prototype.indexOf()", "indexOf()")}} и <code>lastIndexOf()</code> для нахождения значений в строке <code>"Дивный новый мир"</code>.</p> + +<pre class="brush: js">var anyString = 'Дивный новый мир'; + +console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й')); +// Отобразит 5 +console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й')); +// Отобразит 11 + +console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый')); +// Отобразит 7 +console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый')); +// Отобразит 7 +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.8', 'String.prototype.lastIndexOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.lastindexof', 'String.prototype.lastIndexOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.split()")}}</li> + <li>{{jsxref("Array.prototype.indexOf()")}}</li> + <li>{{jsxref("Array.prototype.lastIndexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/length/index.html b/files/ru/web/javascript/reference/global_objects/string/length/index.html new file mode 100644 index 0000000000..f794c6ccdf --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/length/index.html @@ -0,0 +1,116 @@ +--- +title: String.length +slug: Web/JavaScript/Reference/Global_Objects/String/length +tags: + - JavaScript + - Property + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/length +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <strong><code>length</code></strong> представляет длину строки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.length</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Это свойство возвращает количество кодовых значений в строке. В {{interwiki("wikipedia", "UTF-16")}}, строковом формате, используемом в JavaScript, для представления большинства символов используется одно 16-битное кодовое значение, но для представления не так часто используемых символов требуется два кодовых значения, так что вполне может быть так, что значение, возвращённое свойством <code>length</code> не будет соответствовать действительному количеству символов в строке.</p> +<p>Для пустых строк свойство <code>length</code> возвращает 0.</p> +<p>Статическое свойство <code>String.length</code> возвращает значение 1.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Basic_usage" name="Example:_Basic_usage">Пример: базовое использование</h3> +<pre class="brush: js">var x = 'Mozilla'; +var empty = ''; + +console.log('Слово «Mozilla» занимает ' + x.length + ' кодовых значений'); +/* "Слово «Mozilla» занимает 7 кодовых значений" */ + +console.log('Пустая строка имеет длину, равную ' + empty.length); +/* "Пустая строка имеет длину, равную 0" */ +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.5.1', 'String.prototype.length')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-string-instances-length', 'String.prototype.length')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li><a class="external" href="http://developer.teradata.com/blog/jasonstrimpel/2011/11/javascript-string-length-and-internationalizing-web-applications">Свойство <code>String.length</code> в JavaScript и интернационализация веб-приложений</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/link/index.html b/files/ru/web/javascript/reference/global_objects/string/link/index.html new file mode 100644 index 0000000000..00cec2d905 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/link/index.html @@ -0,0 +1,131 @@ +--- +title: String.prototype.link() +slug: Web/JavaScript/Reference/Global_Objects/String/link +tags: + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/link +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>link()</code></strong> создаёт HTML-элемент {{HTMLElement("a")}}, заставляющий строку отображаться в виде ссылки на другой URL.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.link(<var>url</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>url</code></dt> + <dd>Любая строка, определяющая атрибут <code>href</code> тега <code><a></code>; она должна содержать допустимый URL (относительный или абсолютный), символы амперсанда <code>&</code> должны быть закодированы в ней как <code>&amp;</code>, а символы кавычки <code>"</code> — как <code>&quot;</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>link()</code> используется для создания кусочка HTML со ссылкой в гипертексте. Возвращённая строка затем может быть добавлена в документ при помощи метода {{domxref("document.write()")}} или свойства {{domxref("element.innerHTML")}}</p> + +<p>Ссылки, созданные методом <code>link()</code>, становятся элементами в массиве {{domxref("document.links")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_link" name="Example:_Using_link">Пример: использование метода <code>link()</code></h3> + +<p>В следующем примере слово «MDN» отображается в виде гипертекстовой ссылки, ведущей на сайт Сети разработчиков Mozilla.</p> + +<pre class="brush: js">var hotText = 'MDN'; +var URL = 'https://developer.mozilla.org/'; + +document.write('Нажмите для возврата на ' + hotText.link(URL)); +</pre> + +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> + +<pre class="brush: html">Нажмите для возврата на <a href="https://developer.mozilla.org/">MDN</a> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.link', 'String.prototype.link')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<p>Начиная с версии {{gecko("17")}}, символ <code>"</code> (кавычка) в строках, передаваемых в качестве параметра <code>url</code>, заменяется его HTML-мнемоникой <code>&quot;</code>.</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.anchor()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html b/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html new file mode 100644 index 0000000000..606cf86549 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/localecompare/index.html @@ -0,0 +1,196 @@ +--- +title: String.prototype.localeCompare() +slug: Web/JavaScript/Reference/Global_Objects/String/localeCompare +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/localeCompare +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>localeCompare()</code></strong> возвращает число, указывающее, должна ли данная строка находиться до, после или в том же самом месте, что и строка, переданная через параметр, при сортировке этих строк.</p> + +<p>Новые аргументы <code>locales</code> и <code>options</code> позволяют приложениям определять язык, чей порядок сортировки оно хочет использовать и настраивать поведение этой функции. В старых реализациях, игнорирующих аргументы <code>locales</code> и <code>options</code>, используемая локаль и порядок сортировки целиком зависят от реализации.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.localeCompare(<var>compareString</var>[, <var>locales</var>[, <var>options</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<p>Проверьте раздел <a href="#Browser_compatibility">Совместимость с браузерами</a>, чтобы увидеть, какие браузеры поддерживают аргументы <code>locales</code> и <code>options</code>, и <a href="#Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></a> для определения этой возможности.</p> + +<dl> + <dt><code>compareString</code></dt> + <dd>Строка, с которой сравнивается данная.</dd> +</dl> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator', 'Parameters')}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Возвращает число, указывающее, должна данная строка находится до, после или в том же самом месте, что и строка, переданная через параметр, при сортировке этих строк. Если данная строка предшествует строке <code>compareString</code>, возвращает отрицательное число, если она следует за строкой <code>compareString</code>, возвращает положительное значение и возвращает 0, если строки находятся на одном уровне.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_localeCompare" name="Example:_Using_localeCompare">Пример: использование метода <code>localeCompare()</code></h3> + +<p>Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:</p> + +<pre class="brush: js">console.log(new Intl.Collator().compare('a', 'c')); // -2, -1 или другое отрицательное значение +console.log(new Intl.Collator().compare('c', 'a')); // 2, 1 или другое положительное значение +console.log(new Intl.Collator().compare('a', 'a')); // 0 +</pre> + +<p>Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только того, чтобы значение было отрицательным, если строка данная следует до переданной, и положительным — если после.</p> + +<h3 id="Example:_Checking_for_support_for_locales_and_options_arguments" name="Example:_Checking_for_support_for_locales_and_options_arguments">Пример: проверка поддержки аргументов <code>locales</code> и <code>options</code></h3> + +<p>Аргументы <code>locales</code> и <code>options</code> поддерживаются ещё не всеми браузерами. Для проверки того, поддерживает ли их уже реализация, можно затребовать несуществующую метку языка и проверить, будет ли выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}:</p> + +<pre class="brush: js">function localeCompareSupportsLocales() { + try { + 'a'.localeCompare('b', 'i'); + } catch (e) { + return e.name === 'RangeError'; + } + return false; +} +</pre> + +<h3 id="Example:_Using_locales" name="Example:_Using_locales">Пример: использование аргумента <code>locales</code></h3> + +<p>Результаты, предоставляемые методом <code>localeCompare()</code>, сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент <code>locales</code>:</p> + +<pre class="brush: js">console.log('ä'.localeCompare('z', 'de')); // отрицательное значение: в немецком буква ä идёт рядом с буквой a +console.log('ä'.localeCompare('z', 'sv')); // положительное значение: в шведском буква ä следует после буквы z +</pre> + +<h3 id="Example:_Using_options" name="Example:_Using_options">Пример: использование аргумента <code>options</code></h3> + +<p>Результат, предоставляемый методом <code>localeCompare()</code>, может быть настроен с помощью аргумента <code>options</code>:</p> + +<pre class="brush: js">// В немецком буква a является базовой для буквы ä +console.log('ä'.localeCompare('a', 'de', { sensitivity: 'base' })); // 0 + +// В шведском буквы ä и a являются двумя разными базовыми буквами +console.log('ä'.localeCompare('a', 'sv', { sensitivity: 'base' })); // положительное значение +</pre> + +<h2 id="Performance" name="Performance">Производительность</h2> + +<p>При сравнении большого количества строк, например, при сортировке больших массивов, лучшим вариантом будет создание объекта {{jsxref("Global_Objects/Collator", "Intl.Collator")}} и использование функции, предоставляемой его свойством {{jsxref("Collator.prototype.compare", "compare")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.9', 'String.prototype.localeCompare')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.localecompare', 'String.prototype.localeCompare')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-13.1.1', 'String.prototype.localeCompare')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Определение параметров <code>locale</code> и <code>option</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatChrome("24")}}</td> + <td>{{CompatGeckoDesktop("29")}}</td> + <td>{{CompatIE("11")}}</td> + <td>{{CompatOpera("15")}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + <tr> + <td>Аргументы <code>locales</code> и <code>options</code></td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("26")}}</td> + <td>{{CompatNo}}<br> + {{bug("864843")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/match/index.html b/files/ru/web/javascript/reference/global_objects/string/match/index.html new file mode 100644 index 0000000000..ebcc53c574 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/match/index.html @@ -0,0 +1,177 @@ +--- +title: String.prototype.match() +slug: Web/JavaScript/Reference/Global_Objects/String/match +tags: + - JavaScript + - Method + - Prototype + - Reference + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/match +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>match()</code></strong> возвращает получившиеся совпадения при сопоставлении <em>строки</em> с <em>регулярным выражением</em>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.match(<var>regexp</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>regexp</code></dt> + <dd>Объект регулярного выражения. Если будет передан объект <code>obj</code>, не являющийся регулярным выражением, он будет неявно преобразован в объект {{jsxref("Global_Objects/RegExp", "RegExp")}} через вызов конструктора <code>new RegExp(obj)</code>.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<dl> + <dt><code>array</code></dt> + <dd>Объект {{jsxref("Global_Objects/Array", "Array")}}, содержащий результаты сопоставления, или {{jsxref("Global_Objects/null", "null")}}, если ничего не было сопоставлено.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Если регулярное выражение не содержит флаг <code>g</code>, возвращаемый результат будет тем же самым, что и при вызове метода {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}. Возвращаемый объект {{jsxref("Global_Objects/Array", "массива", "", 1)}} имеет дополнительное свойство <code>input</code>, которое содержит оригинальную строку. Кроме того, он имеет свойство <code>index</code>, которое представляет индекс (нумерация с нуля) сопоставления в строке.</p> + +<p>Если регулярное выражение содержит флаг <code>g</code>, метод вернёт {{jsxref("Global_Objects/Array", "массив", "", 1)}}, содержащий все сопоставления. Если сопоставлений не было, метод вернёт значение {{jsxref("Global_Objects/null", "null")}}.</p> + +<h3 id="See_also_RegExp_methods" name="See_also:_RegExp_methods">Смотрите также: методы объекта <code>RegExp</code></h3> + +<ul> + <li>Если вам надо просто узнать, подпадает ли строка под регулярное выражение, используйте метод {{jsxref("String.prototype.search()", "search()")}}.</li> + <li>Если вам нужно найти только первое сопоставление, вы можете использовать метод {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}.</li> +</ul> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_match" name="Example:_Using_match">Пример: использование метода <code>match()</code></h3> + +<p>В следующем примере метод <code>match()</code> используется для поиска слова <code>'Глава'</code>, за которым следуют 1 или более цифр, за которыми следуют 0 или более раз группы из точки и цифры. Регулярное выражение включает флаг <code>i</code>, так что регистр букв игнорируется.</p> + +<pre class="brush: js">var str = 'Глава 3.4.5.1 содержит дополнительную информацию'; +var re = /(глава \d+(\.\d)*)/i; +var found = str.match(re); + +console.log(found); + +// выведет [ 'Глава 3.4.5.1', +// 'Глава 3.4.5.1', +// '.1', +// index: 0, +// input: 'Глава 3.4.5.1 содержит дополнительную информацию' ] + +// 'Глава 3.4.5.1' - это первое сопоставление и первое значение, +// сопоставленное с группой `(Глава \d+(\.\d)*)`. +// '.1' - это последнее значение, сопоставленное с группой `(\.\d)`. +// Свойство 'index' содержит значение (0) индекса совпадения +// относительно начала сопоставления +// Свойство 'input' содержит значение введенной строки.</pre> + +<h3 id="Example_Using_global_and_ignore_case_flags_with_match" name="Example:_Using_global_and_ignore_case_flags_with_match">Пример: использование флагов глобальности и игнорирования регистра с методом <code>match()</code></h3> + +<p>Следующий пример демонстрирует использование флагов глобального поиска и игнорирования регистра символов вместе с методом <code>match()</code>. Возвращаются все буквы от А до Д и от а до д, каждая в своём элементе массива.</p> + +<pre class="brush: js">var str = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя'; +var regexp = /[А-Д]/gi; +var matches_array = str.match(regexp); + +console.log(matches_array); +// ['А', 'Б', 'В', 'Г', 'Д', 'а', 'б', 'в', 'г', 'д'] +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.10', 'String.prototype.match')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.match', 'String.prototype.match')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Firefox-specific_notes" name="Firefox-specific_notes">Примечания по Firefox</h3> + +<ul> + <li>Начиная с Gecko 27 {{geckoRelease(27)}}, этот метод был поправлен для соотвествия спецификации ECMAScript. При вызове метода <code>match()</code> с глобальным регулярным выражением, свойство {{jsxref("RegExp.lastIndex")}} (если оно определено) будет сбрасываться в <code>0</code> ({{bug(501739)}}).</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/matchall/index.html b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html new file mode 100644 index 0000000000..6c8defbc17 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/matchall/index.html @@ -0,0 +1,120 @@ +--- +title: String.prototype.matchAll() +slug: Web/JavaScript/Reference/Global_Objects/String/matchAll +tags: + - JavaScript + - Method + - Prototype + - Reference + - Regular Expressions + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/matchAll +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>matchAll()</code></strong> возвращает итератор по всем результатам при сопоставлении <em>строки с регулярным выражением</em>.</p> + +<div>{{EmbedInteractiveExample("pages/js/string-matchall.html")}}</div> + + + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><var>str</var>.matchAll(<var>regexp</var>)</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>regexp</code></dt> + <dd>Объект регулярного выражения. Если передано значение, не являющееся объектом регулярного выражения, оно неявно преобразуется в {{jsxref("RegExp")}} используя <code>new RegExp(obj)</code>.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращается <a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">iterator</a> (не перезапускаемый).</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Regexp.exec_и_matchAll">Regexp.exec() и matchAll()</h3> + +<p>До добавления метода <code>matchAll</code> в JavaScript, можно было использовать метод <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec">regexp.exec</a> (и регулярные выражения с флагом <code>/g</code> ) в цикле для получения доступа к совпадениям:</p> + +<pre class="brush: js notranslate">const regexp = RegExp('foo*','g'); +const str = 'table football, foosball'; + +while ((matches = regexp.exec(str)) !== null) { + console.log(`Found ${matches[0]}. Next starts at ${regexp.lastIndex}.`); + // expected output: "Found foo. Next starts at 9." + // expected output: "Found foo. Next starts at 19." +} +</pre> + +<p>С появлением <code>matchAll</code>, нет необходимости использовать цикл <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/while">while</a></code> и метод <code>exec</code> с флагом <code>/g</code>.<br> + Используя вместо этого метод <code>matchAll</code>, вы получаете итератор, который вы можете использовать более удобно с конструкциями <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code>, <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax">array spread</a>, или {{jsxref("Array.from()")}} :</p> + +<pre class="brush: js notranslate">const regexp = RegExp('foo*','g'); +const str = 'table football, foosball'; +let matches = str.matchAll(regexp); + +for (const match of matches) { + console.log(match); +} +// Array [ "foo" ] +// Array [ "foo" ] + +// итерация больше недоступна после вызова for of +// Для создания нового итератора вызовите matchAll повторно +matches = str.matchAll(regexp); + +Array.from(matches, m => m[0]); +// Array [ "foo", "foo" ] +</pre> + +<h3 id="Улучшенный_доступ_к_группам_захвата">Улучшенный доступ к группам захвата</h3> + +<p>Еще одна веская причина использовать <code>matchAll</code> это улучшенный доступ к группам захвата. Группы захвата игнорируются при использовании <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match">match()</a></code> с глобальным флагом <code>/g</code>:</p> + +<pre class="brush: js notranslate">var regexp = /t(e)(st(\d?))/g; +var str = 'test1test2'; + +str.match(regexp); +// Array ['test1', 'test2']</pre> + +<p>С <code>matchAll</code> у вас появляется к ним доступ:</p> + +<pre class="brush: js notranslate">let array = [...str.matchAll(regexp)]; + +array[0]; +// ['test1', 'e', 'st1', '1', index: 0, input: 'test1test2', length: 4] +array[1]; +// ['test2', 'e', 'st2', '2', index: 5, input: 'test1test2', length: 4] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + </tr> + <tr> + <td><a href="https://tc39.github.io/proposal-string-matchall/#sec-string-prototype-matchall">String.prototype.matchAll</a></td> + <td>Stage 3</td> + </tr> + </tbody> +</table> + +<h2 id="Браузерная_совместимость">Браузерная совместимость</h2> + +<p class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.matchAll")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("RegExp")}}</li> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/normalize/index.html b/files/ru/web/javascript/reference/global_objects/string/normalize/index.html new file mode 100644 index 0000000000..098bc2de09 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/normalize/index.html @@ -0,0 +1,174 @@ +--- +title: String.prototype.normalize() +slug: Web/JavaScript/Reference/Global_Objects/String/normalize +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - String + - Unicode +translation_of: Web/JavaScript/Reference/Global_Objects/String/normalize +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>normalize()</code></strong> возвращает форму нормализации Юникода данной строки (если значение не является строкой, сначала оно будет в неё преобразовано).</p> + +<p>Одна из особенностей Юникода - возможность считать два разных символа эквивалентными при выполнении сортировки и иных операций, которые основаны на сравнении.</p> + +<p>Виды эквивалентности:<br> + - первый - каноническая эквивалентность, когда две последовательности code point являются полностью взаимозаменяемыми.</p> + +<p>- второй - совместимость - две совместимые последовательности code point выглядят по-разному, но в некоторых случаях они могут быть взаимозаменяемыми.</p> + +<p>'æ' взаимозаменяемый 'ae', но они не являются строго эквивалентными, если не провести некоторую нормализацию</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.normalize(<var>[form</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>form</code></dt> + <dd>Одно из значений <code>"NFC"</code>, <code>"NFD"</code>, <code>"NFKC"</code> или <code>"NFKD"</code>, определяющих форму нормализации Юникода. Если параметр опущен или равен {{jsxref("Global_Objects/undefined", "undefined")}}, будет использоваться значение <code>"NFC"</code>. + <ul> + <li><code>NFC</code> — форма нормализации канонической композицией (Normalization Form Canonical Composition, 'NFC'), по умолчанию;</li> + <li><code>NFD</code> — форма нормализации канонической декомпозицией (Normalization Form Canonical Decomposition, 'NFD');</li> + <li><code>NFKC</code> — форма нормализации совместимой композицией (Normalization Form Compatibility Composition, 'NFKC');</li> + <li><code>NFKD</code> — форма нормализации совместимой декомпозицией (Normalization Form Compatibility Decomposition, 'NFKD').</li> + </ul> + </dd> +</dl> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/RangeError", "RangeError")}}</dt> + <dd>Если параметр <code>form</code> не является одним из вышеперечисленных значений, будет выброшено исключение {{jsxref("Global_Objects/RangeError", "RangeError")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>normalize()</code> возвращает указанную форму нормализации Юникода строки. Он не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_normalize" name="Example:_Using_normalize">Пример: использование метода <code>normalize()</code></h3> + +<pre class="brush: js">let valueStr = ['h', 'ĥ', 'æ', 'ae', 'g', 'ġ'], + normArr = valueStr.map(function (text) { + return text.normalize(); // (по умолчанию 'NFC') normArr (после сортировки) -> [<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">ae, g, h, æ, ġ, ĥ]</span></span></span></span> + //return text.normalize('NFD'); // normArr (после сортировки) -> [<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">ae, g, ġ, h, ĥ, æ]</span></span></span></span> + //return text.normalize('NFKC'); // normArr (после сортировки) -> [<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">ae, g, h, æ, ġ, ĥ]</span></span></span></span> + //return text.normalize('NFKD'); // normArr (после сортировки) -> [<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">ae, g, ġ, h, ĥ, æ]</span></span></span></span> + }); + +//После приведение строк в нормальную форму, мы можем провести сортировку, массива: +normArr.sort(function (f,s) { + if (f < s) { + return -1; + } else if (f === s) { + return 0; + } else { + return 1; + } +}); + +//Приведение к нормальной форме можно выполнить во время сортировки. Нормализацию при этом можно выполнять с помощью разных форм нормализации +let valueStrNorm = ['h', 's', 'ĥ', 'æ', 'ș', 'ae', 'g', 'ġ']; +valueStrNorm.sort(function (first, second) { + let fN = first.normalize(), + sN = second.normalize('NFKC'); + + if (fN < sN) { + return -1; + } else if (fN === sN) { + return 0; + } else { + return 1; + } +}); + +valueStrNorm.join(', ');//-> <span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">ae, g, h, s, æ, ġ, ĥ, ș</span></span></span></span> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.normalize', 'String.prototype.normalize')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome("34")}}</td> + <td>{{CompatGeckoDesktop("31")}}</td> + <td>{{CompatIE("11")}} на Windows 10 Preview</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("34")}}</td> + <td>{{CompatNo}}<br> + {{bug("864843")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="http://www.unicode.org/reports/tr15/">Приложение №15 к стандарту Юникода: формы нормализации Юникода</a></li> + <li><a href="http://en.wikipedia.org/wiki/Unicode_equivalence">Эквивалентность в Юникоде</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/padend/index.html b/files/ru/web/javascript/reference/global_objects/string/padend/index.html new file mode 100644 index 0000000000..31da2edad0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/padend/index.html @@ -0,0 +1,94 @@ +--- +title: String.prototype.padEnd() +slug: Web/JavaScript/Reference/Global_Objects/String/padEnd +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/padEnd +--- +<div>{{JSRef}}{{SeeCompatTable}}</div> + +<p>Метод <strong><code>padEnd()</code></strong> дополняет текущую строку с помощью заданной строки (в конечном счете повторяя), так чтобы результирующая строка достигла заданной длины. Дополнение применяется в конце (справа) текущей строки.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>str</var>.padEnd(<var>targetLength</var> [, <var>padString</var>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>targetLength</code></dt> + <dd>Длина результирующей строки, после того как текущая строка была дополнена. Если этот параметр меньше длины текущей строки, то будет возвращена текущая строка , как она есть.</dd> + <dt><code>padString</code> {{optional_inline}}</dt> + <dd>Строка для дополнения текущей строки с. Если эта строка слишком длинная, она будет урезана и будет применяться ее левая большая часть. " " (U+0020) - значение по умолчанию для этого параметра.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Строка указанной длинны дополненная с помощью дополнительной строки в конце текуще строки.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">'abc'.padEnd(10); // "abc " +'abc'.padEnd(10, "foo"); // "abcfoofoof" +'abc'.padEnd(6,"123456"); // "abc123" +</pre> + +<h2 id="Характеристики">Характеристики</h2> + +<p>Этот метод еще не достиг стандарта ECMAScript. Сейчас он в состоянии <a href="https://github.com/tc39/proposal-string-pad-start-end">proposal for ECMAScript</a>.</p> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatUnknown}} </td> + <td>{{CompatGeckoDesktop(48)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile(48)}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/string/padstart/index.html b/files/ru/web/javascript/reference/global_objects/string/padstart/index.html new file mode 100644 index 0000000000..074516217d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/padstart/index.html @@ -0,0 +1,92 @@ +--- +title: String.prototype.padStart() +slug: Web/JavaScript/Reference/Global_Objects/String/padStart +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/padStart +--- +<div>{{JSRef}}{{SeeCompatTable}}</div> + +<p>Метод <strong><code>padStart()</code></strong> заполняет текущую строку другой строкой (несколько раз, если нужно) так, что итоговая строка достигает заданной длины. Заполнение осуществляется в начале (слева) текущей строки.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>str</var>.padStart(<var>targetLength</var> [, <var>padString</var>])</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>targetLength</code></dt> + <dd>Длина итоговой строки после дополнения текущей строки. Если значение меньше, чем длина текущей строки, текущая строка будет возвращена без изменений.</dd> + <dt><code>padString</code> {{optional_inline}}</dt> + <dd>Строка для заполнения текущей строки. Если эта строка слишком длинная для заданной длины, она будет обрезана. Значение по умолчанию - " " (U+0020).</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("String")}} заданной длины с заполнением строкой, выполненное в начале.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">'abc'.padStart(10); // " abc" +'abc'.padStart(10, "foo"); // "foofoofabc" +'abc'.padStart(6,"123465"); // "123abc" +'abc'.padStart(8, "0"); // "00000abc" +'abc'.padStart(1); // "abc"</pre> + +<h2 id="Полифил">Полифил</h2> + +<p>Запуск данного кода перед любым другим кодом будет создавать <code>String.prototype.padStart()</code>, если он нативно не поддерживается.</p> + +<pre class="brush: js">// https://github.com/uxitten/polyfill/blob/master/string.polyfill.js +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart +if (!String.prototype.padStart) { + String.prototype.padStart = function padStart(targetLength,padString) { + targetLength = targetLength>>0; //floor if number or convert non-number to 0; + padString = String(padString || ' '); + if (this.length > targetLength) { + return String(this); + } + else { + targetLength = targetLength-this.length; + if (targetLength > padString.length) { + padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed + } + return padString.slice(0,targetLength) + String(this); + } + }; +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.padstart', 'String.prototype.padStart')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Initial definition in ECMAScript 2017.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.padStart")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.padEnd()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/prototype/index.html b/files/ru/web/javascript/reference/global_objects/string/prototype/index.html new file mode 100644 index 0000000000..cecc7325a5 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/prototype/index.html @@ -0,0 +1,229 @@ +--- +title: String.prototype +slug: Web/JavaScript/Reference/Global_Objects/String/prototype +tags: + - JavaScript + - Property + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Свойство <strong><code>String.prototype</code></strong> представляет прототип объекта {{jsxref("Global_Objects/String", "String")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Все объекты {{jsxref("Global_Objects/String", "String")}} наследуются от <code>String.prototype</code>. Изменения в прототипе объекта {{jsxref("Global_Objects/String", "String")}} распространяются на все его экземпляры.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>String.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип этого объекта.</dd> + <dt>{{jsxref("String.prototype.length")}}</dt> + <dd>Отражает длину строки.</dd> + <dt><code><em>N</em></code></dt> + <dd>Используется для доступа к символу в позиции <em>N</em>, где <em>N</em> — это целое число между 0 и длиной строки {{jsxref("String.length", "length")}} минус один. Эти свойства доступны только для чтения.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<h3 id="Methods_unrelated_to_HTML" name="Methods_unrelated_to_HTML">Методы, не относящиеся к HTML</h3> + +<dl> + <dt>{{jsxref("String.prototype.charAt()")}}</dt> + <dd>Возвращает символ по указанному индексу.</dd> + <dt>{{jsxref("String.prototype.charCodeAt()")}}</dt> + <dd>Возвращает число, представляющее значение символа в Юникоде по указанному индексу.</dd> + <dt>{{jsxref("String.prototype.codePointAt()")}} {{experimental_inline}}</dt> + <dd>Возвращает неотрицательное целое число, представляющее закодированную в UTF-16 кодовую точку значения по указанной позиции.</dd> + <dt>{{jsxref("String.prototype.concat()")}}</dt> + <dd>Объединяет текст двух строк и возвращает новую строку.</dd> + <dt>{{jsxref("String.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Определяет, находится ли строка внутри другой строки.</dd> + <dt>{{jsxref("String.prototype.endsWith()")}} {{experimental_inline}}</dt> + <dd>Определяет, заканчивается ли строка символами другой строки.</dd> + <dt>{{jsxref("String.prototype.indexOf()")}}</dt> + <dd>Возвращает индекс первого вхождения указанного значения в объекте {{jsxref("Global_Objects/String", "String")}}, на котором был вызван этот метод, или -1, если вхождений нет.</dd> + <dt>{{jsxref("String.prototype.lastIndexOf()")}}</dt> + <dd>Возвращает индекс последнего вхождения указанного значения в объекте {{jsxref("Global_Objects/String", "String")}}, на котором был вызван этот метод, или -1, если вхождений нет.</dd> + <dt>{{jsxref("String.prototype.localeCompare()")}}</dt> + <dd>Возвращает число, указывающее, находится ли образцовая строка до, после или на том же самом месте, что и указанная строка в порядке сортировки.</dd> + <dt>{{jsxref("String.prototype.match()")}}</dt> + <dd>Используется для сопоставления строке регулярного выражения.</dd> +</dl> + +<dl> + <dt>{{jsxref("String.prototype.matchAll()")}}</dt> + <dd>Возвращает итератор по всем результатам при сопоставлении строки с регулярным выражением.</dd> +</dl> + +<dl> + <dt>{{jsxref("String.prototype.normalize()")}} {{experimental_inline}}</dt> + <dd>Возвращает форму нормализации Юникода для строкового значения.</dd> + <dt><s class="obsoleteElement">{{jsxref("String.prototype.quote()")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Оборачивает строку в двойные кавычки ("<code>"</code>").</s></dd> + <dt>{{jsxref("String.prototype.repeat()")}} {{experimental_inline}}</dt> + <dd>Возвращает строку. состоящую из элементов объекта, повторённых указанное количество раз.</dd> + <dt>{{jsxref("String.prototype.replace()")}}</dt> + <dd>Используется для сопоставления строке регулярного выражения и для замены совпавшей подстроки на новую подстроку.</dd> + <dt>{{jsxref("String.prototype.search()")}}</dt> + <dd>Выполняет поиск совпадения регулярного выражения со строкой.</dd> + <dt>{{jsxref("String.prototype.slice()")}}</dt> + <dd>Извлекает часть строки и возвращает новую строку.</dd> + <dt>{{jsxref("String.prototype.split()")}}</dt> + <dd>Разбивает объект {{jsxref("Global_Objects/String", "String")}} на массив строк, разделёных указанной строкой на подстроки.</dd> + <dt>{{jsxref("String.prototype.startsWith()")}} {{experimental_inline}}</dt> + <dd>Определяет, начинается ли строка символами другой строки.</dd> + <dt>{{jsxref("String.prototype.substr()")}}</dt> + <dd>Возвращает указанное количество символов в строке, начинающихся с указанной позиции.</dd> + <dt>{{jsxref("String.prototype.substring()")}}</dt> + <dd>Возвращает символы в строке между двумя индексами.</dd> + <dt>{{jsxref("String.prototype.toLocaleLowerCase()")}}</dt> + <dd>Приводит символы в строке к нижнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}.</dd> + <dt>{{jsxref("String.prototype.toLocaleUpperCase()")}}</dt> + <dd>Приводит символы в строке к верхнему регистру согласно текущей локали. Для большинства языков, метод делает то же самое, что и метод {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}.</dd> + <dt>{{jsxref("String.prototype.toLowerCase()")}}</dt> + <dd>Возвращает строковое значение с символами в нижнем регистре.</dd> + <dt>{{jsxref("String.prototype.toSource()")}} {{non-standard_inline}}</dt> + <dd>Возвращает литерал объекта, представляющий указанный объект; вы можете использовать это значениедля создания нового объекта. Переопределяет метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("String.prototype.toString()")}}</dt> + <dd>Возвращает строковое представление указаного объекта. Переопределяет метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("String.prototype.toUpperCase()")}}</dt> + <dd>Возвращает строковое значение с символами в верхнем регистре.</dd> + <dt>{{jsxref("String.prototype.trim()")}}</dt> + <dd>Обрезает пробельные символы в начале и в конце строки. Часть стандарта ECMAScript 5.</dd> + <dt>{{jsxref("String.prototype.trimLeft()")}} {{non-standard_inline}}</dt> + <dd>Обрезает пробельные символы с левой стороны строки.</dd> + <dt>{{jsxref("String.prototype.trimRight()")}} {{non-standard_inline}}</dt> + <dd>Обрезает пробельные символы с правой стороны строки.</dd> + <dt>{{jsxref("String.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение указанного объекта. Переопределяет метод {{jsxref("Object.prototype.valueOf()")}}.</dd> + <dt>{{jsxref("String.prototype.@@iterator()", "String.prototype[@@iterator]()")}} {{experimental_inline}}</dt> + <dd>Возвращает новый объект итератора <code>Iterator</code>, который итерируется по кодовым точкам строки и возвращает каждую кодовую точку в виде строкового значения.</dd> +</dl> + +<h3 id="HTML_wrapper_methods" name="HTML_wrapper_methods">Методы-обёртки HTML</h3> + +<p>Эти методы имеют ограниченное применение, поскольку они представляют только ограниченное подмножество доступных тегов и атрибутов HTML.</p> + +<dl> + <dt>{{jsxref("String.prototype.anchor()")}} {{deprecated_inline}}</dt> + <dd><code><a href="/ru/docs/Web/HTML/Element/a#attr-name"><a name="<em>имя</em>"></a></code> (цель гипертекста)</dd> + <dt>{{jsxref("String.prototype.big()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("big")}}</dd> + <dt>{{jsxref("String.prototype.blink()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("blink")}}</dd> + <dt>{{jsxref("String.prototype.bold()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("b")}}</dd> + <dt>{{jsxref("String.prototype.fixed()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("tt")}}</dd> + <dt>{{jsxref("String.prototype.fontcolor()")}} {{deprecated_inline}}</dt> + <dd><a href="/ru/docs/Web/HTML/Element/font#attr-color"><code><font color="<em>цвет</em>"></code></a></dd> + <dt>{{jsxref("String.prototype.fontsize()")}} {{deprecated_inline}}</dt> + <dd><a href="/ru/docs/Web/HTML/Element/font#attr-size"><code><font size="<em>размер</em>"></code></a></dd> + <dt>{{jsxref("String.prototype.italics()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("i")}}</dd> + <dt>{{jsxref("String.prototype.link()")}} {{deprecated_inline}}</dt> + <dd><a href="/ru/docs/Web/HTML/Element/a#attr-href"><code><a href="<em>url</em>"></code></a> (ссылка на URL)</dd> + <dt>{{jsxref("String.prototype.small()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("small")}}</dd> + <dt>{{jsxref("String.prototype.strike()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("strike")}}</dd> + <dt>{{jsxref("String.prototype.sub()")}} {{deprecated_inline}}}</dt> + <dd>{{HTMLElement("sub")}}</dd> + <dt>{{jsxref("String.prototype.sup()")}} {{deprecated_inline}}</dt> + <dd>{{HTMLElement("sup")}}</dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.3.1', 'String.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype', 'String.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/String", "String")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/quote/index.html b/files/ru/web/javascript/reference/global_objects/string/quote/index.html new file mode 100644 index 0000000000..367f9f6eb7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/quote/index.html @@ -0,0 +1,124 @@ +--- +title: String.prototype.quote() +slug: Web/JavaScript/Reference/Global_Objects/String/quote +tags: + - JavaScript + - Method + - Obsolete + - Prototype + - Reference + - Référence(2) + - String +translation_of: Archive/Web/JavaScript/String.quote +--- +<div>{{obsolete_header("37")}}</div> + +<div>{{JSRef("Global_Objects", "String")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Нестандартный метод <strong><code>quote()</code></strong> возвращает копию строки, заменяя различные специальные символы в строке их управляющими последовательностями и заключая результат в двойные кавычки (<code>"</code>).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.quote()</code></pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<p>В таблице ниже метод <code>quote()</code> заменяет любые специальные символы и заключает строку в двойные кавычки. Также обратите внимание на третью колонку, в которой функция {{jsxref("Global_Objects/eval", "eval()")}} снова вычисляет управляющие последовательности.</p> + +<table class="fullwidth-table"> + <thead> + <tr> + <th class="header" scope="col"><code>str</code></th> + <th class="header" scope="col"><code>str.quote()</code></th> + <th class="header" scope="col"><code>eval(str.quote())</code></th> + </tr> + </thead> + <tbody> + <tr> + <td><code>Hello world!</code></td> + <td><code>"Hello world!"</code></td> + <td><code>Hello world!</code></td> + </tr> + <tr> + <td><code style="white-space: pre;">Hello<br> + world!</code></td> + <td><code>"Hello\n\tworld!"</code></td> + <td><code style="white-space: pre;">Hello<br> + world!</code></td> + </tr> + <tr> + <td><code>" \ — '</code></td> + <td><code>"\" \\ \u2014 '"</code></td> + <td><code>" \ — '</code></td> + </tr> + <tr> + <td><code>Привет, мир!</code></td> + <td><code>"\u041F\u0440\u0438\u0432\u0435\u0442, \u043C\u0438\u0440!"</code></td> + <td><code>Привет, мир!</code></td> + </tr> + </tbody> +</table> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("JSON.stringify()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/raw/index.html b/files/ru/web/javascript/reference/global_objects/string/raw/index.html new file mode 100644 index 0000000000..b6d9477108 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/raw/index.html @@ -0,0 +1,153 @@ +--- +title: String.raw() +slug: Web/JavaScript/Reference/Global_Objects/String/raw +tags: + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/raw +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Статический метод <strong><code>String.raw()</code></strong> является теговой функцией для <a href="/ru/docs/Web/JavaScript/Reference/template_strings">шаблонных строк</a>; подобно префиксу <code>r</code> в Python или префиксу <code>@</code> в C# для строковых литералов, эта функция используется для получения необработанной строки из шаблона.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code> +String.raw(<var>callSite</var>, <var>...substitutions</var>) + +String.raw`templateString` +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>callSite</code></dt> + <dd>Правильно сформированный объект вызова, например <code>{ raw: 'string' }</code>.</dd> + <dt><code>...substitutions</code></dt> + <dd>Значения подстановок.</dd> + <dt><code>templateString</code></dt> + <dd><a href="/ru/docs/Web/JavaScript/Reference/template_strings">Шаблонная строка</a>, возможно с подстановками (<code>${...}</code>).</dd> +</dl> + +<h3 id="Throws" name="Throws">Выбрасываемые исключения</h3> + +<dl> + <dt>{{jsxref("Global_Objects/TypeError", "TypeError")}}</dt> + <dd>Если первый аргумент не является правильно сформированным объектом вызова, выбрасывается исключение {{jsxref("Global_Objects/TypeError", "TypeError")}}.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>В большинстве случаев метод <code>String.raw()</code> используется вместе с шаблонными строками. Первый синтаксис, показанный выше, используется редко, поскольку движок JavaScript будет вызывать метод с соответствующими аргументами, подобно другим <a href="/ru/docs/Web/JavaScript/Reference/template_strings#Tagged_template_strings">теговым функциям</a>.</p> + +<p>Метод <code>String.raw()</code> является единственной встроенной теговой функцией шаблонных строк, выступающей стандартной функцией по объединению их фрагментов. Вы и сами могли бы реализовать подобную функциональность на JavaScript.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_String.raw" name="Example:_String.raw">Пример: использование метода <code>String.raw()</code></h3> + +<pre class="brush: js">String.raw`Привет\n${2+3}!`; +// 'Привет\n5!', символ после 'Привет' не является символом новой строки, +// '\' и 'n' - это два символа. + +String.raw`Привет\u000A!`; +// 'Привет\u000A!', а здесь мы получим символы +// \, u, 0, 0, 0, A, всего 6 символов. +// Экранирующие символы не имеют особого значения и +// обратные слеши будут присутствовать в выходной строке. +// Вы можете убедиться в этом, проверив свойство .length строки. + +let name = 'Боб'; +String.raw`Привет\n${name}!`; +// 'Привет\nБоб!', сработала подстановка. + +// Обычно вам не нужно вызывать метод String.raw() как функцию, +// но никто не запрещает вам делать это: +String.raw({ raw: 'тест' }, 0, 1, 2); +// 'т0е1с2т' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.raw', 'String.raw')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoDesktop("34")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("34")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/template_strings">Шаблонные строки</a></li> + <li>{{jsxref("Global_Objects/String", "String")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Reference/Lexical_grammar">Лексическая грамматика</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/repeat/index.html b/files/ru/web/javascript/reference/global_objects/string/repeat/index.html new file mode 100644 index 0000000000..10a6507b6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/repeat/index.html @@ -0,0 +1,124 @@ +--- +title: String.prototype.repeat() +slug: Web/JavaScript/Reference/Global_Objects/String/repeat +tags: + - ECMAScript 2015 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/repeat +--- +<div>{{JSRef}}</div> + +<div>Метод <strong><code>repeat()</code></strong> конструирует и возвращает новую строку, содержащую указанное количество соединённых вместе копий строки, на которой он был вызван.</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.repeat(<var>count</var>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>count</code></dt> + <dd>Целое число от 0 до +∞: [0, +∞), определяющее число повторений строки во вновь создаваемой и возвращаемой строке.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новая строка, содержащая указанное количество копий строки, для которой был вызван метод.</p> + +<h3 id="Throws" name="Throws">Исключения</h3> + +<ul> + <li>{{jsxref("Errors/Negative_repetition_count", "RangeError")}}: число повторений не должно быть отрицательным.</li> + <li>{{jsxref("Errors/Resulting_string_too_large", "RangeError")}}: число повторений должно быть меньше бесконечности и не должно превышать максимально допустимую длину строки.</li> +</ul> + +<dl> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<pre class="brush: js">'абв'.repeat(-1); // RangeError +'абв'.repeat(0); // '' +'абв'.repeat(1); // 'абв' +'абв'.repeat(2); // 'абвабв' +'абв'.repeat(3.5); // 'абвабвабв' (количество будет преобразовано в целое число) +'абв'.repeat(1/0); // RangeError + +({ toString: () => 'абв', repeat: String.prototype.repeat }).repeat(2); +// 'абвабв' (метод repeat() является обобщённым методом) +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был добавлен к спецификации ECMAScript 2015 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:</p> + +<pre class="brush: js">if (!String.prototype.repeat) { + String.prototype.repeat = function(count) { + 'use strict'; + if (this == null) { + throw new TypeError('can\'t convert ' + this + ' to object'); + } + var str = '' + this; + count = +count; + if (count != count) { + count = 0; + } + if (count < 0) { + throw new RangeError('repeat count must be non-negative'); + } + if (count == Infinity) { + throw new RangeError('repeat count must be less than infinity'); + } + count = Math.floor(count); + if (str.length == 0 || count == 0) { + return ''; + } + // Обеспечение того, что count является 31-битным целым числом, позволяет нам значительно + // соптимизировать главную часть функции. Впрочем, большинство современных (на август + // 2014 года) браузеров не обрабатывают строки, длиннее 1 << 28 символов, так что: + if (str.length * count >= 1 << 28) { + throw new RangeError('repeat count must not overflow maximum string size'); + } + var rpt = ''; + for (var i = 0; i < count; i++) { + rpt += str; + } + return rpt; + } +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.repeat', 'String.prototype.repeat')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.repeat")}}</p> diff --git a/files/ru/web/javascript/reference/global_objects/string/replace/index.html b/files/ru/web/javascript/reference/global_objects/string/replace/index.html new file mode 100644 index 0000000000..debc32cf40 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/replace/index.html @@ -0,0 +1,289 @@ +--- +title: String.prototype.replace() +slug: Web/JavaScript/Reference/Global_Objects/String/replace +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/replace +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>replace()</code></strong> возвращает новую строку с некоторыми или всеми сопоставлениями с шаблоном, заменёнными на заменитель. Шаблон может быть строкой или {{jsxref("Global_Objects/RegExp", "регулярным выражением", "", 1)}}, а заменитель может быть строкой или функцией, вызываемой при каждом сопоставлении.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.replace(<var>regexp</var>|<var>substr</var>, <var>newSubStr</var>|<var>function</var>[, <var>flags</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>regexp</code></dt> + <dd>Объект регулярного выражения {{jsxref("Global_Objects/RegExp", "RegExp")}}. Сопоставление заменяется возвращаемым значением второго параметра.</dd> + <dt><code>substr</code></dt> + <dd>{{jsxref("Global_Objects/String", "Строка", "", 1)}}, заменяемая на <code>newSubStr</code>. Обратите внимание, будет заменено только первое вхождение искомой строки.</dd> + <dt><code>newSubStr</code></dt> + <dd>{{jsxref("Global_Objects/String", "Строка", "", 1)}}, заменяющая подстроку из первого параметра. Поддерживает несколько специальных шаблонов замены; смотрите ниже раздел <a href="#Specifying_a_string_as_a_parameter">Передача строки в качестве второго параметра</a>.</dd> + <dt><code>function</code></dt> + <dd>Функция, вызываемая для создания новой подстроки (помещаемой вместо подстроки из первого параметра). Аргументы, передаваемые функции, описаны ниже в разделе <a href="#Specifying_a_function_as_a_parameter">Передача функции в качестве второго параметра</a>.</dd> + <dt><code>flags</code> {{non-standard_inline}}</dt> + <dd> + <p><strong>Обратите внимание: аргумент <code>flags</code> не работает в ядре v8 (движок JavaScript в Chrome и NodeJs).</strong> Строка, задающая комбинацию <a href="/ru/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_Searching_With_Flags">флагов регулярного выражения</a>. Параметр <code>flags</code> в методе <code>String.prototype.replace()</code> является нестандартным расширением. Вместо использования этого параметра используйте объект {{jsxref("Global_Objects/RegExp", "RegExp")}} с соответствующими флагами. Значение этого параметра, если он используется, должно быть строкой, состоящей из одного или более следующих символов, следующим образом влияющих на обработку регулярного выражения:</p> + + <dl> + <dt><code>g</code></dt> + <dd>глобальное сопоставление</dd> + <dt><code>i</code></dt> + <dd>игнорировать регистр</dd> + <dt><code>m</code></dt> + <dd>сопоставление по нескольким строкам</dd> + <dt><code>y</code> {{experimental_inline}}</dt> + <dd>«липкий» поиск, сопоставление начинается с текущей позиции в строке</dd> + </dl> + </dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<p>Новая строка с некоторыми или всеми сопоставлениями шаблона, заменёнными на заменитель.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод не изменяет объект {{jsxref("Global_Objects/String", "String")}}, на котором он вызывается. Он просто возвращает новую строку.</p> + +<p>Для выполнения глобального поиска и замены либо включите флаг <code>g</code> в регулярное выражение, либо, если первый параметр является строкой, включите флаг <code>g</code> в параметр <code>flags</code>.</p> + +<h3 id="Specifying_a_string_as_a_parameter" name="Specifying_a_string_as_a_parameter">Передача строки в качестве второго параметра</h3> + +<p>строка замены может включать следующие специальные шаблоны замены:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Шаблон</td> + <td class="header">Замена</td> + </tr> + <tr> + <td><code>$$</code></td> + <td>Вставляет символ доллара «$».</td> + </tr> + <tr> + <td><code>$&</code></td> + <td>Вставляет сопоставившуюся подстроку.</td> + </tr> + <tr> + <td><code>$`</code></td> + <td>Вставляет часть строки, предшествующую сопоставившейся подстроке.</td> + </tr> + <tr> + <td><code>$'</code></td> + <td>Вставляет часть строки, следующую за сопоставившейся подстрокой.</td> + </tr> + <tr> + <td><code>$<em>n</em></code> или <code>$<em>nn</em></code></td> + <td>Символы <code><em>n</em></code> или <code><em>nn</em></code> являются десятичными цифрами, вставляет <em>n</em>-ную сопоставившуются подгруппу из объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} в первом параметре.</td> + </tr> + </tbody> +</table> + +<h3 id="Specifying_a_function_as_a_parameter" name="Specifying_a_function_as_a_parameter">Передача функции в качестве второго параметра</h3> + +<p>В качестве второго параметра вы можете передать функцию. В этом случае функция будет выполнена после произошедшего сопоставления. Результат вызова функции (её возвращаемое значение) будет использоваться в качестве строки замены (обратите внимание: описанные выше специальные шаблоны замены в этом случае <em>не</em> применяются). Обратите внимание, что функция будет вызвана несколько раз для каждого полного сопоставления, если регулярное выражение в первом параметре является глобальным.</p> + +<p>Функция принимает следующие аргументы:</p> + +<table class="fullwidth-table"> + <tbody> + <tr> + <td class="header">Возможное имя</td> + <td class="header">Получаемое значение</td> + </tr> + <tr> + <td><code>match</code></td> + <td>Сопоставившаяся подстрока (cоответствует шаблону замены <code>$&</code>, описанному выше).</td> + </tr> + <tr> + <td><code>p1, p2, ...</code></td> + <td><em>n</em>-ная сопоставившаяся подгруппа из объекта {{jsxref("Global_Objects/RegExp", "RegExp")}} в первом параметре метода <code>replace()</code> (cоответствует шаблонам замены <code>$1</code>, <code>$2</code> и так далее, описанным выше). Например, если в качестве шаблона передано регулярное выражение <code>/(\a+)(\b+)/</code>, параметр <code>p1</code> будет значение сопоставления с подгруппой <code>\a+</code>, а параметр <code>p2</code> — с подгруппой <code>\b+</code>.</td> + </tr> + <tr> + <td><code>offset</code></td> + <td>Смещение сопоставившейся подстроки внутри всей рассматриваемой строки (например, если вся строка равна <code>'abcd'</code>, а сопоставившаяся подстрока равна <code>'bc'</code>, то этот аргумент будет равен 1).</td> + </tr> + <tr> + <td><code>string</code></td> + <td>Вся рассматриваемая строка.</td> + </tr> + </tbody> +</table> + +<p>Точное число аргументов будет зависеть от того, был ли первым аргументом объект {{jsxref("Global_Objects/RegExp", "RegExp")}} и, если был, сколько подгрупп в нём определено.</p> + +<p>Следующий пример установит переменную <code>newString</code> в значение <code>'abc - 12345 - #$*%'</code>:</p> + +<pre class="brush: js">function replacer(match, p1, p2, p3, offset, string) { + // p1 - не цифры, p2 - цифры, p3 - не буквы и не цифры + return [p1, p2, p3].join(' - '); +} +var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer); +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_global_and_ignore_with_replace" name="Example:_Using_global_and_ignore_with_replace">Пример: использование флагов <code>global</code> и <code>ignore</code> с методом <code>replace()</code></h3> + +<p>В следующем примере регулярное выражение включает флаги для глобального поиска и игнорирования регистра, которые позволяют методу <code>replace()</code> заменить все вхождения слова «яблоки» в строке на слово «апельсины».</p> + +<pre class="brush: js">var re = /яблоки/gi; +var str = 'Яблоки круглые и яблоки сочные.'; +var newstr = str.replace(re, 'апельсины'); +console.log(newstr); // апельсины круглые и апельсины сочные. +</pre> + +<h3 id="Example_Defining_the_regular_expression_in_replace" name="Example:_Defining_the_regular_expression_in_replace">Пример: передача регулярного выражения в метод <code>replace()</code></h3> + +<p>В следующем примере в метод <code>replace()</code> передаётся регулярное выражение вместе с флагом игнорирования регистра.</p> + +<pre class="brush: js">// Ночь перед Рождеством, Xmas - сокращение для Christmas +var str = 'Twas the night before Xmas...'; +var newstr = str.replace(/xmas/i, 'Christmas'); +console.log(newstr); // Twas the night before Christmas... +</pre> + +<p>Пример выведет строку 'Twas the night before Christmas...'</p> + +<h3 id="Example_Switching_words_in_a_string" name="Example:_Switching_words_in_a_string">Пример: смена местами слов в строке</h3> + +<p>Следующий скрипт меняет местами слова в строке. В качестве текста замены он использует шаблоны замены <code>$1</code> и <code>$2</code>.</p> + +<pre class="brush: js">var re = /([А-ЯЁа-яё]+)\s([А-ЯЁа-яё]+)/; +var str = 'Джон Смит'; +var newstr = str.replace(re, '$2, $1'); +console.log(newstr); // Смит, Джон +</pre> + +<p>Пример выведет строку 'Смит, Джон'.</p> + +<h3 id="Example_Using_an_inline_function_that_modifies_the_matched_characters" name="Example:_Using_an_inline_function_that_modifies_the_matched_characters">Пример: использование функции для изменения сопоставившихся символов</h3> + +<p>В этом примере все входящие в строку (латинские) буквы в верхнем регистре преобразуются в нижний регистр, а перед самой буквой вставляется дефис. Здесь важно то, что прежде чем элемент вставится в качестве замены, над ним нужно провести дополнительные преобразования.</p> + +<p>Функция замены своим параметром принимает сопоставившийся кусок и перед возвратом использует его для преобразования регистра и соединения с дефисом.</p> + +<pre class="brush: js">function styleHyphenFormat(propertyName) { + function upperToHyphenLower(match) { + return '-' + match.toLowerCase(); + } + return propertyName.replace(/[A-Z]/g, upperToHyphenLower); +} +</pre> + +<p>Вызов <code>styleHyphenFormat('borderTop')</code> вернёт строку 'border-top'.</p> + +<p>Поскольку мы хотим провести дополнительные преобразования <em>результата</em> сопоставления до того, как будет использована окончательная подстановка, мы должны использовать функцию. Это заставляет нас принудительно вычислить сопоставление перед использование метода {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}. Если бы мы попытались использовать сопоставление без функции, метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}} не сработал бы.</p> + +<pre class="brush: js">var newString = propertyName.replace(/[A-Z]/g, '-' + '$&'.toLowerCase()); // не работает +</pre> + +<p>Происходит это потому, что сначала часть <code>'$&'.toLowerCase()</code> вычисляется в строковый литерал (результат по-прежнему равен <code>'$&'</code>), а только потом его символы используются в качестве шаблона.</p> + +<h3 id="Example_Replacing_a_Fahrenheit_degree_with_its_Celsius_equivalent" name="Example:_Replacing_a_Fahrenheit_degree_with_its_Celsius_equivalent">Пример: замена градусов по Фаренгейту на эквивалент в градусах по Цельсию</h3> + +<p>В следующем примере градусы по Фаренгейту заменяются на эквивалентные градусы по Цельсию. Градусы по Фаренгейту должны быть числом, оканчивающимся на букву F. Функция возвращает количество градусов по Цельсию, оканчивающиеся на букву C. Например, если входное число равняется 212F, функция вернёт 100C. Если число равняется 0F, функция вернёт -17.77777777777778C.</p> + +<p>Регулярное выражение <code>test</code> сопоставляется с любым числом, оканчивающимся на букву F. Количество градусов по Фаренгейту передаётся в функцию через её второй параметр, <code>p1</code>. Функция переводит градусы по Фаренгейту, переданные в виде строки в функцию code>f2c(), в градусы по Цельсию. Затем функция <code>f2c()</code> возвращает количество градусов по Цельсию. Эта функция работает примерно так же, как и флаг <code>s///e</code> в Perl.</p> + +<pre class="brush: js">function f2c(x) { + function convert(str, p1, offset, s) { + return ((p1 - 32) * 5/9) + 'C'; + } + var s = String(x); + var test = /(\d+(?:\.\d*)?)F\b/g; + return s.replace(test, convert); +} +</pre> + +<h3 id="Example_Use_an_inline_function_with_a_regular_expression_to_avoid_for_loops" name="Example: Use an inline function with a regular expression to avoid for loops">Пример: использование функции вместе с регулярным выражением для избавления от цикла <code>for</code></h3> + +<p>Следующий пример принимает строку шаблона и преобразует её в массив объектов.</p> + +<p><strong>Входные данные:</strong></p> + +<p>Строка, состоящая из символов <code>x</code>, <code>-</code> и <code>_</code></p> + +<pre>x-x_ +x---x---x---x--- +x-xxx-xx-x- +x_x_x___x___x___ +</pre> + +<p><strong>Выходные данные:</strong></p> + +<p>Массив объектов. Символ <code>'x'</code> означает состояние <code>'on'</code>, символ <code>'-'</code> (дефис) означает состояние <code>'off'</code>, а символ <code>'_'</code> (нижнее подчёркивание) означает продолжительность состояния <code>'on'</code>.</p> + +<pre class="brush: json">[ + { on: true, length: 1 }, + { on: false, length: 1 }, + { on: true, length: 2 } + ... +] +</pre> + +<p><strong>Код:</strong></p> + +<pre class="brush: js">var str = 'x-x_'; +var retArr = []; +str.replace(/(x_*)|(-)/g, function(match, p1, p2) { + if (p1) { retArr.push({ on: true, length: p1.length }); } + if (p2) { retArr.push({ on: false, length: 1 }); } +}); + +console.log(retArr); +</pre> + +<p>Этот код сгенерирует массив из трёх объектов в описанном формате без использования цикла <code>for</code>.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.11', 'String.prototype.replace')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.replace', 'String.prototype.replace')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.String.replace")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.match()")}}</li> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html new file mode 100644 index 0000000000..f938fefb64 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/replaceall/index.html @@ -0,0 +1,167 @@ +--- +title: String.prototype.replaceAll() +slug: Web/JavaScript/Reference/Global_Objects/String/replaceAll +translation_of: Web/JavaScript/Reference/Global_Objects/String/replaceAll +--- +<div>{{JSRef}}</div> + +<p><span class="seoSummary">Метод <strong><code>replaceAll()</code></strong> возвращает новую строку со всеми совпадениями <code>pattern</code> , который меняется на <code>replacement</code>. </span><code>pattern</code> может быть строкой или регулярным выражением, и <code>replacement</code> может быть строкой или функция возвращающая каждое совпадение.</p> + +<p>Исходная строка остается без изменений.</p> + +<div>{{EmbedInteractiveExample("pages/js/string-replaceall.html")}}</div> + +<p class="hidden">Исходник этого интерактивного примера находится в GitHub репозитории. Если бы вы хотели внести свой вклад в создание интерактивных примеров для проекта, пожалуйста клонируйте ссылку <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> и отпрвате нам pull request.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox notranslate">const newStr = <var>str</var>.replaceAll(<var>regexp</var>|<var>substr</var>, <var>newSubstr</var>|<var>function</var>) +</pre> + +<div class="blockIndicator note"> +<p>Когда вы используете `<var>regexp</var>` вы должны установить флаг глобального поиска ("g"), иначе вернется ошибка <code>TypeError</code>: "replaceAll must be called with a global RegExp".</p> +</div> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code><var>regexp</var></code> (pattern)</dt> + <dd>Регулярное выражение или буква с глобальным флагом поиска ("g"). Совпадения меняются на <code><var>newSubstr</var></code> или значени возвращенное указанной функцией <code><var>function</var></code>. A RegExp без глобального флага поиска ("g") вернет ошибку <code>TypeError</code>: "replaceAll must be called with a global RegExp".</dd> + <dt><code><var>substr</var></code></dt> + <dd>Подстрока, которая заменится <code><var>newSubstr</var></code>. Обрабатывается как буквенная строка, не интерпретируется как регулярное выражение.</dd> + <dt><code><var>newSubstr</var></code> (replacement)</dt> + <dd>Новая строка, которая заменяет найденные подстроки указанные в <code><var>regexp</var></code> или <code><var>substr</var></code> парамерах. Поддерживается ряд специальных шаблонов замены; смотрите "<a href="#Specifying_a_string_as_a_parameter">Specifying a string as a parameter</a>" блок ниже.</dd> + <dt><code><var>function</var></code> (replacement)</dt> + <dd>Функция вызванная при создании новой строки которая используется для замены совпадений указанных в <code><var>regexp</var></code> or <code><var>substr</var></code>. Аргументы применяемы в этой функции описываются в "<a href="#Specifying_a_function_as_a_parameter">Specifying a function as a parameter</a>" блок ниже.</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Новая строка, в которой все совпадения замены на уазанную подстроку или специальный шаблон.</p> + +<h2 id="Описание">Описание</h2> + +<p>Этот метод не изменяет исходную строку. Он просто возвращает новую.</p> + +<h3 id="Указание_строки_в_качестве_параметра">Указание строки в качестве параметра</h3> + +<p>Замененная строка может включатся в следующие специальные шаблоны:</p> + +<table class="standard-table"> + <thead> + <tr> + <th class="header" scope="col">Pattern</th> + <th class="header" scope="col">Inserts</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>$$</code></td> + <td>Вставляет <code>"$"</code>.</td> + </tr> + <tr> + <td><code>$&</code></td> + <td>Вставлет совпадения.</td> + </tr> + <tr> + <td><code>$`</code></td> + <td>Вставляет часть строки которая находится перед совпадениями (строка соответствующая шаблону).</td> + </tr> + <tr> + <td><code>$'</code></td> + <td>Вставляет часть строки которая следует после совпадения (строка соответствующая шаблону).</td> + </tr> + <tr> + <td><code>$<var>n</var></code></td> + <td>Где <code><var>n</var></code> положительное цело число меньше чем 100, вставляет <code><var>n</var></code>th строки указанные в скобках, частичные совпадения, при условии, что первый аргумент был {{jsxref("RegExp")}} object. Обратите внимание, что это 1-индексированный.</td> + </tr> + </tbody> +</table> + +<h3 id="Указание_функции_в_качестве_параметра">Указание функции в качестве параметра</h3> + +<p>Вы можете передать функцию вторым параметром. Вэтом случае, функция вызывается полсе нахождения совпадений. Результат функции может быть использованна как замещающая строка. (<strong>Внимание:</strong> Выше упомянутые специальные шаблоны замены в данном случае неприменимы.)</p> + +<p>Функция может быть вызвана многократно для каждого замененного совпадения, если регудярное выражение указано с глобальным влагом("g").</p> + +<p>Функция имеет следующие аргументы:</p> + +<table class="standard-table"> + <thead> + <tr> + <th class="header" scope="col">Possible name</th> + <th class="header" scope="col">Supplied value</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>match</code></td> + <td>Найденная построка. (Соответствуетt <code>$&</code> указанному выше)</td> + </tr> + <tr> + <td><code>p1, p2, ...</code></td> + <td><var>n</var>th количество строк найденых групповыми скобками указанные первым параметром в регулярном выражении. (Соответствует <code>$1</code>, <code>$2</code>, см. выше) Для примера, если <code>/(\a+)(\b+)/</code>, то <code>p1</code> это <code>\a+</code>, а <code>p2</code> это<code>\b+</code>.</td> + </tr> + <tr> + <td><code>offset</code></td> + <td>Смещение совпадающей подстроки в пределах всей исследуемой строки. (Например, если вся строка была 'abcd', а соответствующая подстрока была 'bc', то этот аргумент будет равен 1.)</td> + </tr> + <tr> + <td><code>string</code></td> + <td>Исследуется вся цепочка.</td> + </tr> + </tbody> +</table> + +<p>(Точное количество аргументов зависит от того, является ли первый аргумент регулярным выражением — и, если да, то аргументов будет столько сколько указанно в скобках.)</p> + +<h2 id="Examples">Examples</h2> + +<h3 id="Using_replaceAll">Using replaceAll</h3> + +<pre class="brush: js notranslate">'aabbcc'.replaceAll('b', '.'); +// 'aa..cc'</pre> + +<h3 id="Non-global_regex_throws">Non-global regex throws</h3> + +<p>Поиск с регулярными выражениями должен быть с ("g"). Это не работает:</p> + +<pre class="brush: js; example-bad notranslate">'aabbcc'.replaceAll(/b/, '.'); +TypeError: replaceAll must be called with a global RegExp +</pre> + +<p>Это работает:</p> + +<pre class="brush: js; example-good notranslate">'aabbcc'.replaceAll(/b/g, '.'); +"aa..cc" +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.replaceall', 'String.prototype.replaceAll')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.replaceAll")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("String.prototype.replace", "String.prototype.replace()")}}</li> + <li>{{jsxref("String.prototype.match", "String.prototype.match()")}}</li> + <li>{{jsxref("RegExp.prototype.exec", "RegExp.prototype.exec()")}}</li> + <li>{{jsxref("RegExp.prototype.test", "RegExp.prototype.test()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/search/index.html b/files/ru/web/javascript/reference/global_objects/string/search/index.html new file mode 100644 index 0000000000..7900ac98a0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/search/index.html @@ -0,0 +1,149 @@ +--- +title: String.prototype.search() +slug: Web/JavaScript/Reference/Global_Objects/String/search +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/search +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>search()</code></strong> выполняет поиск сопоставления между регулярным выражением и этим объектом {{jsxref("Global_Objects/String", "String")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><var>str</var>.search([<var>regexp</var>])</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>regexp</code></dt> + <dd>Необязательный параметр. Объект регулярного выражения. Если будет передан не объект регулярного выражения, он будет неявно преобразован в объект {{jsxref("Global_Objects/RegExp", "RegExp")}} через вызов конструктора <code>new RegExp(regexp)</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>При успехе метод <code>search()</code> возвращает индекс первого сопоставления с регулярным выражением внутри строки. В противном случае метод вернёт -1.</p> + +<p>Если вы хотите узнать, находится ли шаблон в строке, используйте метод <code>search()</code> (он работает почти так же, как и метод {{jsxref("RegExp.prototype.test()", "test()")}} регулярного выражения, но вместо наличия подстроки возвращает её индекс); для получения дополнительной информации (за счёт более медленного выполнения) используйте метод {{jsxref("String.prototype.match()", "match()")}} (работает так же, как метод {{jsxref("RegExp.prototype.exec()", "exec()")}} регулярного выражения).</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_search" name="Example:_Using_search">Пример: использование метода <code>search()</code></h3> + +<p>В следующем примере в журнал попадает сообщение, зависящее от успешности или неуспешности прохождения проверки.</p> + +<pre class="brush: js">function testInput(re, str) { + var midstring; + if (str.search(re) != -1) { + midstring = ' содержит '; + } else { + midstring = ' не содержит '; + } + console.log(str + midstring + re); +} + +var testString = 'hey JuDe'; +var re = /[A-Z]/g; + +testInput(re, testString); // выведет: hey Jude содержит /[A-Z]/g +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.12', 'String.prototype.search')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.search', 'String.prototype.search')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h3 id="Gecko-specific_notes" name="Gecko-specific_notes">Примечания по Gecko</h3> + +<ul> + <li>До версии {{Gecko("8.0")}}, метод <code>search()</code> был реализован неправильно; при вызове без параметров или с параметром {{jsxref("Global_Objects/undefined", "undefined")}}, он сопоставлялся строке 'undefined', вместо пустой строки. Это было исправлено; теперь и вызов <code>'a'.search()</code>, и вызов <code>'a'.search(undefined)</code> корректно возвращают 0.</li> +</ul> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.match()")}}</li> + <li>{{jsxref("RegExp.prototype.exec()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/slice/index.html b/files/ru/web/javascript/reference/global_objects/string/slice/index.html new file mode 100644 index 0000000000..5b6f3895c4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/slice/index.html @@ -0,0 +1,173 @@ +--- +title: String.prototype.slice() +slug: Web/JavaScript/Reference/Global_Objects/String/slice +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/slice +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>slice()</code></strong> извлекает часть строки и возвращает новую строку без изменения оригинальной строки.</p> + +<p>{{EmbedInteractiveExample("pages/js/string-slice.html", "taller")}}</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>str</var>.slice(<var>beginIndex</var>[, <var>endIndex</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><em><code>beginIndex</code></em></dt> + <dd>Индекс, с которого начинать извлечение (нумерация начинается с нуля). Если аргумент отрицателен, то трактуется как <code><em>str</em>.length + <em>beginIndex</em></code> (например, если <em><code>beginIndex</code></em> равен <code>-3</code>, то он трактуется как <code><em>str</em>.length - 3</code>). Если <em><code>beginIndex</code></em> не является числом при проверке {{jsxref('Number', 'Number(<var>beginIndex</var>)')}}, он трактуется как <code>0</code>.</dd> + <dd>Если <code><em>beginIndex</em></code> больше или равен <code><em>str</em>.length</code>, возвращается пустая строка.</dd> + <dt><em><code>endIndex</code></em></dt> + <dd>Индекс, <em>перед</em> которым заканчивать извлечение (нумерация начинается с нуля). Символ по этому индексу не будет включён.</dd> + <dd>Если <em><code>endIndex</code> </em>опущен или является <code>undefined</code> или больше чем <code><em>str</em>.length</code>, <code>slice()</code> извлечёт всё до конца строки. Если аргумент отрицателен, то трактуется как <code><em>str</em>.length + <em>endIndex</em></code><em> </em>(например, если <em><code>endIndex</code></em> равен <code>-3</code>, то он трактуется как <code><em>str</em>.length - 3</code>). Если аргумент не <code>undefined</code> и не является числом при проверке {{jsxref('Number', 'Number(<var>endIndex</var>)')}}, возвращается пустая строка.</dd> + <dd>Если <em><code>endIndex</code></em> указан и меньше <em><code>startIndex</code></em>, то возвращается пустая строка (например, <code>slice(-1, -3)</code> или <code>slice(3, 1)</code> вернут <code>""</code>).</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новая строка, содержащая извлеченную часть строки.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>slice()</code> извлекает текст из одной строки и возвращает новую строку. Изменения текста в одной строке не влияют на другую строку.</p> + +<p>Метод <code>slice()</code> извлекает все символы до индекса <em><code>endIndex</code></em>, не включая сам этот индекс. Вызов <code><em>str</em>.slice(1, 4)</code> извлечёт символы со второго по четвёртый (символы под индексами <code>1</code>, <code>2</code> и <code>3</code>).</p> + +<p>К примеру, вызов <code>str.slice(2, -1)</code> извлечёт символы с третьего по второй с конца строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_slice_to_create_a_new_string" name="Example:_Using_slice_to_create_a_new_string">Пример: использование метода <code>slice()</code> для создания новой строки</h3> + +<p>В следующем примере метод <code>slice()</code> используется для создания новой строки.</p> + +<pre class="brush: js notranslate">let str1 = 'Приближается утро.'; +let str2 = str1.slice(1, 8); +let str3 = str1.slice(4, -2); +let str4 = str1.slice(12); +let str5 = str1.slice(30); + +console.log(str2); // ВЫВОД: риближа +console.log(str3); // ВЫВОД: лижается утр +console.log(str4); // ВЫВОД: утро. +console.log(str5); // ВЫВОД: "" +</pre> + +<h3 id="Example_Using_slice_with_negative_indexes" name="Example:_Using_slice_with_negative_indexes">Пример: использование метода <code>slice()</code> с отрицательными индексами</h3> + +<p>В следующем примере метод <code>slice()</code> используется вместе с отрицательными индексами.</p> + +<pre class="brush: js notranslate">let str = 'Приближается утро.'; +str.slice(-3); // вернёт 'ро.' +str.slice(-3, -1); // вернёт 'ро' +str.slice(0, -1); // вернёт 'Приближается утро' +</pre> + +<p>В этом примере начальным индексом считается <code>11</code>-й символ с конца строки, а конечным - <code>16</code>-й с начала.</p> + +<pre class="brush: js notranslate">str.slice(-11, 16); // вернет 'ается утр'</pre> + +<p>Здесь начальным индексом считается <code>6</code>-й символ от начала строки, а конечным - <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">7</span></font>-й с конца.</p> + +<pre class="brush: js notranslate">str.slice(6, -7); // вернет 'жаетс'</pre> + +<p>В этом примере оба индекса считаются с конца строки: <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);">5</span></font>-й для начального индекса, <code>1</code>-й для конечного.</p> + +<pre class="brush: js notranslate">str.slice(-5, -1); // вернет 'утро'</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.13', 'String.prototype.slice')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.slice', 'String.prototype.slice')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.substr()")}}</li> + <li>{{jsxref("String.prototype.substring()")}}</li> + <li>{{jsxref("Array.prototype.slice()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/small/index.html b/files/ru/web/javascript/reference/global_objects/string/small/index.html new file mode 100644 index 0000000000..00fd79119f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/small/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.small() +slug: Web/JavaScript/Reference/Global_Objects/String/small +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/small +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>small()</code></strong> создаёт HTML-элемент {{HTMLElement("small")}}, заставляющий строку отображаться маленьким шрифтом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.small()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>small()</code> заключает строку в тег <code><small></code>: <code>"<small>str</small>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_small" name="Example:_Using_small">Пример: использование метода <code>small()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения размера строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +console.log(worldString.small()); // <small>Привет, мир</small> +console.log(worldString.big()); // <big>Привет, мир</big> +console.log(worldString.fontsize(7)); // <fontsize=7>Привет, мир</fontsize> +</pre> +<p>При помощи объекта {{domxref("HTMLElement.style", "element.style")}} вы можете получить значение атрибута <code>style</code> элемента и управлять им более обобщённым способом, например:</p> +<pre class="brush: js">document.getElementById('yourElemId').style.fontSize = '0.7em'; +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.small', 'String.prototype.small')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.fontsize()")}}</li> + <li>{{jsxref("String.prototype.big()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/split/index.html b/files/ru/web/javascript/reference/global_objects/string/split/index.html new file mode 100644 index 0000000000..90f94de449 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/split/index.html @@ -0,0 +1,229 @@ +--- +title: String.prototype.split() +slug: Web/JavaScript/Reference/Global_Objects/String/split +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String + - регулярные выражения +translation_of: Web/JavaScript/Reference/Global_Objects/String/split +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>split()</code></strong> разбивает объект {{jsxref("Global_Objects/String", "String")}} на массив строк путём разделения строки указанной подстрокой.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>str</var>.split([<var>separator</var>[, <var>limit</var>]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>separator</code></dt> + <dd>Необязательный параметр. Указывает символы, используемые в качестве разделителя внутри строки. Параметр <code>separator</code> может быть как строкой, так и {{jsxref("Global_Objects/RegExp", "регулярным выражением", "", 1)}}. Если параметр опущен, возвращённый массив будет содержать один элемент со всей строкой. Если параметр равен пустой строке, строка <code>str</code> будет преобразована в массив символов.</dd> + <dt><code>limit</code></dt> + <dd>Необязательный параметр. Целое число, определяющее ограничение на количество найденных подстрок. Метод <code>split()</code> всё равно разделяет строку на каждом сопоставлении с разделителем <code>separator</code>, но обрезает возвращаемый массив так, чтобы он содержал не более <code>limit</code> элементов.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>split()</code> возвращает новый массив.</p> + +<p>Если разделитель <code>separator</code> найден, он удаляется из строки, а подстроки возвращаются в массиве. Если разделитель опущен, массив будет содержать только один элемент, состоящий из всей строки. Если разделитель является пустой строкой, строка <code>str</code> будет преобразована в массив символов.</p> + +<p>Если разделитель является регулярным выражением, содержащим подгруппы, то каждый раз при сопоставлении с разделителем, результаты (включая те, что не определены) захвата подгруппы будут помещаться внутрь выходного массива. Однако, не все браузеры поддерживают эту возможность.</p> + +<p>{{Note("Если строка является пустой строкой, метод <code>split()</code> вернёт массив, состоящий из одной пустой строки, а не пустой массив.")}}</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_split" name="Example:_Using_split">Пример: использование метода <code>split()</code></h3> + +<p>В следующем примере определяется функция, которая разбивает строку на массив строк, используя указанный разделитель. После разбиения строки, функция отображает сообщения, показывающие оригинальную строку (до разбиения), используемый разделитель, количество элементов в массиве и сами эти элементы.</p> + +<pre class="brush: js notranslate">function splitString(stringToSplit, separator) { + var arrayOfStrings = stringToSplit.split(separator); + + console.log('Оригинальная строка: "' + stringToSplit + '"'); + console.log('Разделитель: "' + separator + '"'); + console.log('Массив содержит ' + arrayOfStrings.length + ' элементов: ' + arrayOfStrings.join(' / ')); +} + +// Строчка из «Бури» Шекспира. Перевод Миxаила Донского. +var tempestString = 'И как хорош тот новый мир, где есть такие люди!'; +var monthString = 'Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек'; + +var space = ' '; +var comma = ','; + +splitString(tempestString, space); +splitString(tempestString); +splitString(monthString, comma); +</pre> + +<p>Пример сгенерирует следующий вывод:</p> + +<pre class="notranslate">Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" +Разделитель: " " +Массив содержит 10 элементов: И / как / хорош / тот / новый / мир, / где / есть / такие / люди! + +Оригинальная строка: "И как хорош тот новый мир, где есть такие люди!" +Разделитель: "undefined" +Массив содержит 1 элементов: И как хорош тот новый мир, где есть такие люди! + +Оригинальная строка: "Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек" +Разделитель: "," +Массив содержит 12 элементов: Янв / Фев / Мар / Апр / Май / Июн / Июл / Авг / Сен / Окт / Ноя / Дек +</pre> + +<h3 id="Example_Removing_spaces_from_a_string" name="Example:_Removing_spaces_from_a_string">Пример: удаление пробелов из строки</h3> + +<p>В следующем примере метод <code>split()</code> ищет 0 или более пробелов, за которыми следует точка с запятой, за которой снова следуют 0 или более пробелов, и, если этот шаблон найден, удаляет пробелы из строки. Переменная <code>nameList</code> является массивом, возвращённым в результате работы метода <code>split()</code>.</p> + +<pre class="brush: js notranslate">var names = 'Гарри Трамп ;Фрэд Барни; Хелен Ригби ; Билл Абель ;Крис Ханд '; + +console.log(names); + +var re = /\s*;\s*/; +var nameList = names.split(re); + +console.log(nameList); +</pre> + +<p>Пример напечатает две строки; на первой строке напечатана оригинальная строчка, а на второй — получившийся массив.</p> + +<pre class="notranslate">Гарри Трамп ;Фред Барни; Хелен Ригби ; Билл Абель ;Крис Ханд +Гарри Трамп,Фред Барни,Хелен Ригби,Билл Абель,Крис Ханд +</pre> + +<h3 id="Example_Returning_a_limited_number_of_splits" name="Example:_Returning_a_limited_number_of_splits">Пример: возврат ограниченного числа подстрок</h3> + +<p>В следующем примере метод <code>split()</code> ищет 0 или более пробелов в строке и возвращает первые три найденных подстроки.</p> + +<pre class="brush: js notranslate">var myString = 'Привет, мир. Как дела?'; +var splits = myString.split(' ', 3); + +console.log(splits); +</pre> + +<p>Вывод скрипта будет следующим:</p> + +<pre class="brush: js notranslate">Привет,,мир.,Как +</pre> + +<h3 id="Example_Capturing_parentheses" name="Example:_Capturing_parentheses">Пример: захват подгрупп</h3> + +<p>Если параметр <code>separator</code> содержит подгруппы, сопоставившиеся результаты также будут присутствовать в возвращённом массиве.</p> + +<pre class="brush: js notranslate">var myString = 'Привет 1 мир. Предложение номер 2.'; +var splits = myString.split(/(\d)/); + +console.log(splits); +</pre> + +<p>Вывод скрипта будет следующим:</p> + +<pre class="brush: js notranslate">Привет ,1, мир. Предложение номер ,2,. +</pre> + +<h3 id="Example_Reversing_a_String_using_split" name="Example:_Reversing_a_String_using_split">Пример: обращение строки при помощи метода <code>split()</code></h3> + +<pre class="brush: js notranslate">var str = 'фывапролд'; +var strReverse = str.split('').reverse().join(''); // 'длорпавыф' +// split() возвращает массив, к которому применяются методы reverse() и join() +</pre> + +<p><strong>Бонус:</strong> используя оператор {{jsxref("Operators/Comparison_Operators", "===", "#Identity_.2F_strict_equality_(.3D.3D.3D)")}}, можно проверить, являлась ли строка палиндромом.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.14', 'String.prototype.split')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.split', 'String.prototype.split')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.charAt()")}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> + <li>{{jsxref("Array.prototype.join()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/startswith/index.html b/files/ru/web/javascript/reference/global_objects/string/startswith/index.html new file mode 100644 index 0000000000..d9228e2925 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/startswith/index.html @@ -0,0 +1,81 @@ +--- +title: String.prototype.startsWith() +slug: Web/JavaScript/Reference/Global_Objects/String/startsWith +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/startsWith +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>startsWith()</code></strong> помогает определить, начинается ли строка с символов указаных в скобках, возвращая, соответственно, <code>true</code> или <code>false</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code><var>str</var>.startsWith(<var>searchString</var>[, <var>position</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>searchString</code></dt> + <dd>Символы, искомые в начале данной строки.</dd> + <dt><code>position</code></dt> + <dd>Необязательный параметр. Позиция в строке, с которой начинать поиск <code>searchString</code>; по умолчанию 0.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Этот метод позволяет определять, начинается ли строка с указанных в скобках символов.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_startsWith" name="Example:_Using_startsWith">Пример: использование метода <code>startsWith()</code></h3> + +<pre class="brush: js notranslate">var str = 'Быть или не быть, вот в чём вопрос.'; + +console.log(str.startsWith('Быть')); // true +console.log(str.startsWith('не быть')); // false +console.log(str.startsWith('не быть', 9)); // true +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Этот метод был добавлен к спецификации ECMAScript 6 и может быть доступен ещё не во всех реализациях JavaScript. Однако, вы можете легко эмулировать этот метод при помощи следующего кода:</p> + +<pre class="brush: js notranslate">if (!String.prototype.startsWith) { + Object.defineProperty(String.prototype, 'startsWith', { + enumerable: false, + configurable: false, + writable: false, + value: function(searchString, position) { + position = position || 0; + return this.indexOf(searchString, position) === position; + } + }); +} +</pre> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div class="hidden"> +<p>The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.String.startsWith")}}</p> + +<div id="compat-mobile"></div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.endsWith()")}} {{experimental_inline}}</li> + <li>{{jsxref("String.prototype.includes()")}} {{experimental_inline}}</li> + <li>{{jsxref("String.prototype.indexOf()")}}</li> + <li>{{jsxref("String.prototype.lastIndexOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/strike/index.html b/files/ru/web/javascript/reference/global_objects/string/strike/index.html new file mode 100644 index 0000000000..5ecaf8cfb4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/strike/index.html @@ -0,0 +1,114 @@ +--- +title: String.prototype.strike() +slug: Web/JavaScript/Reference/Global_Objects/String/strike +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/strike +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>strike()</code></strong> создаёт HTML-элемент {{HTMLElement("strike")}}, заставляющий строку отображаться зачёркнутым текстом.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.strike()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>strike()</code> заключает строку в тег <code><strike></code>: <code>"<strike>str</strike>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_strike" name="Example:_Using_strike">Пример: использование метода <code>strike()</code></h3> +<p>В следующем примере демонстрируется использование нескольких строковых методов для изменения форматирования строки:</p> +<pre class="brush: js">var worldString = 'Привет, мир'; + +document.write(worldString.blink()); +document.write(worldString.bold()); +document.write(worldString.italics()); +document.write(worldString.strike()); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html"><blink>Привет, мир</blink> +<b>Привет, мир</b> +<i>Привет, мир</i> +<strike>Привет, мир</strike> +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.strike', 'String.prototype.strike')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.blink()")}}</li> + <li>{{jsxref("String.prototype.bold()")}}</li> + <li>{{jsxref("String.prototype.italics()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/sub/index.html b/files/ru/web/javascript/reference/global_objects/string/sub/index.html new file mode 100644 index 0000000000..69b0c4483c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/sub/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.sub() +slug: Web/JavaScript/Reference/Global_Objects/String/sub +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/sub +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>sub()</code></strong> создаёт HTML-элемент {{HTMLElement("sub")}}, заставляющий строку отображаться подстрочным текстом (нижним индексом).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.sub()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>sub()</code> заключает строку в тег <code><sub></code>: <code>"<sub>str</sub>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_sub_and_sup_methods_to_format_a_string" name="Example:_Using_sub_and_sup_methods_to_format_a_string">Пример: использование методов <code>sub()</code> и <code>sup()</code></h3> +<p>В следующем примере для форматирования строки используются методы <code>sub()</code> и {{jsxref("String.prototype.sup()", "sup()")}}:</p> +<pre class="brush: js">var superText = 'надстрочный'; +var subText = 'подстрочный'; + +document.write('Вот так выглядит ' + superText.sup() + ' текст.'); +document.write('Вот так выглядит ' + subText.sub() + ' текст.'); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html">Вот так выглядит <sup>надстрочный</sup> текст. +Вот так выглядит <sub>подстрочный</sub> текст. +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.sub', 'String.prototype.sub')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.sup()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/substr/index.html b/files/ru/web/javascript/reference/global_objects/string/substr/index.html new file mode 100644 index 0000000000..cfc0191ea7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/substr/index.html @@ -0,0 +1,116 @@ +--- +title: String.prototype.substr() +slug: Web/JavaScript/Reference/Global_Objects/String/substr +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substr +--- +<div> +<div>{{JSRef}}</div> + +<div></div> + +<div class="warning">Внимание: так как <code>String.prototype.substr(…)</code> не полностью упразднена (а лишь "удалена из стандартов по вебу"), она считается <strong>унаследованной функцией</strong>, использование которой лучше избегать там, где это возможно. Она не является частью ядра языка JavaScript и может быть удалена в будущем. Если есть возможность, используйте метод <code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/String/substring">substring()</a></code>.</div> + +<p>Метод <strong><code>substr()</code></strong> возвращает указанное количество символов из строки, начиная с указанной позиции.</p> +{{EmbedInteractiveExample("pages/js/string-substr.html")}} + + + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.substr(<var>start</var>[, <var>length</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>start</code></dt> + <dd>Позиция, с которой начинать извлекать символы. Если передано отрицательное число, она трактуется как <code>strLength - start</code>, где <code>strLength</code> равна длине строки (например, если параметр <code>start</code> равен -3, то он трактуется как <code>strLength - 3</code>.)</dd> + <dt><code>length</code></dt> + <dd>Необязательный параметр. Количество извлекаемых символов.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Новая строка, содержащая часть исходной, обрезанной по переданным параметрам.</p> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Параметр <code>start</code> является индексом символа. Индекс первого символа равен 0, а последнего символа — на один меньше длины строки. Метод <code>substr()</code> начинает извлекать символы начиная с позиции <code>start</code> и собирая <code>length</code> символов (если он не достигнет раньше конца строки, в этом случае будет возвращено меньшее количество символов).</p> + +<p>Если параметр <code>start</code> является положительным и он больше, либо равен длине строки, метод <code>substr()</code> вернёт пустую строку.</p> + +<p>Если параметр <code>start</code> является отрицательным, метод <code>substr()</code> использует его как индекс символа, начиная с конца строки. Если параметр <code>start</code> отрицателен и по модулю больше длины строки, метод <code>substr()</code> будет использовать 0 в качестве начального индекса. Обратите внимание: описанная обработка отрицательных значений аргумента <code>start</code> не поддерживается JScript от Microsoft.</p> + +<p>Если параметр <code>length</code> равен нулю или отрицателен, метод <code>substr()</code> вернёт пустую строку. Если параметр <code>length</code> опущен, метод <code>substr()</code> извлечёт все символы до конца строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example_Using_substr" name="Example:_Using_substr">Использование метода <code>substr()</code></h3> + +<pre class="brush: js">var str = 'абвгдеёжзи'; + +console.log('(1, 2): ' + str.substr(1, 2)); // '(1, 2): бв' +console.log('(-3, 2): ' + str.substr(-3, 2)); // '(-3, 2): жз' +console.log('(-3): ' + str.substr(-3)); // '(-3): жзи' +console.log('(1): ' + str.substr(1)); // '(1): бвгдеёжзи' +console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): аб' +console.log('(20, 2): ' + str.substr(20, 2)); // '(20, 2): ' +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>JScript от Microsoft не поддерживает отрицательные значения для начального индекса. Если вы хотите использовать эту возможность, вы можете использовать следующий код совместимости для обхода этой ошибки:</p> + +<pre class="brush: js">// only run when the substr() function is broken +if ('ab'.substr(-1) != 'b') { + /** + * Get the substring of a string + * @param {integer} start where to start the substring + * @param {integer} length how many characters to return + * @return {string} + */ + String.prototype.substr = function(substr) { + return function(start, length) { + // call the original method + return substr.call(this, + // did we get a negative start, calculate how much it is from the beginning of the string + // adjust the start parameter for negative value + start < 0 ? this.length + start : start, + length) + } + }(String.prototype.substr); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-string.prototype.substr', 'String.prototype.substr')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.String.substr")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.slice()")}}</li> + <li>{{jsxref("String.prototype.substring()")}}</li> +</ul> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/string/substring/index.html b/files/ru/web/javascript/reference/global_objects/string/substring/index.html new file mode 100644 index 0000000000..9efb4f84a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/substring/index.html @@ -0,0 +1,194 @@ +--- +title: String.prototype.substring() +slug: Web/JavaScript/Reference/Global_Objects/String/substring +tags: + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/substring +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>substring()</code></strong> возвращает подстроку строки между двумя индексами, или от одного индекса и до конца строки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.substring(<var>indexA</var>[, <var>indexB</var>])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>indexA</code></dt> + <dd>Целое число от <code>0</code> до длины строки, определяющее смещение в строке первого символа, который будет включён в результирующую подстроку.</dd> + <dt><code>indexB</code></dt> + <dd>Необязательный параметр. Целое число от <code>0</code> до длины строки, определяющее смещение в строке первого символа, который <strong>не будет</strong> включён в результирующую подстроку.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>substring()</code> извлекает символы, начиная с индекса <code>indexA</code> до, но не включая, индекс <code>indexB</code>. В частности:</p> + +<ul> + <li>Если аргумент <code>indexA</code> равен аргументу <code>indexB</code>, метод <code>substring()</code> вернёт пустую строку.</li> + <li>Если аргумент <code>indexB</code> опущен, метод <code>substring()</code> извлечёт символы до конца строки.</li> + <li>Если любой из аргументов меньше, либо равен нулю или равен {{jsxref("Global_Objects/NaN", "NaN")}}, он будет трактоваться как равный 0.</li> + <li>Если любой из аргументов больше, чем <code>stringName.length</code>, он будет трактоваться как равный <code>stringName.length</code>.</li> +</ul> + +<p>Если аргумент <code>indexA</code> будет больше аргумента <code>indexB</code>, то метод <code>substring()</code> сработает так, как если бы аргументы были поменяны местами; например, <code><em>str</em>.substring(1, 0) == <em>str</em>.substring(0, 1)</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_substring" name="Example:_Using_substring">Пример: использование метода <code>substring()</code></h3> + +<p>В следующем примере метод <code>substring()</code> используется для отображения символов из строки <code>'Mozilla'</code>:</p> + +<pre class="brush: js">var anyString = 'Mozilla'; + +// Отобразит 'Moz' +console.log(anyString.substring(0, 3)); +console.log(anyString.substring(3, 0)); + +// Отобразит 'lla' +console.log(anyString.substring(4, 7)); +console.log(anyString.substring(7, 4)); + +// Отобразит 'Mozill' +console.log(anyString.substring(0, 6)); + +// Отобразит 'Mozilla' +console.log(anyString.substring(0, 7)); +console.log(anyString.substring(0, 10)); +</pre> + +<h3 id="Example:_Using_substring_with_length_property" name="Example:_Using_substring_with_length_property">Пример: использование метода <code>substring()</code> вместе со свойством <code>length</code></h3> + +<p>Следующий пример использует метод <code>substring()</code> и свойство {{jsxref("String.length", "length")}} для извлечения последних символов из строки. Этот метод может оказаться легче для запоминания, особенно если учесть, что вам не нужно знать начальный и конечный индексы, как это было в примере выше.</p> + +<pre class="brush: js">// Отобразит 'illa' - последние 4 символа +var anyString = 'Mozilla'; +var anyString4 = anyString.substring(anyString.length - 4); +console.log(anyString4); + +// Отобразит 'zilla' - последние 5 символов +var anyString = 'Mozilla'; +var anyString5 = anyString.substring(anyString.length - 5); +console.log(anyString5); +</pre> + +<h3 id="Example:_Replacing_a_substring_within_a_string" name="Example:_Replacing_a_substring_within_a_string">Пример: замена подстроки в строке</h3> + +<p>Следующий пример демонстрирует замену подстроки в строке. Он заменит как отдельные символы, так и целые подстроки. Вызов функции в конце примера изменит строку <code>'Дивный новый мир'</code> на строку <code>'Дивный новый веб'</code>.</p> + +<pre class="brush: js">// Заменяет oldS на newS в строке fullS +function replaceString(oldS, newS, fullS) { + for (var i = 0; i < fullS.length; ++i) { + if (fullS.substring(i, i + oldS.length) == oldS) { + fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length); + } + } + return fullS; +} + +replaceString('мир', 'веб', 'Дивный новый мир'); +</pre> + +<p>Обратите внимание, что функция может скатиться в беcконечный цикл, если строка <code>oldS</code> сама является подстрокой для <code>newS</code> — например, если вы попытаетесь заменить слово «мир» на слово «другоймир». Лучше использоваться следующий метод для замены строк:</p> + +<pre class="brush: js">function replaceString(oldS, newS, fullS) { + return fullS.split(oldS).join(newS); +} +</pre> + +<p>Код выше следует рассматривать всего лишь как пример работы с подстроками. Если вам нужно заменить подстроки, скорее всего вы захотите использовать метод {{jsxref("String.prototype.replace()")}}.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.15', 'String.prototype.substring')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.substring', 'String.prototype.substring')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.substr()")}}</li> + <li>{{jsxref("String.prototype.slice()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/sup/index.html b/files/ru/web/javascript/reference/global_objects/string/sup/index.html new file mode 100644 index 0000000000..092b08a314 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/sup/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.sup() +slug: Web/JavaScript/Reference/Global_Objects/String/sup +tags: + - Deprecated + - JavaScript + - Method + - Prototype + - Reference + - String + - Методы оборачивания в HTML +translation_of: Web/JavaScript/Reference/Global_Objects/String/sup +--- +<div>{{JSRef("Global_Objects", "String")}} {{deprecated_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>sup()</code></strong> создаёт HTML-элемент {{HTMLElement("sup")}}, заставляющий строку отображаться надстрочным текстом (верхним индексом).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.sup()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>sup()</code> заключает строку в тег <code><sup></code>: <code>"<sup>str</sup>"</code>.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_sub_and_sup_methods_to_format_a_string" name="Example:_Using_sub_and_sup_methods_to_format_a_string">Пример: использование методов <code>sub()</code> и <code>sup()</code></h3> +<p>В следующем примере для форматирования строки используются методы {{jsxref("String.prototype.sub()", "sub()")}} и <code>sup()</code>:</p> +<pre class="brush: js">var superText = 'надстрочный'; +var subText = 'подстрочный'; + +document.write('Вот так выглядит ' + superText.sup() + ' текст.'); +document.write('Вот так выглядит ' + subText.sub() + ' текст.'); +</pre> +<p>Этот пример генерирует такой же вывод, как и следующий HTML:</p> +<pre class="brush: html">Вот так выглядит <sup>надстрочный</sup> текст. +Вот так выглядит <sub>подстрочный</sub> текст. +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.sup', 'String.prototype.sup')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.<br> + Определена в (нормативном) Приложении B по Дополнительным возможностям ECMAScript для веб-браузеров.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("1.0")}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.sub()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html new file mode 100644 index 0000000000..16950a2077 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolocalelowercase/index.html @@ -0,0 +1,110 @@ +--- +title: String.prototype.toLocaleLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleLowerCase +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toLocaleLowerCase()</code></strong> возвращает значение строки, на которой он был вызван, преобразованное в нижний регистр согласно правилам преобразования регистра локали.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.toLocaleLowerCase()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toLocaleLowerCase()</code> возвращает значение строки, преобразованное в нижний регистр согласно правилам преобразования регистра локали. Метод <code>toLocaleLowerCase()</code> не изменяет значение самой строки. В большинстве случаев он возвращает тот же результат, что и метод {{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}, но для некоторых локалей, например, турецкой, в которой правила преобразования регистра отличаются от правил по умолчанию, принятых в Юникоде, он может вернуть другой результат.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleLowerCase" name="Example:_Using_toLocaleLowerCase">Пример: использование метода <code>toLocaleLowerCase()</code></h3> +<pre class="brush: js">console.log('АЛФАВИТ'.toLocaleLowerCase()); // 'алфавит' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.17', 'String.prototype.toLocaleLowerCase')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.tolocalelowercase', 'String.prototype.toLocaleLowerCase')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li> + <li>{{jsxref("String.prototype.toLowerCase()")}}</li> + <li>{{jsxref("String.prototype.toUpperCase()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html new file mode 100644 index 0000000000..290852f30e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolocaleuppercase/index.html @@ -0,0 +1,110 @@ +--- +title: String.prototype.toLocaleUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +tags: + - Internationalization + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLocaleUpperCase +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toLocaleUpperCase()</code></strong> возвращает значение строки, на которой он был вызван, преобразованное в верхний регистр согласно правилам преобразования регистра локали.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.toLocaleUpperCase()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toLocaleUpperCase()</code> возвращает значение строки, преобразованное в верхний регистр согласно правилам преобразования регистра локали. Метод <code>toLocaleUpperCase()</code> не изменяет значение самой строки. В большинстве случаев он возвращает тот же результат, что и метод {{jsxref("String.prototype.toUpperCase()", "toUpperCase()")}}, но для некоторых локалей, например, турецкой, в которой правила преобразования регистра отличаются от правил по умолчанию, принятых в Юникоде, он может вернуть другой результат.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLocaleUpperCase" name="Example:_Using_toLocaleUpperCase">Пример: использование метода <code>toLocaleUpperCase()</code></h3> +<pre class="brush: js">console.log('алфавит'.toLocaleUpperCase()); // 'АЛФАВИТ' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.2.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.19', 'String.prototype.toLocaleUpperCase')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.tolocaleuppercase', 'String.prototype.toLocaleUpperCase')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li> + <li>{{jsxref("String.prototype.toLowerCase()")}}</li> + <li>{{jsxref("String.prototype.toUpperCase()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html b/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html new file mode 100644 index 0000000000..c79c41ad6e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tolowercase/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.toLowerCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toLowerCase +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toLowerCase()</code></strong> возвращает значение строки, на которой он был вызван, преобразованное в нижний регистр.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.toLowerCase()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toLowerCase()</code> возвращает значение строки, преобразованное в нижний регистр. Метод <code>toLowerCase()</code> не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toLowerCase" name="Example:_Using_toLowerCase">Пример: использование метода <code>toLowerCase()</code></h3> +<pre class="brush: js">console.log('АЛФАВИТ'.toLowerCase()); // 'алфавит' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.16', 'String.prototype.toLowerCase')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.tolowercase', 'String.prototype.toLowerCase')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li> + <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li> + <li>{{jsxref("String.prototype.toUpperCase()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/tosource/index.html b/files/ru/web/javascript/reference/global_objects/string/tosource/index.html new file mode 100644 index 0000000000..3570fd5b48 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tosource/index.html @@ -0,0 +1,91 @@ +--- +title: String.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/String/toSource +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toSource +--- +<div>{{JSRef("Global_Objects", "String")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toSource()</code></strong> возвращает строковое представление исходного кода объекта.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>String.toSource() +<var>str</var>.toSource() +</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toSource()</code> возвращает следующие значения:</p> +<ul> + <li>Для встроенного объекта {{jsxref("Global_Objects/String", "String")}} метод <code>toSource()</code> возвращает следующую строку, указывающую, что исходный код недоступен: +<pre class="brush: js">function String() { + [native code] +} +</pre> + </li> + <li>Для экземпляров объекта {{jsxref("Global_Objects/String", "String")}} или строковых литералов, метод <code>toSource()</code> возвращает строковое представление исходного кода.</li> +</ul> +<p>Этот метод обычно вызывается внутренними механизмаим движка JavaScript, а не явно в коде.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/tostring/index.html b/files/ru/web/javascript/reference/global_objects/string/tostring/index.html new file mode 100644 index 0000000000..6987aa12ba --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/tostring/index.html @@ -0,0 +1,111 @@ +--- +title: String.prototype.toString() +slug: Web/JavaScript/Reference/Global_Objects/String/toString +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toString +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toString()</code></strong> возвращает строку, представляющую указанный объект.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.toString()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Объект {{jsxref("Global_Objects/String", "String")}} переопределяет метод <code>toString()</code>, унаследованный из объекта {{jsxref("Global_Objects/Object", "Object")}}; он не наследует метод {{jsxref("Object.prototype.toString()")}}. Для объектов {{jsxref("Global_Objects/String", "String")}} метод <code>toString()</code> возвращает строку, представляющую объект и делает тоже самое, что и метод {{jsxref("String.prototype.valueOf()")}}.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toString" name="Example:_Using_toString">Пример: использование метода <code>toString()</code></h3> +<p>В следующем примере выводится строковое значение объекта {{jsxref("Global_Objects/String", "String")}}:</p> +<pre class="brush: js">var x = new String('Привет, мир'); + +console.log(x.toString()); // Отобразит 'Привет, мир' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.2', 'String.prototype.toString')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.tostring', 'String.prototype.toString')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Object.prototype.toSource()")}}</li> + <li>{{jsxref("String.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html b/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html new file mode 100644 index 0000000000..96354d60e9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/touppercase/index.html @@ -0,0 +1,109 @@ +--- +title: String.prototype.toUpperCase() +slug: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/toUpperCase +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>toUpperCase()</code></strong> возвращает значение строки, на которой он был вызван, преобразованное в верхний регистр.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.toUpperCase()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>toUpperCase()</code> возвращает значение строки, преобразованное в верхний регистр. Метод <code>toUpperCase()</code> не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_toUpperCase" name="Example:_Using_toUpperCase">Пример: использование метода <code>toUpperCase()</code></h3> +<pre class="brush: js">console.log('алфавит'.toUpperCase()); // 'АЛФАВИТ' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.0.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.18', 'String.prototype.toUpperCase')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.touppercase', 'String.prototype.toUpperCase')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.toLocaleLowerCase()")}}</li> + <li>{{jsxref("String.prototype.toLocaleUpperCase()")}}</li> + <li>{{jsxref("String.prototype.toLowerCase()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/trim/index.html b/files/ru/web/javascript/reference/global_objects/string/trim/index.html new file mode 100644 index 0000000000..e7f2037942 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trim/index.html @@ -0,0 +1,135 @@ +--- +title: String.prototype.trim() +slug: Web/JavaScript/Reference/Global_Objects/String/Trim +tags: + - ECMAScript5 + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/Trim +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>trim()</code></strong> удаляет пробельные символы с начала и конца строки. Пробельными символами в этом контексте считаются все собственно пробельные символы (пробел, табуляция, неразрывный пробел и прочие) и все символы конца строки (LF, CR и прочие).</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.trim()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>trim()</code> возвращает строку с вырезанными пробельными символами с её концов. Метод <code>trim()</code> не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_trim" name="Example:_Using_trim">Пример: использование метода <code>trim()</code></h3> + +<p>Следующий пример покажет строку <code>'foo'</code>:</p> + +<pre class="brush: js">var orig = ' foo '; +console.log(orig.trim()); // 'foo' + +// Другой пример, в котором .trim() убирает пробельные символы только с одной стороны. + +var orig = 'foo '; +console.log(orig.trim()); // 'foo' +</pre> + +<h2 id="Polyfill" name="Polyfill">Полифилл</h2> + +<p>Запуск следующего кода до любого другого создаст метод <code>trim()</code>, если он ещё не реализуется браузером.</p> + +<pre class="brush: js">if (!String.prototype.trim) { + (function() { + // Вырезаем BOM и неразрывный пробел + String.prototype.trim = function() { + return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }; + })(); +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.20', 'String.prototype.trim')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Изначальное определение. Реализована в JavaScript 1.8.1.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.trim', 'String.prototype.trim')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatIE("9")}}</td> + <td>{{CompatOpera("10.5")}}</td> + <td>{{CompatSafari("5")}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.trimLeft()")}} {{non-standard_inline}}</li> + <li>{{jsxref("String.prototype.trimRight()")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html b/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html new file mode 100644 index 0000000000..f60326e795 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trimleft/index.html @@ -0,0 +1,93 @@ +--- +title: String.prototype.trimLeft() +slug: Web/JavaScript/Reference/Global_Objects/String/TrimLeft +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimStart +--- +<div>{{JSRef("Global_Objects", "String")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>trimLeft()</code></strong> удаляет пробельные символы с левого конца строки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.trimLeft()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>trimLeft()</code> возвращает строку с вырезанными пробельными символами с её левого конца. Метод <code>trimLeft()</code> не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_trimLeft" name="Example:_Using_trimLeft">Пример: использование метода <code>trimLeft()</code></h3> +<p>Следующий пример покажет строку <code style="white-space: pre;">'foo '</code>:</p> +<pre class="brush: js; highlight: [5]">var str = ' foo '; + +console.log(str.length); // 8 + +str = str.trimLeft(); +console.log(str.length); // 5 +console.log(str); // 'foo ' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.8.1.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.trim()")}}</li> + <li>{{jsxref("String.prototype.trimRight()")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/trimright/index.html b/files/ru/web/javascript/reference/global_objects/string/trimright/index.html new file mode 100644 index 0000000000..4a7bd8e907 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/trimright/index.html @@ -0,0 +1,93 @@ +--- +title: String.prototype.trimRight() +slug: Web/JavaScript/Reference/Global_Objects/String/TrimRight +tags: + - JavaScript + - Method + - Non-standard + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/trimEnd +--- +<div>{{JSRef("Global_Objects", "String")}} {{non-standard_header}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Метод <strong><code>trimRight()</code></strong> удаляет пробельные символы с правого конца строки.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code><var>str</var>.trimRight()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> +<p>Метод <code>trimRight()</code> возвращает строку с вырезанными пробельными символами с её правого конца. Метод <code>trimRight()</code> не изменяет значение самой строки.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_trimRight" name="Example:_Using_trimRight">Пример: использование метода <code>trimRight()</code></h3> +<p>Следующий пример покажет строку <code style="white-space: pre;">' foo'</code>:</p> +<pre class="brush: js; highlight: [5]">var str = ' foo '; + +console.log(str.length); // 8 + +str = str.trimRight(); +console.log(str.length); // 5 +console.log(str); // ' foo' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<p>Не является частью какого-либо стандарта. Реализована в JavaScript 1.8.1.</p> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("1.9.1")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("String.prototype.trim()")}}</li> + <li>{{jsxref("String.prototype.trimLeft()")}} {{non-standard_inline}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/string/valueof/index.html b/files/ru/web/javascript/reference/global_objects/string/valueof/index.html new file mode 100644 index 0000000000..26eba20671 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/string/valueof/index.html @@ -0,0 +1,120 @@ +--- +title: String.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/String/valueOf +tags: + - JavaScript + - Method + - Prototype + - Reference + - String +translation_of: Web/JavaScript/Reference/Global_Objects/String/valueOf +--- +<div>{{JSRef("Global_Objects", "String")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Метод <strong><code>valueOf()</code></strong> возвращает примитивное значение объекта {{jsxref("Global_Objects/String", "String")}}.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>str</var>.valueOf()</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Метод <code>valueOf()</code> возвращает примитивное значение объекта {{jsxref("Global_Objects/String", "String")}} в виде строкового типа данных. Это значение эквивалентно значению вызова метода {{jsxref("String.prototype.toString()")}}.</p> + +<p>Этот метод обычно вызывается внутренними механизмами движка JavaScript, а не явно в коде.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Using_valueOf" name="Example:_Using_valueOf">Пример: использование метода <code>valueOf()</code></h3> + +<pre class="brush: js">var x = new String('Привет, мир'); +console.log(x.valueOf()); // Отобразит 'Привет, мир' +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.1.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.5.4.3', 'String.prototype.valueOf')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-string.prototype.valueof', 'String.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("String.prototype.toString()")}}</li> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html b/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html new file mode 100644 index 0000000000..680100f800 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/@@toprimitive/index.html @@ -0,0 +1,66 @@ +--- +title: 'Symbol.prototype[@@toPrimitive]' +slug: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive +tags: + - ECMAScript 2015 + - ECMAScript6 + - JavaScript + - Method + - Prototype + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/@@toPrimitive +--- +<div>{{JSRef}}</div> + +<div></div> + +<p>Метод <code><strong>[@@toPrimitive]()</strong></code> <span style="font-size: 1rem; letter-spacing: -0.00278rem;">преобразует объект Symbol в примитивное значение.</span></p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>Symbol()[Symbol.toPrimitive](hint) +</var></pre> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Примитивное значение указанного объекта Symbol {{jsxref("Symbol")}}.</p> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>[@@toPrimitive]()</code><span style="font-size: 1rem; letter-spacing: -0.00278rem;"> возвращает примитивное значение объекта Symbol как тип данных Symbol. Аргумент </span><code style="font-size: 1rem; letter-spacing: -0.00278rem;">hint</code><span style="font-size: 1rem; letter-spacing: -0.00278rem;"> не используется.</span></p> + +<p>JavaScript вызывает метод<code style="font-size: 1rem; letter-spacing: -0.00278rem;">[@@toPrimitive] ()</code><span style="font-size: 1rem; letter-spacing: -0.00278rem;"> для преобразования объекта в примитив. </span><span style="font-size: 1rem; letter-spacing: -0.00278rem;">JavaScript автоматически вызывает метод, когда на месте</span><span style="font-size: 1rem; letter-spacing: -0.00278rem;"> объекта ожидается примитивное значение.</span></p> + +<h2 id="Спефикации">Спефикации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Коментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.prototype-@@toprimitive', 'Symbol.prototype.@@toPrimitive')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Symbol.@@toPrimitive")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Symbol.toPrimitive")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/for/index.html b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html new file mode 100644 index 0000000000..5b4a6ee85c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/for/index.html @@ -0,0 +1,140 @@ +--- +title: Symbol.for() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/for +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/for +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>Symbol.for(key)</strong></code> ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создается новый разделяемый символ для данного ключа в глобальном реестре символов.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>Symbol.for(key)</var>;</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Строка, обязательный. Идентификатор символа (также используется в качестве описания символа).</dd> +</dl> + +<h2 id="Описание">Описание</h2> + +<p>В противоположность вызову <code>Symbol()</code>, функция <code>Symbol.for()</code> создаёт символ, доступный в глобальном списке реестра символов. <code>Symbol.for()</code> не создаёт новый символ при каждом вызове, вместо этого, метод сначала проверяет, существует ли символ с заданным идентификатором в реестре — и возвращает его, если тот присутствует. Если символ с заданным ключом не найден, <code>Symbol.for()</code> создаст новый глобальный символ.</p> + +<h3 id="Глобальный_реестр">Глобальный реестр</h3> + +<p>Глобальный реестр символов — это список со следующей структурой записей и пустой при инициализации:</p> + +<table class="standard-table"> + <caption>Элемент глобального реестра символов</caption> + <tbody> + <tr> + <th>Поле</th> + <th>Значение</th> + </tr> + <tr> + <td>[[key]]</td> + <td>Строка, используемая в качестве идентификатора.</td> + </tr> + <tr> + <td>[[symbol]]</td> + <td>Символ, хранящийся глобально.</td> + </tr> + </tbody> +</table> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">Symbol.for("foo"); // создаёт новый глобальный символ +Symbol.for("foo"); // возвращает символ, созданный прежде + +// Одинаковый глобальный символ, но не локальный +Symbol.for("bar") === Symbol.for("bar"); // true +Symbol("bar") === Symbol("bar"); // false + +// Идентификатор также используется в качестве описания +var sym = Symbol.for("mario"); +sym.toString(); // "Symbol(mario)" +</pre> + +<p>Чтобы предотвратить конфликт имён ваших глобальных символов и глобальных символов из других библиотек, может оказаться неплохой идеей использование префиксов:</p> + +<pre class="brush: js">Symbol.for("mdn.foo"); +Symbol.for("mdn.bar"); +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.for', 'Symbol.for')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{ CompatChrome(40) }}</td> + <td>{{ CompatGeckoDesktop("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Symbol.prototype.keyFor()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html b/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html new file mode 100644 index 0000000000..48c2d59173 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/hasinstance/index.html @@ -0,0 +1,71 @@ +--- +title: Symbol.hasInstance +slug: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +tags: + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance +--- +<div>{{JSRef}}</div> + +<p><strong><code>Symbol.hasInstance</code></strong> — известный символ, который используется для определения является ли объект экземпляром конструктора. Этот символ используется для изменения поведения оператора {{jsxref("Operators/instanceof", "instanceof")}}.</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Примеры">Примеры</h2> + +<p>Поведение <code>instanceof</code> может быть изменено, например, следующим образом:</p> + +<pre class="brush: js">class MyArray { + static [Symbol.hasInstance](instance) { + return Array.isArray(instance); + } +} +console.log([] instanceof MyArray); // true</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.hasinstance', 'Symbol.hasInstance')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Symbol.hasInstance")}}</p> + +<p> </p> + +<div id="compat-desktop"> </div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Operators/instanceof", "instanceof")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/index.html b/files/ru/web/javascript/reference/global_objects/symbol/index.html new file mode 100644 index 0000000000..9dbecb81cb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/index.html @@ -0,0 +1,227 @@ +--- +title: Symbol +slug: Web/JavaScript/Reference/Global_Objects/Symbol +tags: + - API + - ECMAScript6 + - JavaScript + - Symbol + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +<div>{{JSRef}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p><strong style="line-height: 1.5;">Символ (анг. Symbol)</strong><span style="line-height: 1.5;"> — это уникальный и неизменяемый тип данных, который может быть использован как идентификатор для свойств объектов. </span><em>Символьный объект (анг. symbol object) </em>— это объект-обёртка (англ. wrapper) для <span style="line-height: 1.5;">{{Glossary("Primitive", "примитивного")}} символьного типа.</span></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>Symbol(<em>[описание]</em>)</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>описание</code> {{optional_inline}}</dt> + <dd>Необязательный, строка. Описание символа, которое может быть использовано во время отладки, но не для доступа к самому символу.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Чтобы создать новый символьный примитив, достаточно написать <code>Symbol()</code>, указав по желанию строку в качестве описания этого символа:</p> + +<pre class="brush: js">var sym1 = Symbol(); +var sym2 = Symbol("foo"); +var sym3 = Symbol("foo"); +</pre> + +<p>Код выше создает три новых символа. Заметьте, что <code>Symbol("foo")</code> не выполняет приведение (англ. coercion) строки "foo" к символу. Это выражение создает каждый раз новый символ:</p> + +<pre class="brush: js">Symbol("foo") === Symbol("foo"); // false</pre> + +<p>Код ниже с оператором {{jsxref("Operators/new", "new")}} бросит исключение {{jsxref("TypeError")}}:</p> + +<pre class="brush: js">var sym = new Symbol(); // TypeError</pre> + +<p>Это удерживает разработчиков от создания явного объекта-обёртки <code>Symbol </code>вместо нового символьного значения. Создание явных объектов-обёрток для примитивных типов доступно (например, <code>new Boolean</code>, <code>new String</code>, <code>new Number</code>).</p> + +<p>Если вам действительно необходимо обернуть символ в объект, вы можете использовать функцию <code>Object()</code>:</p> + +<pre class="brush: js">var sym = Symbol("foo"); +typeof sym; // "symbol" +var symObj = Object(sym); +typeof symObj; // "object" +</pre> + +<h3 id="Разделяемые_символы_в_глобальном_символьном_реестре">Разделяемые символы в глобальном символьном реестре</h3> + +<p>Приведенный выше синтаксис, использующий функцию <code>Symbol(),</code> не создаст глобальный символ, который был бы доступен в любом месте вашего кода. Для создания символов, доступных во всех файлах и в окружении (глобальной области), используйте методы {{jsxref("Symbol.for()")}} и {{jsxref("Symbol.keyFor()")}}, чтобы задать или получить символ из глобального символьного реестра.</p> + +<h3 id="Поиск_символьных_свойств_у_объектов">Поиск символьных свойств у объектов</h3> + +<p>Метод {{jsxref("Object.getOwnPropertySymbols()")}} возвращает массив символов и позволяет получить символьные свойства конкретного объекта. Следует заметить, что при инициализации объекты не получают символьных свойств, так что этот массив будет пуст, пока вы не зададите ему какое-либо символьное свойство.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>Symbol.length</code></dt> + <dd>Содержит длину, всегда равную 0 (нулю).</dd> + <dt>{{jsxref("Symbol.prototype")}}</dt> + <dd>Содержит прототип конструктора <code>Symbol</code>.</dd> +</dl> + +<h3 id="Известные_символы">Известные символы</h3> + +<p>В добавок к вашим собственным символам, JavaScript имеет несколько встроенных символов, представляющих внутренние механизмы языка, которые не были доступны разработчикам в версиях ECMAScript 5 и более ранних. Эти символы доступны посредством следующих свойств:</p> + +<dl> + <dt> + <h4 id="Итерационные_символы">Итерационные символы</h4> + </dt> + <dt>{{jsxref("Symbol.iterator")}}</dt> + <dd>Метод, возвращающий итератор по умолчанию для объекта. Используется конструкцией {{jsxref("Statements/for...of","for...of")}}.</dd> + <dt> + <h4 id="Символы_регулярных_выражений">Символы регулярных выражений</h4> + </dt> + <dt>{{jsxref("Symbol.match")}}</dt> + <dd>Метод для сопоставления объекта со строкой, также используемый для определения возможности объекта выступать в качестве регулярного выражения. Используется функцией {{jsxref("String.prototype.match()")}}.</dd> + <dt>{{jsxref("Symbol.replace")}}</dt> + <dd>Метод, заменяющий совпавшие подстроки в строке. Используется функцией {{jsxref("String.prototype.replace()")}}.</dd> + <dt>{{jsxref("Symbol.search")}}</dt> + <dd>Метод, возвращающий индекс вхождения подстроки, соответствующей регулярному выражению. Используется функцией {{jsxref("String.prototype.search()")}}.</dd> + <dt>{{jsxref("Symbol.split")}}</dt> + <dd>Метод, разбивающий строку на части в местах, соответствующих регулярному выражению. Используется функцией {{jsxref("String.prototype.split()")}}. </dd> + <dt> + <h4 id="Другие_символы">Другие символы</h4> + </dt> + <dt>{{jsxref("Symbol.hasInstance")}}</dt> + <dd>Метод, определяющий, распознает ли конструктор некоторый объект как свой экземпляр. Используется оператором {{jsxref("Operators/instanceof", "instanceof")}}.</dd> + <dt>{{jsxref("Symbol.isConcatSpreadable")}}</dt> + <dd>Булево значение, показывающее, должен ли объект быть сведен к плоскому представлению (англ. flatten) в виде массива его элементов функцией {{jsxref("Array.prototype.concat()")}}.</dd> + <dt>{{jsxref("Symbol.unscopables")}}</dt> + <dd>Массив строковых имен свойств. Позволяет скрыть свойства от инструкции with (прежде всего для обратной совместимости).</dd> + <dt>{{jsxref("Symbol.species")}}</dt> + <dd>Метод, определяющий конструктор для порождённых объектов.</dd> + <dt>{{jsxref("Symbol.toPrimitive")}}</dt> + <dd>Метод, преобразующий объект в примитив (примитивное значение).</dd> + <dt>{{jsxref("Symbol.toStringTag")}}</dt> + <dd>Строковое значение, используемое в качестве описания объекта по умолчанию. Используется функцией {{jsxref("Object.prototype.toString()")}}</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("Symbol.for()", "Symbol.for(key)")}}</dt> + <dd>Ищет существующие символы по заданному ключу и возвращает его, если он найден. В противном случае создается новый символ для данного ключа в глобальном реестре символов.</dd> + <dt>{{jsxref("Symbol.keyFor", "Symbol.keyFor(sym)")}}</dt> + <dd>Получает по разделямому символу его ключ из глобального реестра символов.</dd> +</dl> + +<h2 id="Boolean_instances" name="Boolean_instances"><code><span style="font-family: open sans,sans-serif; font-size: 2.14285714285714rem;">Прототип </span>Symbol</code></h2> + +<p>Все символы наследуют от {{jsxref("Symbol.prototype")}}.</p> + +<h3 id="Свойства">Свойства</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Properties')}}</p> + +<h3 id="Методы">Методы</h3> + +<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/Symbol/prototype','Methods')}}</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Creating_Boolean_objects_with_an_initial_value_of_false" name="Creating_Boolean_objects_with_an_initial_value_of_false">Использование оператора <code>typeof</code> с символами</h3> + +<p>Оператор {{jsxref("Operators/typeof", "typeof")}} позволяет идентифицировать символ.</p> + +<pre class="brush: js">typeof Symbol() === 'symbol' +typeof Symbol('foo') === 'symbol' +typeof Symbol.iterator === 'symbol' +</pre> + +<h3 id="Преобразование_типов_с_символами">Преобразование типов с символами</h3> + +<p>Следующее необходимо помнить при преобразовании типа символов.</p> + +<ul> + <li>При попытке конвертировать символ в число, будет брошено исключение {{jsxref("TypeError")}} (напр., <code>+sym</code> или <code>sym | 0</code>).</li> + <li>Результатом нестрогого сравнения, <code>Object(sym) == sym</code>, будет <code>true.</code></li> + <li><code>Symbol("foo") + "bar" </code>бросает исключение {{jsxref("TypeError")}} (невозможно преобразовать символ в строку). Это удерживает разработчика от, к примеру, случайного создания строкого поля у объекта из символа.</li> + <li>Более <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#String_conversion">"безопасный" вызов <code>String(sym)</code></a> работает с символами как вызов {{jsxref("Symbol.prototype.toString()")}}. Заметьте, что в то же время <code>new String(sym)</code> бросит исключение.</li> +</ul> + +<h3 id="Символы_и_конструкция_for...in">Символы и конструкция <code>for...in</code></h3> + +<p>Символы не перечисляются при итерации {{jsxref("Statements/for...in","for...in")}}. В дополнение к этому, {{jsxref("Object.getOwnPropertyNames()")}} не вернет символьные свойства объекта. Тем не менее, их можно получить с помощью {{jsxref("Object.getOwnPropertySymbols()")}}.</p> + +<pre class="brush: js">var obj = {}; + +obj[Symbol("a")] = "a"; +obj[Symbol.for("b")] = "b"; +obj["c"] = "c"; +obj.d = "d"; + +for (var i in obj) { + console.log(i); // выведет "c" и "d" +}</pre> + +<h3 id="Символы_и_JSON.stringify">Символы и <code>JSON.stringify()</code></h3> + +<p><span style="font-family: courier new,andale mono,monospace; line-height: 1.5;">JSON.stringify()</span> игнорирует свойства с ключами <code>Symbol</code>:</p> + +<pre class="brush: js">JSON.stringify({[Symbol("foo")]: "foo"}); +// '{}'</pre> + +<p>Подробности см. {{jsxref("JSON.stringify()")}}.</p> + +<h3 id="Объекты-обёртки_для_Symbol_в_качестве_имен_свойств">Объекты-обёртки для Symbol в качестве имен свойств</h3> + +<p>Когда объект-обёртка символа используется в качестве имени свойства, этот объект сводится к символу, который он оборачивает:</p> + +<pre class="brush: js">var sym = Symbol("foo"); +var obj = {[sym]: 1}; +obj[sym]; // 1 +obj[Object(sym)]; // снова 1 +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol-objects', 'Symbol')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol-objects', 'Symbol')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + + + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Symbol")}}</p> + +<h2 id="See_also" name="See_also">См. также</h2> + +<ul> + <li><a href="/ru/docs/%D0%A1%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/Symbol">Словарь: Символьный тип данных</a></li> + <li>{{jsxref("Operators/typeof", "typeof")}}</li> + <li><a href="/ru/docs/Web/JavaScript/Data_structures">Типы и структуры данных JavaScript</a></li> + <li><a href="https://hacks.mozilla.org/2015/06/es6-in-depth-symbols/">"ES6 In Depth: Symbols" on hacks.mozilla.org</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html b/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html new file mode 100644 index 0000000000..68ce170adc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/isconcatspreadable/index.html @@ -0,0 +1,148 @@ +--- +title: Symbol.isConcatSpreadable +slug: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +tags: + - ECMScript 2015 + - JavaScript + - Property +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable +--- +<div>{{JSRef}}</div> + +<p> <strong><code>Symbol.isConcatSpreadable</code></strong> - это известный символ, который используется для определения, должен ли объект редуцироваться к сумме своих элементов при использовании метода {{jsxref("Array.prototype.concat()")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p><code>@@isConcatSpreadable-символ</code> (<code>Symbol.isConcatSpreadable</code>) можно определить как собственное или унаследованное свойство с булевым значением. Оно контролирует поведение массивов и массивоподобных объектов:</p> + +<ul> + <li>Для массивов поведением по умолчанию будет редуцирование к сумме своих элементов. <code>Symbol.isConcatSpreadable</code> поможет избежать редукции в подобных случаях.</li> + <li>Для массивоподобных объектов поведением по умолчанию будет <code>сохранение своей структуры.isConcatSpreadable</code> может вызвать редуцирование в подобных случаях.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Массивы">Массивы</h3> + +<p>По умолчанию, {{jsxref("Array.prototype.concat()")}} возвращает массив, объединяющий элементы исходных массивов:</p> + +<pre class="brush: js">var alpha = ['a', 'b', 'c'], + numeric = [1, 2, 3]; + +var alphaNumeric = alpha.concat(numeric); + +console.log(alphaNumeric); // Result: ['a', 'b', 'c', 1, 2, 3] +</pre> + +<p>Если значение <code>Symbol.isConcatSpreadable</code> = <code>false</code>, то можно отменить поведение по умолчанию:</p> + +<pre class="brush: js">var alpha = ['a', 'b', 'c'], + numeric = [1, 2, 3]; + +numeric[Symbol.isConcatSpreadable] = false; +var alphaNumeric = alpha.concat(numeric); + +console.log(alphaNumeric); // Result: ['a', 'b', 'c', [1, 2, 3] ] +</pre> + +<h3 id="Массивоподобные_объекты">Массивоподобные объекты</h3> + +<p>Для массивоподобных объектов поведением по умолчанию будет <code>сохранение своей структуры. </code>Чтобы вызвать его разложение до суммы элементов в итоговом массиве, нужно задать значение <code>true для Symbol.isConcatSpreadable</code>:</p> + +<pre class="brush: js">var x = [1, 2, 3]; + +var fakeArray = { + [Symbol.isConcatSpreadable]: true, + length: 2, + 0: 'hello', + 1: 'world' +} + +x.concat(fakeArray); // [1, 2, 3, "hello", "world"] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.isconcatspreadable', 'Symbol.isconcatspreadable')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>No change.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome(48)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop(48) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile(48) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li>{{jsxref("Array.prototype.concat()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html b/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html new file mode 100644 index 0000000000..4e7ceb90f0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/iterator/index.html @@ -0,0 +1,135 @@ +--- +title: Symbol.iterator +slug: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/iterator +--- +<div>{{JSRef}}</div> + +<p><code><strong>Symbol.iterator</strong></code> — известный символ, задающий итератор объекта, используемый по умолчанию. Применяется в конструкции <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of"><code>for...of</code></a>.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Каждый раз, когда объект должен быть проитерирован (как, например, в начале цикла <code>for..of</code>), метод <code>@@iterator</code> вызывается без аргументов, а возвращённый итератор используется непосредственно для получения значений.</p> + +<p>Некоторые встроенные типы имеют стандартное итерационное поведение, в то время как другие типы (как {{jsxref("Object")}}) таким свойством не обладают. Метод <code>@@iterator</code> имеют следующие встроенные типы:</p> + +<ul> + <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> + <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> + <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> + <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> + <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> +</ul> + +<p>Смотрите также<a href="/en-US/docs/Web/JavaScript/Reference/Iteration_protocols"> </a><a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols">Протоколы перебора</a> для получения дополнительных сведений.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Пользовательские_итерируемые_объекты">Пользовательские итерируемые объекты</h3> + +<p>Мы можем создавать собственные итерируемые объекты, подобно следующему коду:</p> + +<pre class="brush: js">var myIterable = {} +myIterable[Symbol.iterator] = function* () { + yield 1; + yield 2; + yield 3; +}; +[...myIterable] // [1, 2, 3] +</pre> + +<h3 id="Плохо_оформленные_итераторы">Плохо оформленные итераторы</h3> + +<p>Если метод <code>@@iterator</code> объекта не возвращает итератор, то это плохо оформленный итерируемый объект, его использование, скорее всего, приведёт к возникновению исключений или неправильному поведению:</p> + +<pre class="brush: js">var nonWellFormedIterable = {} +nonWellFormedIterable[Symbol.iterator] = () => 1 +[...nonWellFormedIterable] // TypeError: [] is not a function +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.iterator', 'Symbol.iterator')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome(43)}}</td> + <td>{{ CompatGeckoDesktop(36) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatOpera(30)}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(36) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/ru/docs/Web/JavaScript/Reference/Iteration_protocols">Протоколы перебора</a></li> + <li>{{jsxref("Array.@@iterator", "Array.prototype[@@iterator]()")}}</li> + <li>{{jsxref("TypedArray.@@iterator", "TypedArray.prototype[@@iterator]()")}}</li> + <li>{{jsxref("String.@@iterator", "String.prototype[@@iterator]()")}}</li> + <li>{{jsxref("Map.@@iterator", "Map.prototype[@@iterator]()")}}</li> + <li>{{jsxref("Set.@@iterator", "Set.prototype[@@iterator]()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html b/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html new file mode 100644 index 0000000000..3e250ce039 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/keyfor/index.html @@ -0,0 +1,87 @@ +--- +title: Symbol.keyFor() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor +tags: + - JavaScript + - Method +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/keyFor +--- +<div>{{JSRef}}</div> + +<div> Метод <code><strong>Symbol.keyFor(sym)</strong></code> получает ключ для заданного символа из глобального реестра символов.</div> + +<div> </div> + +<p>{{EmbedInteractiveExample("pages/js/symbol-keyfor.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Синтакс">Синтакс</h2> + +<pre class="syntaxbox"><var>Symbol.keyFor(sym)</var>;</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>sym</dt> + <dd>Символ, обязательный. Символ, ключ которого требуется найти</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Строка с ключом заданного символа, если он есть в глобальном реестре символов, либо {{jsxref("undefined")}}, если его там нет.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var globalSym = Symbol.for("foo"); // Создаёт новый глобальный символ +Symbol.keyFor(globalSym); // "foo" + +var localSym = Symbol(); +Symbol.keyFor(localSym); // undefined + +// Известные символы не является символами, +// которые находятся в глобальном реестре символов +Symbol.keyFor(Symbol.iterator) // undefined +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.keyfor', 'Symbol.keyFor')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.keyfor', 'Symbol.keyFor')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Symbol.keyFor")}}</p> + +<p> </p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Symbol.for()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/match/index.html b/files/ru/web/javascript/reference/global_objects/symbol/match/index.html new file mode 100644 index 0000000000..135fbcc2ab --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/match/index.html @@ -0,0 +1,113 @@ +--- +title: Symbol.match +slug: Web/JavaScript/Reference/Global_Objects/Symbol/match +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/match +--- +<div>{{JSRef}}</div> + +<p><code><strong>Symbol.match</strong></code> — известный символ, определяющий соответствие строки регулярному выражению. Этот метод вызывается функцией {{jsxref("String.prototype.match()")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Данный метод также используется для того, чтобы определить, обладает ли объект поведением регулярного выражения. Например, методы {{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}} и {{jsxref("String.prototype.includes()")}} проверяют, является ли первый аргумент регулярным выражением, и бросают {{jsxref("TypeError")}}, если это так. Соответственно, если символ <code>match</code> установлен в <code>false</code> (или имеет {{Glossary("Falsy", "ложное")}} значение) — это говорит о том, что объект не предназначен для использования в качестве регулярного выражения.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Блокировка_проверки_isRegExp">Блокировка проверки i<code>sRegExp</code></h3> + +<p>Следующий код выбросит {{jsxref("TypeError")}}:</p> + +<pre class="brush: js">"/bar/".startsWith(/bar/); // Бросает TypeError, так как /bar/ является + // регулярным выражением и Symbol.match не изменён.</pre> + +<p>Несмотря на это, если вы зададите свойству <code>Symbol.match</code> значение <code>false</code>, проверка <code>isRegExp</code> (которая использует свойство <code>match</code>) покажет, что объект не является регулярным выражением — как следствие, методы <code>startsWith</code> и <code>endsWith</code> не станут бросать <code>TypeError</code>.</p> + +<pre class="brush: js">var re = /foo/; +re[Symbol.match] = false; +"/foo/".startsWith(re); // true +"/baz/".endsWith(re); // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.match', 'Symbol.match')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoDesktop(40) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(40) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Symbol.replace")}}</li> + <li>{{jsxref("Symbol.search")}}</li> + <li>{{jsxref("Symbol.split")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html b/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html new file mode 100644 index 0000000000..9152cc6dd8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/prototype/index.html @@ -0,0 +1,106 @@ +--- +title: Symbol.prototype +slug: Web/JavaScript/Reference/Global_Objects/Symbol/prototype +tags: + - ECMAScript6 + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol +--- +<div>{{JSRef}}</div> + +<p>Свойство <code><strong>Symbol</strong></code><strong><code>.prototype</code></strong> указывает на прототип конструктора {{jsxref("Symbol")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Экземпляры типа {{jsxref("Symbol")}} наследуют {{jsxref("Symbol.prototype")}}. Вы можете использовать прототип конструктора, чтобы добавить свойства и методы ко всем экземплярам типа <code>Symbol</code>.</p> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>Symbol.prototype.constructor</code></dt> + <dd>Указывает на функцию, создавшую прототип экземпляра. По умолчанию это функция {{jsxref("Symbol")}}.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("Symbol.prototype.toSource()")}} {{Non-standard_inline}}</dt> + <dd>Возвращает строку, содержащую исходный код объекта {{jsxref("Global_Objects/Symbol", "Symbol")}}. Перегружает метод {{jsxref("Object.prototype.toSource()")}}.</dd> + <dt>{{jsxref("Symbol.prototype.toString()")}}</dt> + <dd>Возвращает строку, содержащую описание символа. Перегружает метод {{jsxref("Object.prototype.toString()")}}.</dd> + <dt>{{jsxref("Symbol.prototype.valueOf()")}}</dt> + <dd>Возвращает примитивное значение объекта {{jsxref("Symbol")}}. Перегружает метод {{jsxref("Object.prototype.valueOf()")}}.</dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.prototype', 'Symbol.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html b/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html new file mode 100644 index 0000000000..abfb4b1f08 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/replace/index.html @@ -0,0 +1,99 @@ +--- +title: Symbol.replace +slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/replace +--- +<div>{{JSRef}}</div> + +<p><code><strong>Symbol.replace</strong></code> — известный символ, задающий метод для замены подстрок в строке. Эта функция вызывается методом {{jsxref("String.prototype.replace()")}}.</p> + +<p>Смотрите также {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} и {{jsxref("String.prototype.replace()")}} для получения дополнительных сведений.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.replace', 'Symbol.replace')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.replace', 'Symbol.replace')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatChrome(50)}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop(49) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile(49) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Symbol.match")}}</li> + <li>{{jsxref("Symbol.search")}}</li> + <li>{{jsxref("Symbol.split")}}</li> + <li>{{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/search/index.html b/files/ru/web/javascript/reference/global_objects/symbol/search/index.html new file mode 100644 index 0000000000..2f484e317f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/search/index.html @@ -0,0 +1,54 @@ +--- +title: Symbol.search +slug: Web/JavaScript/Reference/Global_Objects/Symbol/search +tags: + - ECMASript 2015 + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/search +--- +<div>{{JSRef}}</div> + +<p>Широко известный символ <code><strong>Symbol.search</strong></code> указывает метод, который вернёт индекс внутри строки, соответствующей регулярному выражению. Эта функция вызывается методом {{jsxref("String.prototype.search()")}}.</p> + +<p>Для получения дополнительной информации см. {{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}} и {{jsxref("String.prototype.search()")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.search', 'Symbol.search')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.search', 'Symbol.search')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице создаётся из структурированных данных. Если Вы хотите дополнить эти данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.Symbol.search")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Symbol.match")}}</li> + <li>{{jsxref("Symbol.replace")}}</li> + <li>{{jsxref("Symbol.split")}}</li> + <li>{{jsxref("RegExp.@@search", "RegExp.prototype[@@search]()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/species/index.html b/files/ru/web/javascript/reference/global_objects/symbol/species/index.html new file mode 100644 index 0000000000..de03682229 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/species/index.html @@ -0,0 +1,116 @@ +--- +title: Symbol.species +slug: Web/JavaScript/Reference/Global_Objects/Symbol/species +tags: + - ECMAScript6 + - Experimental + - JavaScript + - Свойство + - Символы +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/species +--- +<div>{{JSRef}}</div> + +<p><code><strong>Symbol.species</strong></code><strong> —</strong> известный символ, позволяющий определить конструктор, использующийся для создания порождённых объектов.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Свойство <code><strong>Symbol.species</strong></code>, содержащее аксессор (геттер), позволяет подклассам переопределить конструктор, используемый по умолчанию для создания новых объектов.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Вам может понадобиться возвращать объекты типа {{jsxref("Array")}} в методах вашего производного класса <code>MyArray</code>. Например, при использовании метода вроде {{jsxref("Array.map", "map()")}}, использующего конструктор по умолчанию, вам может потребоваться возвращать объект родительского типа <code>Array</code>, вместо <code>MyArray</code>. Символ <code><strong>species</strong></code> позволит вам это сделать:</p> + +<pre class="brush: js">class MyArray extends Array { + // Перегружаем species для использования родительского конструктора Array + static get [Symbol.species]() { return Array; } +} +var a = new MyArray(1,2,3); +var mapped = a.map(x => x * x); + +console.log(mapped instanceof MyArray); // false +console.log(mapped instanceof Array); // true +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.species', 'Symbol.species')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.species', 'Symbol.species')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>51</td> + <td>{{ CompatGeckoDesktop(41) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>5</td> + <td>{{ CompatGeckoMobile(41) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Map.@@species", "Map[@@species]")}}</li> + <li>{{jsxref("Set.@@species", "Set[@@species]")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/split/index.html b/files/ru/web/javascript/reference/global_objects/symbol/split/index.html new file mode 100644 index 0000000000..e9c98051b4 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/split/index.html @@ -0,0 +1,53 @@ +--- +title: Symbol.split +slug: Web/JavaScript/Reference/Global_Objects/Symbol/split +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/split +--- +<div>{{JSRef}}</div> + +<p><code><strong>Symbol.split</strong></code> общеизвестный символ определяет метод, который делит строки в индексах, соответствующих регулярному выражению. Эта функция вызывается методом {{jsxref("String.prototype.split()")}}.</p> + +<p>Для подробной информации, смотрите {{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}} и {{jsxref("String.prototype.split()")}}.</p> + +<div>{{EmbedInteractiveExample("pages/js/symbol-split.html")}}</div> + + + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.split', 'Symbol.split')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.split', 'Symbol.split')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Symbol.split")}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("Symbol.match")}}</li> + <li>{{jsxref("Symbol.replace")}}</li> + <li>{{jsxref("Symbol.search")}}</li> + <li>{{jsxref("RegExp.@@split", "RegExp.prototype[@@split]()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html new file mode 100644 index 0000000000..fa512ba32f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/toprimitive/index.html @@ -0,0 +1,92 @@ +--- +title: Symbol.toPrimitive +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +tags: + - '@@toPrimitive' + - JavaScript + - toPrimitive +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toPrimitive +--- +<div>{{JSRef}}</div> + +<p><strong><code>Symbol.toPrimitive</code> </strong>является символом (symbol), который описывает свойство объекта как функцию, которая вызывается при преобразовании объекта в соответсвующее примитивное значение.</p> + +<p>{{EmbedInteractiveExample("pages/js/symbol-toprimitive.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<p> </p> + +<h2 id="Описание">Описание</h2> + +<p>С помощью свойства <strong><code>Symbol.toPrimitive</code></strong><code> </code>(которое описывается как функция), объект может быть приведен к примитивному типу. Функция вызывается со строковым аргументом <code><strong>hint</strong></code>, который передает желаемый тип примитива. Значением аргумента <code><strong>hint</strong></code> может быть одно из следующих значений <code>"<em>number</em>"</code>, <code>"<em>string</em>"</code>, и <code>"<em>default</em>"</code>.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Описанные ниже примеры показывают как с помощью свойства <strong><code>Symbol.toPrimitive</code></strong> можно привести объект к примитивному типу.</p> + +<pre class="brush: js">// Объект без свойства Symbol.toPrimitive +var obj1 = {}; +console.log(+obj1); // NaN +console.log(`${obj1}`); // "[object Object]" +console.log(obj1 + ''); // "[object Object]" + +// Объект со свойством Symbol.toPrimitive +var obj2 = { + [Symbol.toPrimitive](hint) { + if (hint == 'number') { + return 10; + } + if (hint == 'string') { + return 'hello'; + } + return true; + } +}; +console.log(+obj2); // 10 -- желаемый тип (<strong>hint</strong>) - "number" +console.log(`${obj2}`); // "hello" -- желаемый тип (<strong>hint</strong>) - "string" +console.log(obj2 + ''); // "true" -- желаемый тип (<strong>hint</strong>) - "default" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.toprimitive', 'Symbol.toPrimitive')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.Symbol.toPrimitive")}}</p> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Date.@@toPrimitive", "Date.prototype[@@toPrimitive]")}}</li> + <li>{{jsxref("Symbol.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}}</li> + <li>{{jsxref("Object.prototype.toString()")}}</li> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html b/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html new file mode 100644 index 0000000000..89cfa3bda8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/tostringtag/index.html @@ -0,0 +1,89 @@ +--- +title: Symbol.toStringTag +slug: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag +--- +<div>{{JSRef}}</div> + +<div>Известный символ <strong><code>Symbol.toStringTag</code></strong> - это строковое значение свойства, которое используется при создании строки описания объекта по умолчанию. Доступ к нему осуществляется через {{jsxref("Object.prototype.toString()")}} метод.</div> + +<div></div> + +<div>{{EmbedInteractiveExample("pages/js/symbol-tostringtag.html")}}</div> + + + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Многие Javascript типы имеют теги по умолчанию: </p> + +<pre class="brush: js">Object.prototype.toString.call('foo'); // "[object String]" +Object.prototype.toString.call([1, 2]); // "[object Array]" +Object.prototype.toString.call(3); // "[object Number]" +Object.prototype.toString.call(true); // "[object Boolean]" +Object.prototype.toString.call(undefined); // "[object Undefined]" +Object.prototype.toString.call(null); // "[object Null]" +// ... and more +</pre> + +<p>Другие имеют встроенный символ <code>toStringTag</code>:</p> + +<pre class="brush: js">Object.prototype.toString.call(new Map()); // "[object Map]" +Object.prototype.toString.call(function* () {}); // "[object GeneratorFunction]" +Object.prototype.toString.call(Promise.resolve()); // "[object Promise]" +// ... and more +</pre> + +<p>При создании собственного класса JavaScript по умолчанию использует тег "Object":</p> + +<pre class="brush: js">class ValidatorClass {} + +Object.prototype.toString.call(new ValidatorClass()); // "[object Object]" +</pre> + +<p>С помощью <code>toStringTag</code> можно установить свой собственный тег:</p> + +<pre class="brush: js">class ValidatorClass { + get [Symbol.toStringTag]() { + return 'Validator'; + } +} + +Object.prototype.toString.call(new ValidatorClass()); // "[object Validator]" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.tostringtag', 'Symbol.toStringTag')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + + + +<p>{{Compat("javascript.builtins.Symbol.toStringTag")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Object.prototype.toString()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html b/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html new file mode 100644 index 0000000000..1cb2a967b3 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/unscopables/index.html @@ -0,0 +1,89 @@ +--- +title: Symbol.unscopables +slug: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +tags: + - ECMAScript6 + - JavaScript + - Property + - Symbol +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/unscopables +--- +<div>{{JSRef}}</div> + +<p>Широко известный символ <strong><code>Symbol.unscopables</code></strong> используется для указания значения объекта, чьи собственные и наследуемые имена свойств исключаются из привязок связанного объекта оператора <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code>.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p><code><font face="Open Sans, arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Символ </span></font>@@unscopables</code> (<code>Symbol.unscopables</code>) может быть определён к любому объекту, чтобы исключить имена свойств из-за того, что они отображаются как лексические переменные с привязкой окружения <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code>. Обратите внимание: если использовать <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">"Строгий режим"</a>, оператор <code>with</code> будет недоступен и вероятнее всего также не понадобится этот символ.</p> + +<p>Если Вы зададите свойству знаечние <code>true</code> в объекте <code>unscopables</code> сделает его "<em>unscopable</em><em>"</em> и, следовательно, оно не будет задействовано в области лексических переменных. Придав свойству значение <code>false</code>, Вы сделаете его <code>scopable</code> и, как следствие, оно будет задействовано в области лексических переменных.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Приведённый код отлично работает в ES5 и ниже. Однако в ECMAScript 2015 и более поздних версиях был введён метод {{jsxref("Array.prototype.keys()")}}. Это означает, что внутри окружения <code>with</code>, "ключи" будут методом, а не пременной. Вот где теперь встроенные свойства символа {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} вступают в игру и препятствуют тому, чтобы некоторые из методов Array были включены в оператор <code>with</code>.</p> + +<pre class="brush: js">var keys = []; + +with (Array.prototype) { + keys.push('что-то'); +} + +Object.keys(Array.prototype[Symbol.unscopables]); +// ["copyWithin", "entries", "fill", "find", "findIndex", +// "includes", "keys", "values"] +</pre> + +<p><code><font face="Open Sans, arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Вы также можете задать </span></font>unscopables</code> для собственных объектов.</p> + +<pre class="brush: js">var obj = { + foo: 1, + bar: 2 +}; + +obj[Symbol.unscopables] = { + foo: false, + bar: true +}; + +with (obj) { + console.log(foo); // 1 + console.log(bar); // ReferenceError: bar is not defined +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-symbol.unscopables', 'Symbol.unscopables')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-symbol.unscopables', 'Symbol.unscopables')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<div class="hidden">Таблица совместимости на этой странице создаётся из структурированных данных. Если Вы хотите дополнить эти данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам пулл-реквест.</div> + +<p>{{Compat("javascript.builtins.Symbol.unscopables")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}}</li> + <li>оператор <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/with">with</a></code> (не доступен в <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">режиме Strict</a>)</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html b/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html new file mode 100644 index 0000000000..f5ed1d1060 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/symbol/valueof/index.html @@ -0,0 +1,94 @@ +--- +title: Symbol.prototype.valueOf() +slug: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf +translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/valueOf +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>valueOf()</strong></code> возвращает примитивное значение символьного объекта.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>Symbol().valueOf(); +</var></pre> + +<h2 id="Описание">Описание</h2> + +<p>Метод <code>valueOf</code> объекта {{jsxref("Symbol")}} возвращает примитивное значение символьного объекта как экземпляр типа Symbol.</p> + +<p>JavaScript вызывает метод <code>valueOf</code> для конвертации объекта в примитивное значение. Вам нечасто потребуется вызывать метод <code>valueOf</code> самостоятельно; JavaScript автоматически вызывает его, когда натыкается на объект там, где ожидался примитив.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-symbol.prototype.valueof', 'Symbol.prototype.valueOf')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Поддержка_браузерами">Поддержка браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile("36.0") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="См._также">См. также</h2> + +<ul> + <li>{{jsxref("Object.prototype.valueOf()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html b/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html new file mode 100644 index 0000000000..d398a0bc22 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/syntaxerror/index.html @@ -0,0 +1,174 @@ +--- +title: SyntaxError +slug: Web/JavaScript/Reference/Global_Objects/SyntaxError +tags: + - Error + - JavaScript + - Object + - Reference + - SyntaxError +translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <code><strong>SyntaxError</strong></code> представляет ошибку, возникающую при попытке интерпретировать синтаксически неправильный код.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>new SyntaxError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Исключение <code>SyntaxError</code> выбрасывается, когда движок JavaScript при разборе кода обнаруживает токены или токен, которые, согласно синтаксису, не должны здесь находиться.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("SyntaxError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>SyntaxError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<p>Глобальный объект <code>SyntaxError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="SyntaxError_instances" name="SyntaxError_instances">Экземпляры объекта <code>SyntaxError</code></h2> + +<h3 id="Properties_of_SyntaxError_instances" name="Properties_of_SyntaxError_instances">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_SyntaxError_instances" name="Methods_of_SyntaxError_instances">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Catch_an_SyntaxError" name="Example:_Catch_an_SyntaxError">Пример: перехват исключения <code>SyntaxError</code></h3> + +<pre class="brush: js">try { + eval('hoo bar'); +} catch (e) { + console.log(e instanceof SyntaxError); // true + console.log(e.message); // "missing ; before statement" - перед инструкцией отсутствует символ ; + console.log(e.name); // "SyntaxError" + console.log(e.fileName); // "Scratchpad/1" + console.log(e.lineNumber); // 1 + console.log(e.columnNumber); // 4 + console.log(e.stack); // "@Scratchpad/1:2:3\n" +} +</pre> + +<h3 id="Example:_Create_an_SyntaxError" name="Example:_Create_an_SyntaxError">Пример: возбуждение исключения <code>SyntaxError</code></h3> + +<pre class="brush: js">try { + throw new SyntaxError('Привет', 'someFile.js', 10); +} catch (e) { + console.log(e instanceof SyntaxError); // true + console.log(e.message); // "Привет" + console.log(e.name); // "SyntaxError" + console.log(e.fileName); // "someFile.js" + console.log(e.lineNumber); // 10 + console.log(e.columnNumber); // 0 + console.log(e.stack); // "@Scratchpad/2:11:9\n" +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.4', 'SyntaxError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-syntaxerror', 'SyntaxError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("SyntaxError.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html new file mode 100644 index 0000000000..b558ae482e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/syntaxerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: SyntaxError.prototype +slug: Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - SyntaxError +translation_of: Web/JavaScript/Reference/Global_Objects/SyntaxError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>SyntaxError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("SyntaxError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("SyntaxError")}} наследуются от объекта <code>SyntaxError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>SyntaxError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "SyntaxError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("SyntaxError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "SyntaxError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "SyntaxError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "SyntaxError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "SyntaxError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "SyntaxError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("SyntaxError")}} не содержит собственных методов, экземпляры {{jsxref("SyntaxError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html new file mode 100644 index 0000000000..de71600f4c --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/@@species/index.html @@ -0,0 +1,130 @@ +--- +title: 'get TypedArray[@@species]' +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species +tags: + - JavaScript + - Property + - TypedArray +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/@@species +--- +<div>{{JSRef}}</div> + +<p><code><strong>TypedArray[@@species]</strong></code> - это способ доступа, с помощью которого можно получить конструктор <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типизированного массива</a>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><em>TypedArray</em>[<a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species">Symbol.species</a>] + +<em>где TypedArray</em> это один из: + +Int8Array +Uint8Array +Uint8ClampedArray +Int16Array +Uint16Array +Int32Array +Uint32Array +Float32Array +Float64Array +</pre> + +<h2 id="Описание">Описание</h2> + +<p>Свойство <strong><code>species</code> </strong>возвращает конструктор "по умолчанию" для объектов <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типизированного массива</a>. Конструкторы подкласса могут его переопределить.</p> + +<h2 id="Примеры">Примеры</h2> + +<p>Свойство <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Symbol/species"><code><strong>species</strong></code> </a>возвращает функцию-конструктор "по умолчанию", которая является одним из конструкторов данного <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типизированного массива</a>:</p> + +<pre class="brush: js">Int8Array[Symbol.species]; // function Int8Array() +Uint8Array[Symbol.species]; // function Uint8Array() +Float32Array[Symbol.species]; // function Float32Array() +</pre> + +<p>В производном объекте-массиве (например, вы разработали свой массив <code>MyTypedArray</code>), <code>MyTypedArray</code> определяет свой конструктор. Однако, вы можете захотеть его переопределить, например, возвращать родительский объект из вашего производного класса:</p> + +<pre class="brush: js">class MyTypedArray extends Uint8Array { + //Переопределение вида MyTypedArray на родительский Uint8Array + static get [Symbol.species]() { return Uint8Array; } +}</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Описание</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-get-%typedarray%-@@species', 'get %TypedArray% [ @@species ]')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-get-%typedarray%-@@species', 'get %TypedArray% [ @@species ]')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoDesktop("48")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("48")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("TypedArray")}}</li> + <li>{{jsxref("Symbol.species")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html new file mode 100644 index 0000000000..e877c6b856 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/bytes_per_element/index.html @@ -0,0 +1,119 @@ +--- +title: TypedArray.BYTES_PER_ELEMENT +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT +tags: + - JavaScript + - TypedArray +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/BYTES_PER_ELEMENT +--- +<div>{{JSRef}}</div> + +<p>Свойство <code><strong>TypedArray.BYTES_PER_ELEMENT</strong></code> содержит размер в байтах каждого элемента типизированного массива.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">TypedArray.BYTES_PER_ELEMENT;</pre> + +<h2 id="Описание">Описание</h2> + +<p>Объекты TypedArray отличаются друг от друга числом байтов на каждый элемент и способом интерпретации байтов. Константа <code>BYTES_PER_ELEMENT</code> содержит число байтов, который имеет каждый из элементов в данном массиве.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush:js">Int8Array.BYTES_PER_ELEMENT; // 1 +Uint8Array.BYTES_PER_ELEMENT; // 1 +Uint8ClampedArray.BYTES_PER_ELEMENT; // 1 +Int16Array.BYTES_PER_ELEMENT; // 2 +Uint16Array.BYTES_PER_ELEMENT; // 2 +Int32Array.BYTES_PER_ELEMENT; // 4 +Uint32Array.BYTES_PER_ELEMENT; // 4 +Float32Array.BYTES_PER_ELEMENT; // 4 +Float64Array.BYTES_PER_ELEMENT; // 8</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Описание</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Заменено в ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-typedarray.bytes_per_element', 'TypedArray.BYTES_PER_ELEMENT')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение дано в ECMA-стандарте.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-typedarray.bytes_per_element', 'TypedArray.BYTES_PER_ELEMENT')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>7.0</td> + <td>{{ CompatGeckoDesktop("2") }}</td> + <td>10</td> + <td>11.6</td> + <td>5.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>4.0</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile("2") }}</td> + <td>10</td> + <td>11.6</td> + <td>4.2</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("TypedArray")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/index.html new file mode 100644 index 0000000000..e2a200783a --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/index.html @@ -0,0 +1,258 @@ +--- +title: TypedArray +slug: Web/JavaScript/Reference/Global_Objects/TypedArray +tags: + - JavaScript + - TypedArray + - TypedArrays + - Типизированные массивы +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><em>TypedArray </em></strong>(типизированный массив) это массивоподобное представление нижележащего <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">буфера с бинарными данными (ArrayBuffer)</a>. Нет ни глобального свойства <code><em>TypedArray</em></code>, ни открытого конструктора <em><code>TypedArray</code></em>. Но существует ряд глобальных элементов, которые являются конструкторами типизированных массивов для конкретно заданных типов данных. Они приведены ниже. Далее вы найдёте общие свойства и функции, которые можно использовать с любыми типизированными массивами.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">new <em>TypedArray</em>(); // новое в ES2017 +new <em>TypedArray</em>(length); +new <em>TypedArray</em>(typedArray); +new <em>TypedArray</em>(object); +new <em>TypedArray</em>(buffer [, byteOffset [, length]]); + +<strong>где <em>TypedArray()</em> это одно из следующих значений:</strong> + +Int8Array(), Uint8Array(), Uint8ClampedArray(), Int16Array(), Uint16Array(), Int32Array(), Uint32Array(), Float32Array(), Float64Array() +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>length</dt> + <dd>При вызове в памяти создаётся буфер длины <em><strong><code>length</code></strong></em> * <em>BYTES_PER_ELEMENT</em> байт, содержащий нули</dd> + <dt>typedArray</dt> + <dd>Когда вызывается с аргументом <code><strong>typedArray</strong></code>, который может быть объектом любого из типов типизированных массивов (например, <code>Int32Array</code>), тогда переданный массив <code>typedArray</code> копируется в новый массив. Каждое значение из <code>typedArray</code> конвертируется в соответствующий конструктору тип прямо перед копированием. Длина нового объекта <code>typedArray</code> будет такой же как и длина переданного в параметре <code>typedArray</code></dd> + <dt>object</dt> + <dd>Новый массив создаётся так, как если бы была вызвана функция <code><em>TypedArray</em>.from()</code></dd> + <dt>buffer, byteOffset, length</dt> + <dd>Когда происходит вызов с параметрами <strong><code>buffer</code> </strong>и опциональными параметрами <strong><code>byteOffset </code></strong>и<code> </code><strong><code>length</code></strong>, то будет создан новый типизированный массив, который будет отражать <code>buffer </code>типа {{jsxref("ArrayBuffer")}}. Параметры <code>byteOffset</code> и <code>length</code> определяют диапазон (размер) памяти, выводимый данным массивоподобным представлением. Если оба этих параметра (<code>byteOffset</code> и <code>length</code>) опущены, то будет использован весь буфер <code>buffer</code>; если опущен только <code>length</code>, то будет выведен весь остаток буфера после смещения начала отсчета элементов, заданного параметром <code>byteOffset</code>.</dd> +</dl> + +<h2 id="Описание"><a id="Description" name="Description">Описание</a></h2> + +<p>ECMAScript 2015 определяет конструктор объекта <em>TypedArray, </em>который является прототипом всех <em>TypedArray</em>-конструкторов. Этот конструктор не открыт явным образом: какое-либо глобальное свойство <em><code>%TypedArray%</code></em> или <em><code>TypedArray</code> </em>отсутствует. Он доступен только через <code>Object.getPrototypeOf(...) (</code>например<code>, Int8Array.prototype)</code>. Все <em>TypedArray</em>s конструкторы наследуют общие свойства от конструктора <code>%TypedArray%</code>. Кроме того, все прототипы типизированных массивов (<em>TypedArray<code>.</code></em><code>prototype</code>) имеют своим прототипом <em>%TypedArray%<code>.</code></em><code>prototype</code>.</p> + +<p>Сам по себе конструктор <code>%TypedArray%</code> не имеет пользы. Его вызов напрямую или через оператор <code>new</code> выдаст ошибку <code>TypeError</code>, кроме случая, когда он используется во время создания объектов в JS-движке, поддерживающего подклассы. В настоящее время такие движки неизвестны, поэтому <code>%TypedArray%</code> используется только для дополнения функциональности (затычка) браузеров в конструкторах <em>TypedArray</em>.</p> + +<p>Когда создаётся экземпляр <em>TypedArray</em> (например, <code>Int8Array</code>), то буферный массив создаётся в памяти, в случае если объект <code>ArrayBuffer</code> передаётся как аргумент конструктора, то вместо создания буфера используется он. Адрес буфера сохраняется во внутреннем свойстве экземпляра, и все методы из %<code>TypedArray</code>%.<code>prototype</code>, например сеттеры и геттеры, оперируют с буфером, по этому адресу.</p> + +<h3 id="Доступ_к_свойствам">Доступ к свойствам</h3> + +<p>Получить доступ к элементам массива можно используя стандартный синтаксис по индексу (например, <code>arr[12]</code>). Однако, получение и установка индексируемых свойств по цепи прототипов не будет происходить даже в случае, когда вы пытаетесь использовать индексы извне массива. Индексируемые свойства обращаются к элементам буфера {{jsxref("ArrayBuffer")}} и не имеют отношения к объектным свойствам. Также можно использовать именованные свойства как и в обычных объектах.</p> + +<pre class="brush: js">//Установка и получение используя стандартный синтаксис массивов +var int16 = new Int16Array(2); +int16[0] = 42; +console.log(int16[0]); // 42 + +//Отсутствует обращение к свойству прототипа (элемент №20 должен бы иметь значение "foo") +Int8Array.prototype[20] = "foo"; +(new Int8Array(32))[20]; // 0 +//Отсутствует даже в случае обращения к индексу извне текущего массива +Int8Array.prototype[20] = "foo"; +(new Int8Array(8))[20]; // undefined +// также в случае отрицательных индексов +Int8Array.prototype[-1] = "foo"; +(new Int8Array(8))[-1]; // undefined + +// Допустимы именованные свойства +Int8Array.prototype.foo = "bar"; +(new Int8Array(32)).foo; // "bar"</pre> + +<h2 id="Объекты_TypedArray"><a id="TypedArray_objects" name="TypedArray_objects">Объекты TypedArray</a></h2> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Тип</td> + <td class="header">Диапазон значений</td> + <td>Размер (байты)</td> + <td class="header">Описание</td> + <td class="header">Тип Web IDL</td> + <td class="header">Эквивалентный тип языка C</td> + </tr> + <tr> + <td>{{jsxref("Int8Array")}}</td> + <td>-128 до 127</td> + <td>1</td> + <td>8-битное целое со знаком с дополнением до двух</td> + <td><code>byte</code></td> + <td><code>int8_t</code></td> + </tr> + <tr> + <td>{{jsxref("Uint8Array")}}</td> + <td>0 до 255</td> + <td>1</td> + <td>8-битное беззнаковое целое</td> + <td><code>octet</code></td> + <td><code>uint8_t</code></td> + </tr> + <tr> + <td>{{jsxref("Uint8ClampedArray")}}</td> + <td>0 до 255</td> + <td>1</td> + <td>8-битное беззнаковое целое (фиксированное от 0 до 255)</td> + <td><code>octet</code></td> + <td><code>uint8_t</code></td> + </tr> + <tr> + <td>{{jsxref("Int16Array")}}</td> + <td>-32768 до 32767</td> + <td>2</td> + <td>16-битное целое со знаком с дополнением до двух</td> + <td><code>short</code></td> + <td><code>int16_t</code></td> + </tr> + <tr> + <td>{{jsxref("Uint16Array")}}</td> + <td>0 до 65535</td> + <td>2</td> + <td>16-битное беззнаковое целое</td> + <td><code>unsigned short</code></td> + <td><code>uint16_t</code></td> + </tr> + <tr> + <td>{{jsxref("Int32Array")}}</td> + <td>-2147483648 до 2147483647</td> + <td>4</td> + <td>32-битное целое со знаком с дополнением до двух</td> + <td><code>long</code></td> + <td><code>int32_t</code></td> + </tr> + <tr> + <td>{{jsxref("Uint32Array")}}</td> + <td>0 до 4294967295</td> + <td>4</td> + <td>32-битное беззнаковое целое</td> + <td><code>unsigned long</code></td> + <td><code>uint32_t</code></td> + </tr> + <tr> + <td>{{jsxref("Float32Array")}}</td> + <td>1.2x10<sup>-38</sup> to 3.4x10<sup>38</sup></td> + <td>4</td> + <td>32-битное число с плавающей точкой IEEE-стандарта (7 значащих цифр, нпример 1.123456)</td> + <td><code>unrestricted float</code></td> + <td><code>float</code></td> + </tr> + <tr> + <td>{{jsxref("Float64Array")}}</td> + <td>5.0x10<sup>-324</sup> to 1.8x10<sup>308</sup></td> + <td>8</td> + <td>64-битное число с плавающей точкой IEEE-стандарта (16 значащих цифр, например, 1.123...15)</td> + <td><code>unrestricted double</code></td> + <td><code>double</code></td> + </tr> + </tbody> +</table> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT")}}</dt> + <dd>Возвращает размер элемента для разных типизированных массивов.</dd> + <dt><em>TypedArray</em>.length</dt> + <dd>Свойство "Длина", значение которого 0.</dd> + <dt>{{jsxref("TypedArray.name")}}</dt> + <dd>Возвращает строковое имя конструктора. Например, "Int8Array".</dd> + <dt>{{jsxref("TypedArray.@@species", "get TypedArray[@@species]")}}</dt> + <dd>Конструктор. Используется для создания производных объектов.</dd> + <dt>{{jsxref("TypedArray.prototype")}}</dt> + <dd>Прототип для <em>TypedArray</em>-объектов.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("TypedArray.from()")}}</dt> + <dd>Создаёт типизированный массив из массивоподобного или перечислимого объекта. Смотрите {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of()")}}</dt> + <dd>Создаёт новый типизированный массив с переменным числом аргументов, из которых создастся массив. Смотрите {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Прототип_TypedArray">Прототип TypedArray</h2> + +<p><em>Все TypedArray</em>s-массивы наследуют от {{jsxref("TypedArray.prototype")}}.</p> + +<h3 id="Свойства_2">Свойства</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Properties')}}</p> + +<h3 id="Методы_2">Методы</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/TypedArray/prototype','Methods')}}</p> + +<h3 id="Полифилы_(дополнители)_методов">Полифилы (дополнители) методов</h3> + +<p>Многие методы, используемые в TypedArray, могут быть подменены, используя методы, присутствующие среди стандартных в прототипе Arrays. Следующий кусок Javascript-кода демонстрирует, как вы можете дополнить недостающие методы Typed Array.</p> + +<pre class="brush: js example-bad">var typedArrayTypes = [<code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Int8Array" title="Объект Int8Array представляет типизированный массив 8-разрядных целых значений. Содержимое инициализируется значением 0. Создав экземпляр Int8Array, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Int8Array</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array" title="Объект Uint8Array представляет типизированный массив 8-разрядных целых беззнаковых значений. Содержимое инициализируется значением 0. Создав экземпляр Int8Array, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Uint8Array</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray" title="Типизированный массив Uint8ClampedArray — это массив, служащий для храния 8-битных безнаковых чисел, обрезаемых до диапазона от 0 до 255. Если значение меньше 0, то оно будет приведено к 0 , и к 255, если оно больше 255. Числа с плавающей точкой округляются с помощью математического округления. Массив инициализуруется нулями. После того как значение установлено, Вы можете ссылаться на него с помощью методов объекта или через стандартный синтаксис массивов (то есть, брать значения с помощью квадратных скобок). ">Uint8ClampedArray</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Int16Array" title="Объект Int16Array представляет типизированный массив 16-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Int16Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Int16Array</a>, +</code> <code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Uint16Array" title="Объект Uint16Array представляет типизированный массив 16-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Uint16Array , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Uint16Array</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Int32Array" title="Объект Int32Array представляет типизированный массив 32-битных целых чисел со знаком с дополнением до двух с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Int32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Int32Array</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Uint32Array" title="Объект Uint32Array представляет типизированный массив 32-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Uint32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).">Uint32Array</a>, <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Float32Array" title="Объект Float32Array представляет типизированный массив 32-битных чисел с плавающей запятой (соответствует типу float в языке C) с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Float32Array, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки).">Float32Array</a>, </code><a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/Float64Array" title="Объект Float64Array представляет типизированный массив 64-битных чисел с плавающей запятой (соответствует типу double в языке C) с платформо-зависимым порядком байт.Если необходим контроль за порядком байт, то вместо этого объекта используйте DataView. Содержимое инициализируется значением 0. Создав экземпляр Float64Array , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации - квадратные скобки)."><code>Float64Array</code></a>]; + +for (var k in typedArrayTypes) + for (var v in Array.prototype) + if (Array.prototype.hasOwnProperty(v) && + !typedArrayTypes[k].prototype.hasOwnProperty(v)) + typedArrayTypes[k].prototype[v] = Array.prototype[v]; +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Примечание</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Определяет работу <code>TypedArray</code> и <code>ArrayBufferView</code>. Заменен в ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-typedarray-objects', 'TypedArray Objects')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Первоначальное определение в стандарте ECMA. Определяет поведение индекных и именованных свойств. Указывает, что необходимо использовать оператор <code>new</code>.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-typedarray-objects', 'TypedArray Objects')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>Спецификация ECMAScript 2017 изменила конструктор TypedArray, так что используется операция <code>ToIndex,</code> и позволены конструкторы без аргументов.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + + + +<p>{{Compat("javascript.builtins.TypedArray")}}</p> + +<h2 id="Совместимость">Совместимость</h2> + +<p>Начиная с ECMAScript 2015, конструкторы <code>TypedArray</code> требуют использования оператора {{jsxref("Operators/new", "new")}}. Вызов конструктора <code>TypedArray</code> как функции без <code>new</code>, отныне выбросит ошибку {{jsxref("TypeError")}}.</p> + +<pre class="brush: js example-bad">var dv = Int8Array([1, 2, 3]); +// TypeError: вызов встроенного конструктора Int8Array +// без <strong>new </strong>запрещён</pre> + +<pre class="brush: js example-good">var dv = new Int8Array([1, 2, 3]);</pre> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html new file mode 100644 index 0000000000..ba3118f74d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/join/index.html @@ -0,0 +1,133 @@ +--- +title: TypedArray.prototype.join() +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/join +tags: + - JavaScript + - Prototype + - TypedArray + - Массив +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/join +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>join()</strong></code> объединяет все элементы массива в строку. Метод работает по тому же алгоритму, что и {{jsxref("Array.prototype.join()")}}<em>.</em> <em>TypedArray</em> это один из типизированных массивов: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типы массивов</a>.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><var>typedarray</var>.join(<code>[<var>separator</var> = ',']</code>);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><code>разделитель</code></dt> + <dd>Необязательный параметр. Определяет строку, разделяющую элементы массива. Разделитель приводится к строке в случае необходимости. Если он опущен, элементы массива разделяются запятой (",").</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Строка, соединяющая все элементы массива.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">var uint8 = new Uint8Array([1,2,3]); +uint8.join(); // '1,2,3' +uint8.join(' / '); // '1 / 2 / 3' +uint8.join(''); // '123' +</pre> + +<h2 id="Glossary('Polifill'_'Полифил')">{{Glossary('Polifill', 'Полифил')}}</h2> + +<p>Поскольку теперь нет глобального объекта с именем <em>TypedArray</em>, то полифиллинг доджен быть выполнен "по требованию".</p> + +<pre class="brush: js">// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.join +if (!Uint8Array.prototype.join) { + Object.defineProperty(Uint8Array.prototype, 'join', { + value: Array.prototype.join + }); +} +</pre> + +<p>Если вам нужна поддержка устаревшего JavaScript-дфижка, который не поддерживает свойство <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty">Object.defineProperty</a></code>, то лучше не создавать полифилы новых методов <code>Array.prototype</code>, так как вы не сможете сделать их неперечислимыми.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-%typedarray%.prototype.join', 'TypedArray.prototype.join')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Первоначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.join', 'TypedArray.prototype.join')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoDesktop("37")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("37")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("TypedArray")}}</li> + <li>{{jsxref("Array.prototype.join()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html new file mode 100644 index 0000000000..09ab9b3215 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/prototype/index.html @@ -0,0 +1,128 @@ +--- +title: TypedArray.prototype +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/prototype +tags: + - TypedArray + - Типизированный массив +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray +--- +<div>{{JSRef}}</div> + +<p><code><strong>Свойство TypedArray</strong></code><strong><code>.prototype</code></strong> является прототипом для {{jsxref("TypedArray")}}-конструкторов.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>Экземпляры {{jsxref("TypedArray")}} наследуются от {{jsxref("TypedArray.prototype")}}. Вы можете использовать объект прототипа конструктора для добавления в свойств и методов во все экземпляры <em>TypedArray</em>, где <em>TypedArray</em> это один из <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типизированных массивов</a>.</p> + +<p>Также смотрите описание <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Description"><em>TypedArray</em></a> для детальной информации о наследниках.</p> + +<h2 id="Свойства"><a id="Properties" name="Properties">Свойства</a></h2> + +<dl> + <dt><code>TypedArray.prototype.constructor</code></dt> + <dd>Возвращает функцию, которая создала прототип экземпляра. Это единственное, что для объектов <a href="/ru/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">типизированных массивов</a> функционирует по умолчанию.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Возвращает {{jsxref("ArrayBuffer")}}, на который ссылается типизированный массив. Значение фиксировано с времени создания и доступно <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Возвращает длину (в байтах) типизированного массива (с начала {{jsxref("ArrayBuffer")}}). Значение фиксировано с времени создания и доступно <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Возвращает смещение (в байтах) типизированного массива от его {{jsxref("ArrayBuffer")}}. Значение фиксировано с времени создания и доступно <strong>только для чтения</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.length")}} {{readonlyInline}}</dt> + <dd>Возвращает число элементов типизированного массива. Значение фиксировано с времени создания и доступно <strong>только для чтения</strong>.</dd> +</dl> + +<h2 id="Методы"><a id="Methods" name="Methods">Методы</a></h2> + +<dl> + <dt>{{jsxref("TypedArray.prototype.copyWithin()")}}</dt> + <dd>Копирует последовательность элементов массива внутри него. Подробнее {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.entries()")}}</dt> + <dd>Возвращает новый объект итератора <code><strong>Array Iterator</strong></code>, содержащий пары ключ / значение для каждого индекса массива. Подробнее {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.every()")}}</dt> + <dd>Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции. Подробнее {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.fill()")}}</dt> + <dd>Заполняет все элементы массива от начального индекта до конечного индекса указанным значением. Подробнее {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.filter()")}}</dt> + <dd>Создаёт новый массив с теми элементами текущего массива, с которыми фильтрующая функция вернёт <code>true</code>. Подробнее {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.find()")}}</dt> + <dd>Возвращает значение элемента массива, если элемент удовлетворяет условию проверяющей функции, иначе возвращается <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/undefined" title="Значение глобального свойства undefined представляет значение undefined. Это одно из примитивных значений JavaScript."><code>undefined</code></a>. Подробнее {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.findIndex()")}}</dt> + <dd>Возвращает индекс элемента массива, если элемент удовлетворяет условию проверяющей функции, иначе возвращается -1. Подробнее {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.forEach()")}}</dt> + <dd>Выполняет указанную функцию один раз для каждого элемента в массиве. Подробнее {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Определяет, содержит ли массив определённый элемент, возвращая в зависимости от этого <code>true</code> или <code>false</code>. Подробнее {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.indexOf()")}}</dt> + <dd>Возвращает первый (меньший) индекс элемента, значение которого равно указанному значению или -1, если такого индекса нет. Подробнее {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.join()")}}</dt> + <dd>Объединяет все элементы массива в строку . Подробнее {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.keys()")}}</dt> + <dd>Возвращает новый итератор массива <code><strong>Array Iterator</strong></code>, содержащий ключи каждого индекса в массиве. Подробнее {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.lastIndexOf()")}}</dt> + <dd>Возвращает последний (больший) индекс элемента, значение которого равно заданному значению или -1, если такого индекса нет. Подробнее {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.map()")}}</dt> + <dd>Создаёт новый массив с результатом вызова указанной функции для каждого элемента массива. Подробнее {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Ранний нестандартный вариант от {{jsxref("TypedArray.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.reduce()")}}</dt> + <dd>Применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению. Подробнее {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.reduceRight()")}}</dt> + <dd>Применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению. Подробнее {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.reverse()")}}</dt> + <dd>Обращает порядок следования элементов массива. Первый элемент массива становится последним, а последний — первым. Подробнее {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.set()")}}</dt> + <dd>Сохраняет несколько значений в типизированном массиве, получая входные значения из указанного массива.</dd> + <dt>{{jsxref("TypedArray.prototype.slice()")}}</dt> + <dd>Возвращает часть массива в новый объект массива. Подробнее {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.some()")}}</dt> + <dd>Возвращает <code>true</code>, если хоть какой-нибудь элемент массива удовлетворяет условию, заданному в передаваемой функции. Подробнее {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.sort()")}}</dt> + <dd>На месте сортирует элементы массива и возвращает отсортированный массив. Подробнее {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.subarray()")}}</dt> + <dd>Возвращает новый <code>TypedArray</code>-объект, начиная с указанного стартового и кончая указанным конечным индексом элемента массива.</dd> + <dt>{{jsxref("TypedArray.prototype.values()")}}</dt> + <dd>Возвращает новый объект итератора массива <strong><code>Array Iterator</code></strong>, содержащий значения для каждого индекса в массиве. Подробнее {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.toLocaleString()")}}</dt> + <dd>Возвращает локализованное строковое представление элементов массива. Подробнее {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.toString()")}}</dt> + <dd>Возвращает строковое представление указанного массива и его элементов . Подробнее {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.prototype.@@iterator()", "TypedArray.prototype[@@iterator]()")}}</dt> + <dd>Возвращает новый объект итератора массива <strong><code>Array Iterator</code></strong>, содержащий значения для каждого индекса массива.</dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Описание</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-properties-of-the-%typedarrayprototype%-object', 'TypedArray prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Первоначальное определение</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-properties-of-the-%typedarrayprototype%-object', 'TypedArray prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<div class="hidden">Таблица совместимости для этой страницы сгенерирована из структуры. Если вы хотите дополнить эти данные, то обратитесь к странице <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте запрос в "pull request".</div> + +<p>{{Compat("javascript.builtins.TypedArray.prototype")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("TypedArray")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html b/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html new file mode 100644 index 0000000000..2a26b9b4cb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typedarray/set/index.html @@ -0,0 +1,140 @@ +--- +title: TypedArray.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/TypedArray/set +tags: + - Типизированные массивы + - Типизированный массив + - метод + - прототип +translation_of: Web/JavaScript/Reference/Global_Objects/TypedArray/set +--- +<div>{{JSRef}}</div> + +<p>Метод <strong><code>set()</code></strong> сохраняет значения в типизированном массиве, читая значения из предоставленного массива.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><var>typedarr</var>.set(array [,offset]) +typedarr.set(typedarray [,offset]) +</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>array</dt> + <dd>Массив, из которого необходимо скопировать значения. Все значения из исходного массива копируются в текущий массив, за исключением случая, когда длина исходного массива плюс сдвиг превышают длину текущего массива, в таких ситуациях возникает исключение.</dd> + <dt>typedarray</dt> + <dd>Если исходный массив является типизированным массивом, то оба массива могут ссылаться на один и тот же {{jsxref("ArrayBuffer")}}, т.е. быть разными представлениями (view) одного и того же ArrayBuffer; браузер <strong>скопирует</strong> исходный диапазон буфера в диапазон назначения даже в случае перекрытия диапазонов.</dd> + <dt>offset {{ optional_inline() }}</dt> + <dd>Сдвиг для текущего массива, с которого будет производиться запись исходного массива. Если значение опущено, то используется 0 (в таких ситуациях, исходный массив перезапишет значения в текущем массиве начиная с индекса 0).</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>{{jsxref("undefined")}}.</p> + +<h3 id="Исключения">Исключения</h3> + +<dl> + <dt>{{jsxref("RangeError")}}</dt> + <dd>Возникает, в случае, когда с текущим сдвигом елементы будут сохраняться за пределы типизированного массива.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_set">Использование метода <code>set</code></h3> + +<pre class="brush:js">var buffer = new ArrayBuffer(8); +var uint8 = new Uint8Array(buffer); + +uint8.set([1,2,3], 3); + +console.log(uint8); // Uint8Array [ 0, 0, 0, 1, 2, 3, 0, 0 ] +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Заменено в ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-%typedarray%.prototype.set-array-offset', 'TypedArray.prototype.set')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-%typedarray%.prototype.set-array-offset', 'TypedArray.prototype.set')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>7.0</td> + <td>{{CompatGeckoDesktop("2")}}</td> + <td>10</td> + <td>11.6</td> + <td>5.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>4.0</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatGeckoMobile("2")}}</td> + <td>10</td> + <td>11.6</td> + <td>4.2</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("TypedArray")}}</li> + <li>{{jsxref("ArrayBuffer")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typeerror/index.html b/files/ru/web/javascript/reference/global_objects/typeerror/index.html new file mode 100644 index 0000000000..3fa1ac526e --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typeerror/index.html @@ -0,0 +1,131 @@ +--- +title: TypeError +slug: Web/JavaScript/Reference/Global_Objects/TypeError +tags: + - Error + - JavaScript + - Object + - Reference + - TypeError +translation_of: Web/JavaScript/Reference/Global_Objects/TypeError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Объект <code><strong>TypeError</strong></code> представляет ошибку, возникающую, когда значение имеет не ожидаемый тип.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>new TypeError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Исключение <code>TypeError</code> выбрасывается, когда операнд или аргумент, переданный в функцию, не совместим с типом, ожидаемым оператором или функцией.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt>{{jsxref("TypeError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>TypeError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<p>Глобальный объект <code>TypeError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="TypeError_instances" name="TypeError_instances">Экземпляры объекта <code>TypeError</code></h2> + +<h3 id="Properties_of_TypeError_instances" name="Properties_of_TypeError_instances">Свойства</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_TypeError_instances" name="Methods_of_TypeError_instances">Методы</h3> + +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/TypeError/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Catch_an_TypeError" name="Example:_Catch_an_TypeError">Пример: перехват исключения <code>TypeError</code></h3> + +<pre class="brush: js">try { + null.f(); +} catch (e) { + console.log(e instanceof TypeError); // true + console.log(e.message); // "null has no properties" - null не имеет свойств + console.log(e.name); // "TypeError" + console.log(e.fileName); // "Scratchpad/1" + console.log(e.lineNumber); // 2 + console.log(e.columnNumber); // 2 + console.log(e.stack); // "@Scratchpad/2:2:3\n" +} +</pre> + +<h3 id="Example:_Create_an_TypeError" name="Example:_Create_an_TypeError">Пример: возбуждение исключения <code>TypeError</code></h3> + +<pre class="brush: js">try { + throw new TypeError('Привет', 'someFile.js', 10); +} catch (e) { + console.log(e instanceof TypeError); // true + console.log(e.message); // "Привет" + console.log(e.name); // "TypeError" + console.log(e.fileName); // "someFile.js" + console.log(e.lineNumber); // 10 + console.log(e.columnNumber); // 0 + console.log(e.stack); // "@Scratchpad/2:2:9\n" +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.5', 'TypeError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-native-error-types-used-in-this-standard-typeerror', 'TypeError')}}</td> + <td>{{Spec2('ESDraft')}} </td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div>{{Compat("javascript.builtins.TypeError")}}</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("TypeError.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html new file mode 100644 index 0000000000..adb4f5f0b6 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/typeerror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: TypeError.prototype +slug: Web/JavaScript/Reference/Global_Objects/TypeError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - TypeError +translation_of: Web/JavaScript/Reference/Global_Objects/TypeError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>TypeError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("TypeError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("TypeError")}} наследуются от объекта <code>TypeError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>TypeError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "TypeError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("TypeError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "TypeError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "TypeError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "TypeError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "TypeError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "TypeError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("TypeError")}} не содержит собственных методов, экземпляры {{jsxref("TypeError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/uint16array/index.html b/files/ru/web/javascript/reference/global_objects/uint16array/index.html new file mode 100644 index 0000000000..7e140010fc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint16array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint16Array +slug: Web/JavaScript/Reference/Global_Objects/Uint16Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint16Array +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>Uint16Array</code></strong> представляет типизированный массив 16-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте <a class="new" href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/DataView" rel="nofollow" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>DataView</code></a>. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Uint16Array</code></strong> , можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Uint16Array(); // new in ES2017 +new Uint16Array(length); +new Uint16Array(typedArray); +new Uint16Array(object); +new Uint16Array(buffer [, byteOffset [, length]]);</pre> + +<p>For more information about the constructor syntax and the parameters, see <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint16Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Returns a number value of the element size. <code>2</code> in the case of an <code>Uint16Array</code>.</dd> + <dt>Uint16Array.length</dt> + <dd>Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint16Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Uint16Array.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Uint16Array</code> type: "Uint16Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Uint16Array.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Uint16Array.from()")}}</dt> + <dd>Creates a new <code>Uint16Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Uint16Array.of()")}}</dt> + <dd>Creates a new <code>Uint16Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Uint16Array_prototype"><code>Uint16Array</code> prototype</h2> + +<p>All <code>Uint16Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Uint16Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Uint16Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Uint16Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Uint16Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint16Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Uint16Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint16Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Uint16Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Uint16Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Uint16Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Uint16Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Uint16Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Uint16Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Uint16Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Uint16Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Uint16Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Uint16Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Uint16Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Uint16Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Uint16Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Uint16Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Uint16Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Uint16Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Uint16Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Uint16Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint16Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Uint16Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Uint16Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Uint16Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Uint16Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Uint16Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Uint16Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Uint16Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Uint16Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Uint16Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Uint16Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Uint16Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Uint16Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Uint16Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create a <code>Uint16Array</code>:</p> + +<pre class="brush: js">// From a length +var uint16 = new Uint16Array(2); +uint16[0] = 42; +console.log(uint16[0]); // 42 +console.log(uint16.length); // 2 +console.log(uint16.BYTES_PER_ELEMENT); // 2 + +// From an array +var arr = new Uint16Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Uint16Array([21, 31]); +var y = new Uint16Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(8); +var z = new Uint16Array(buffer, 0, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var uint16 = new Uint16Array(iterable); +// Uint16Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Uint16Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Uint16Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Uint16Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Uint16Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Uint16Array([1, 2, 3]); +// TypeError: calling a builtin Uint16Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Uint16Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="en/JavaScript typed arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/uint32array/index.html b/files/ru/web/javascript/reference/global_objects/uint32array/index.html new file mode 100644 index 0000000000..dffb14d480 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint32array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint32Array +slug: Web/JavaScript/Reference/Global_Objects/Uint32Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint32Array +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>Uint32Array</code></strong> представляет типизированный массив 32-битных целых беззнаковых чисел с платформо-зависимым порядком байт. Если необходим контроль за порядком байт, то вместо этого объекта используйте <a class="new" href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/DataView" rel="nofollow" title="Документация об этом ещё не написана; пожалуйста, поспособствуйте её написанию!"><code>DataView</code></a>. Содержимое инициализируется значением <code>0</code>. Создав экземпляр <strong><code>Uint32Array</code></strong>, можно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Uint32Array(); // new in ES2017 +new Uint32Array(length); +new Uint32Array(typedArray); +new Uint32Array(object); +new Uint32Array(buffer [, byteOffset [, length]]);</pre> + +<p>For more information about the constructor syntax and the parameters, see <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint32Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Returns a number value of the element size. <code>4</code> in the case of an <code>Uint32Array</code>.</dd> + <dt>Uint32Array.length</dt> + <dd>Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint32Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Uint32Array.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Uint32Array</code> type: "Uint32Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Uint32Array.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Uint32Array.from()")}}</dt> + <dd>Creates a new <code>Uint32Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Uint32Array.of()")}}</dt> + <dd>Creates a new <code>Uint32Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Uint32Array_prototype"><code>Uint32Array</code> prototype</h2> + +<p>All <code>Uint32Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Uint32Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Uint32Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Uint32Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Uint32Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint32Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Uint32Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint32Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Uint32Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Uint32Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>Uint32Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Uint32Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Uint32Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Uint32Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Uint32Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Uint32Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Uint32Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Uint32Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Uint32Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Uint32Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Uint32Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Uint32Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Uint32Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Uint32Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Uint32Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Uint32Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint32Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Uint32Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Uint32Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Uint32Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Uint32Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Uint32Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Uint32Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Uint32Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Uint32Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Uint32Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Uint32Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Uint32Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Uint32Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Uint32Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create a <code>Uint32Array</code>:</p> + +<pre class="brush: js">// From a length +var uint32 = new Uint32Array(2); +uint32[0] = 42; +console.log(uint32[0]); // 42 +console.log(uint32.length); // 2 +console.log(uint32.BYTES_PER_ELEMENT); // 4 + +// From an array +var arr = new Uint32Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Uint32Array([21, 31]); +var y = new Uint32Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(16); +var z = new Uint32Array(buffer, 0, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var uint32 = new Uint32Array(iterable); +// Uint32Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 2015.</td> + </tr> + <tr> + <td>{{SpecName('ES2015', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Uint32Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Uint32Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Uint32Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Uint32Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Uint32Array([1, 2, 3]); +// TypeError: calling a builtin Uint32Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Uint32Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/uint8array/index.html b/files/ru/web/javascript/reference/global_objects/uint8array/index.html new file mode 100644 index 0000000000..8992a49394 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint8array/index.html @@ -0,0 +1,199 @@ +--- +title: Uint8Array +slug: Web/JavaScript/Reference/Global_Objects/Uint8Array +translation_of: Web/JavaScript/Reference/Global_Objects/Uint8Array +--- +<div>{{JSRef}}</div> + +<p>Объект <strong><code>Uint8Array</code></strong> представляет типизированный массив 8-разрядных целых беззнаковых значений. Содержимое инициализируется значением 0. Создав экземпляр <strong><code>Uint8Array</code></strong>, возможно получить доступ к элементам массива, используя методы объекта или стандартный синтаксис доступа к элементу массива по его индексу (с помощью скобочной нотации).</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Uint8Array(); // new in ES2017 +new Uint8Array(length); +new Uint8Array(typedArray); +new Uint8Array(object); +new Uint8Array(buffer [, byteOffset [, length]]);</pre> + +<p>For more information about the constructor syntax and the parameters, see <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8Array.BYTES_PER_ELEMENT")}}</dt> + <dd>Returns a number value of the element size. <code>1</code> in the case of an <code>Uint8Array</code>.</dd> + <dt>Uint8Array.length</dt> + <dd>Static length property whose value is 0. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Uint8Array.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Uint8Array</code> type: "Uint8Array".</dd> + <dt>{{jsxref("TypedArray.prototype", "Uint8Array.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Uint8Array.from()")}}</dt> + <dd>Creates a new <code>Uint8Array</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Uint8Array.of()")}}</dt> + <dd>Creates a new <code>Uint8Array</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Uint8Array_prototype"><code>Uint8Array</code> prototype</h2> + +<p>All <code>Uint8Array</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Uint8Array.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Uint8Array</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Uint8Array.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Uint8Array</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint8Array.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Uint8Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint8Array.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Uint8Array</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Uint8Array.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements held in the <code>Uint8Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Uint8Array.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Uint8Array.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Uint8Array.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Uint8Array.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Uint8Array.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Uint8Array.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Uint8Array.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Uint8Array.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Uint8Array.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Uint8Array.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Uint8Array.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Uint8Array.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Uint8Array.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Uint8Array.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint8Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Uint8Array.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Uint8Array.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Uint8Array.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Uint8Array.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Uint8Array.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Uint8Array.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Uint8Array.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Uint8Array.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Uint8Array</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Uint8Array.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Uint8Array.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Uint8Array.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Uint8Array.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Different ways to create a <code>Uint8Array</code>:</p> + +<pre class="brush: js">// From a length +var uint8 = new Uint8Array(2); +uint8[0] = 42; +console.log(uint8[0]); // 42 +console.log(uint8.length); // 2 +console.log(uint8.BYTES_PER_ELEMENT); // 1 + +// From an array +var arr = new Uint8Array([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Uint8Array([21, 31]); +var y = new Uint8Array(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(8); +var z = new Uint8Array(buffer, 1, 4); + +// From an iterable +var iterable = function*(){ yield* [1,2,3]; }(); +var uint8 = new Uint8Array(iterable); +// Uint8Array[1, 2, 3] +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td>ECMAScript 2017 changed the <code>Uint8Array</code> constructor to use the <code>ToIndex</code> operation and allows constructors with no arguments.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("javascript.builtins.Uint8Array")}}</p> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015, <code>Uint8Array</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Uint8Array</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Uint8Array([1, 2, 3]); +// TypeError: calling a builtin Uint8Array constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Uint8Array([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html b/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html new file mode 100644 index 0000000000..e686cc5806 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uint8clampedarray/index.html @@ -0,0 +1,256 @@ +--- +title: Uint8ClampedArray +slug: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray +translation_of: Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray +--- +<div>{{JSRef}}</div> + +<p>Типизированный массив<strong><code> Uint8ClampedArray </code></strong>— это массив, служащий для хранения 8-битных безнаковых чисел, обрезаемых до диапазона от 0 до 255. Если значение меньше 0, то оно будет приведено к 0 , и к 255, если оно больше 255. Числа с плавающей точкой округляются с помощью математического округления. Массив инициализуруется нулями. После того как значение установлено, Вы можете ссылаться на него с помощью методов объекта или через стандартный синтаксис массивов (то есть, брать значения с помощью квадратных скобок). </p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox">new Uint8ClampedArray(length); +new Uint8ClampedArray(typedArray); +new Uint8ClampedArray(object); +new Uint8ClampedArray(buffer [, byteOffset [, length]]);</pre> + +<p>Для более подробной информации, смотрите <em><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Syntax">TypedArray</a></em>.</p> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{jsxref("TypedArray.BYTES_PER_ELEMENT", "Uint8ClampedArray.BYTES_PER_ELEMENT")}}</dt> + <dd>Возвращает размер элемента в байтах. Для Uint8ClampedArray оно равно 1.</dd> + <dt>Uint8ClampedArray.length</dt> + <dd>Static length property whose value is 3. For the actual length (number of elements), see {{jsxref("TypedArray.prototype.length", "Uint8ClampedArray.prototype.length")}}.</dd> + <dt>{{jsxref("TypedArray.name", "Uint8ClampedArray.name")}}</dt> + <dd>Returns the string value of the constructor name. In the case of the <code>Uint8ClampedArray</code> type: "Uint8ClampedArray".</dd> + <dt>{{jsxref("TypedArray.prototype", "Uint8ClampedArray.prototype")}}</dt> + <dd>Prototype for the <em>TypedArray</em> objects.</dd> +</dl> + +<h2 id="Methods">Methods</h2> + +<dl> + <dt>{{jsxref("TypedArray.from", "Uint8ClampedArray.from()")}}</dt> + <dd>Creates a new <code>Uint8ClampedArray</code> from an array-like or iterable object. See also {{jsxref("Array.from()")}}.</dd> + <dt>{{jsxref("TypedArray.of", "Uint8ClampedArray.of()")}}</dt> + <dd>Creates a new <code>Uint8ClampedArray</code> with a variable number of arguments. See also {{jsxref("Array.of()")}}.</dd> +</dl> + +<h2 id="Uint8ClampedArray_prototype"><code>Uint8ClampedArray</code> prototype</h2> + +<p>All <code>Uint8ClampedArray</code> objects inherit from {{jsxref("TypedArray.prototype", "%TypedArray%.prototype")}}.</p> + +<h3 id="Properties_2">Properties</h3> + +<dl> + <dt><code>Uint8ClampedArray.prototype.constructor</code></dt> + <dd>Returns the function that created an instance's prototype. This is the <code>Uint8ClampedArray</code> constructor by default.</dd> + <dt>{{jsxref("TypedArray.prototype.buffer", "Uint8ClampedArray.prototype.buffer")}} {{readonlyInline}}</dt> + <dd>Returns the {{jsxref("ArrayBuffer")}} referenced by the <code>Uint8ClampedArray</code> Fixed at construction time and thus <strong>read only</strong>.</dd> + <dt>{{jsxref("TypedArray.prototype.byteLength", "Uint8ClampedArray.prototype.byteLength")}} {{readonlyInline}}</dt> + <dd>Returns the length (in bytes) of the <code>Uint8ClampedArray</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.byteOffset", "Uint8ClampedArray.prototype.byteOffset")}} {{readonlyInline}}</dt> + <dd>Returns the offset (in bytes) of the <code>Uint8ClampedArray</code> from the start of its {{jsxref("ArrayBuffer")}}. Fixed at construction time and thus <strong>read only.</strong></dd> + <dt>{{jsxref("TypedArray.prototype.length", "Uint8ClampedArray.prototype.length")}} {{readonlyInline}}</dt> + <dd>Returns the number of elements hold in the <code>UintClamped8Array</code>. Fixed at construction time and thus <strong>read only.</strong></dd> +</dl> + +<h3 id="Methods_2">Methods</h3> + +<dl> + <dt>{{jsxref("TypedArray.copyWithin", "Uint8ClampedArray.prototype.copyWithin()")}}</dt> + <dd>Copies a sequence of array elements within the array. See also {{jsxref("Array.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.entries", "Uint8ClampedArray.prototype.entries()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the key/value pairs for each index in the array. See also {{jsxref("Array.prototype.entries()")}}.</dd> + <dt>{{jsxref("TypedArray.every", "Uint8ClampedArray.prototype.every()")}}</dt> + <dd>Tests whether all elements in the array pass the test provided by a function. See also {{jsxref("Array.prototype.every()")}}.</dd> + <dt>{{jsxref("TypedArray.fill", "Uint8ClampedArray.prototype.fill()")}}</dt> + <dd>Fills all the elements of an array from a start index to an end index with a static value. See also {{jsxref("Array.prototype.fill()")}}.</dd> + <dt>{{jsxref("TypedArray.filter", "Uint8ClampedArray.prototype.filter()")}}</dt> + <dd>Creates a new array with all of the elements of this array for which the provided filtering function returns true. See also {{jsxref("Array.prototype.filter()")}}.</dd> + <dt>{{jsxref("TypedArray.find", "Uint8ClampedArray.prototype.find()")}}</dt> + <dd>Returns the found value in the array, if an element in the array satisfies the provided testing function or <code>undefined</code> if not found. See also {{jsxref("Array.prototype.find()")}}.</dd> + <dt>{{jsxref("TypedArray.findIndex", "Uint8ClampedArray.prototype.findIndex()")}}</dt> + <dd>Returns the found index in the array, if an element in the array satisfies the provided testing function or -1 if not found. See also {{jsxref("Array.prototype.findIndex()")}}.</dd> + <dt>{{jsxref("TypedArray.forEach", "Uint8ClampedArray.prototype.forEach()")}}</dt> + <dd>Calls a function for each element in the array. See also {{jsxref("Array.prototype.forEach()")}}.</dd> + <dt>{{jsxref("TypedArray.includes", "Uint8ClampedArray.prototype.includes()")}} {{experimental_inline}}</dt> + <dd>Determines whether a typed array includes a certain element, returning <code>true</code> or <code>false</code> as appropriate. See also {{jsxref("Array.prototype.includes()")}}.</dd> + <dt>{{jsxref("TypedArray.indexOf", "Uint8ClampedArray.prototype.indexOf()")}}</dt> + <dd>Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.indexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.join", "Uint8ClampedArray.prototype.join()")}}</dt> + <dd>Joins all elements of an array into a string. See also {{jsxref("Array.prototype.join()")}}.</dd> + <dt>{{jsxref("TypedArray.keys", "Uint8ClampedArray.prototype.keys()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> that contains the keys for each index in the array. See also {{jsxref("Array.prototype.keys()")}}.</dd> + <dt>{{jsxref("TypedArray.lastIndexOf", "Uint8ClampedArray.prototype.lastIndexOf()")}}</dt> + <dd>Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. See also {{jsxref("Array.prototype.lastIndexOf()")}}.</dd> + <dt>{{jsxref("TypedArray.map", "Uint8ClampedArray.prototype.map()")}}</dt> + <dd>Creates a new array with the results of calling a provided function on every element in this array. See also {{jsxref("Array.prototype.map()")}}.</dd> + <dt>{{jsxref("TypedArray.move", "Uint8ClampedArray.prototype.move()")}} {{non-standard_inline}} {{unimplemented_inline}}</dt> + <dd>Former non-standard version of {{jsxref("TypedArray.copyWithin", "Uint8ClampedArray.prototype.copyWithin()")}}.</dd> + <dt>{{jsxref("TypedArray.reduce", "Uint8ClampedArray.prototype.reduce()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from left-to-right) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduce()")}}.</dd> + <dt>{{jsxref("TypedArray.reduceRight", "Uint8ClampedArray.prototype.reduceRight()")}}</dt> + <dd>Apply a function against an accumulator and each value of the array (from right-to-left) as to reduce it to a single value. See also {{jsxref("Array.prototype.reduceRight()")}}.</dd> + <dt>{{jsxref("TypedArray.reverse", "Uint8ClampedArray.prototype.reverse()")}}</dt> + <dd>Reverses the order of the elements of an array — the first becomes the last, and the last becomes the first. See also {{jsxref("Array.prototype.reverse()")}}.</dd> + <dt>{{jsxref("TypedArray.set", "Uint8ClampedArray.prototype.set()")}}</dt> + <dd>Stores multiple values in the typed array, reading input values from a specified array.</dd> + <dt>{{jsxref("TypedArray.slice", "Uint8ClampedArray.prototype.slice()")}}</dt> + <dd>Extracts a section of an array and returns a new array. See also {{jsxref("Array.prototype.slice()")}}.</dd> + <dt>{{jsxref("TypedArray.some", "Uint8ClampedArray.prototype.some()")}}</dt> + <dd>Returns true if at least one element in this array satisfies the provided testing function. See also {{jsxref("Array.prototype.some()")}}.</dd> + <dt>{{jsxref("TypedArray.sort", "Uint8ClampedArray.prototype.sort()")}}</dt> + <dd>Sorts the elements of an array in place and returns the array. See also {{jsxref("Array.prototype.sort()")}}.</dd> + <dt>{{jsxref("TypedArray.subarray", "Uint8ClampedArray.prototype.subarray()")}}</dt> + <dd>Returns a new <code>Uint8ClampedArray</code> from the given start and end element index.</dd> + <dt>{{jsxref("TypedArray.values", "Uint8ClampedArray.prototype.values()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array. See also {{jsxref("Array.prototype.values()")}}.</dd> + <dt>{{jsxref("TypedArray.toLocaleString", "Uint8ClampedArray.prototype.toLocaleString()")}}</dt> + <dd>Returns a localized string representing the array and its elements. See also {{jsxref("Array.prototype.toLocaleString()")}}.</dd> + <dt>{{jsxref("TypedArray.toString", "Uint8ClampedArray.prototype.toString()")}}</dt> + <dd>Returns a string representing the array and its elements. See also {{jsxref("Array.prototype.toString()")}}.</dd> + <dt>{{jsxref("TypedArray.@@iterator", "Uint8ClampedArray.prototype[@@iterator]()")}}</dt> + <dd>Returns a new <code>Array Iterator</code> object that contains the values for each index in the array.</dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<pre class="brush: js">// From a length +var uintc8 = new Uint8ClampedArray(2); +uintc8[0] = 42; +uintc8[1] = 1337; +console.log(uintc8[0]); // 42 +console.log(uintc8[1]); // 255 (clamped) +console.log(uintc8.length); // 2 +console.log(uintc8.BYTES_PER_ELEMENT); // 1 + +// From an array +var arr = new Uint8ClampedArray([21,31]); +console.log(arr[1]); // 31 + +// From another TypedArray +var x = new Uint8ClampedArray([21, 31]); +var y = new Uint8ClampedArray(x); +console.log(y[0]); // 21 + +// From an ArrayBuffer +var buffer = new ArrayBuffer(8); +var z = new Uint8ClampedArray(buffer, 1, 4); +</pre> + +<h2 id="Specifications">Specifications</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('Typed Array')}}</td> + <td>{{Spec2('Typed Array')}}</td> + <td>Superseded by ECMAScript 6.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#table-49', 'TypedArray constructors')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>7.0</td> + <td>{{ CompatGeckoDesktop(2) }}</td> + <td>11 (as of <a href="https://support.microsoft.com/en-us/kb/2929437">KB2929437</a>)</td> + <td>11.6</td> + <td>5.1</td> + </tr> + <tr> + <td><code>new</code> is required</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(44) }}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>4.0</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile(2) }}</td> + <td>{{CompatVersionUnknown}}</td> + <td>11.6</td> + <td>4.2</td> + </tr> + <tr> + <td><code>new</code> is required</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoMobile(44) }}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Compatibility_notes">Compatibility notes</h2> + +<p>Starting with ECMAScript 2015 (ES6), <code>Uint8ClampedArray</code> constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling a <code>Uint8ClampedArray</code> constructor as a function without <code>new</code>, will throw a {{jsxref("TypeError")}} from now on.</p> + +<pre class="brush: js example-bad">var dv = Uint8ClampedArray([1, 2, 3]); +// TypeError: calling a builtin Uint8ClampedArray constructor +// without new is forbidden</pre> + +<pre class="brush: js example-good">var dv = new Uint8ClampedArray([1, 2, 3]);</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li> + <li>{{jsxref("ArrayBuffer")}}</li> + <li>{{jsxref("DataView")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/undefined/index.html b/files/ru/web/javascript/reference/global_objects/undefined/index.html new file mode 100644 index 0000000000..adb250f4f8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/undefined/index.html @@ -0,0 +1,143 @@ +--- +title: undefined +slug: Web/JavaScript/Reference/Global_Objects/undefined +tags: + - JavaScript + - NeedsUpdate + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +<div>{{jsSidebar("Objects")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> + +<p>Значение глобального свойства <code><strong>undefined</strong></code> представляет значение <code>{{Glossary("Undefined", "undefined")}}</code>. Это одно из {{Glossary("Primitive", "примитивных значений")}} JavaScript.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<div></div> + +<p>{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}</p> + +<div class="hidden"> +<p>The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> and send us a pull request.</p> +</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>undefined</code></pre> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>undefined</code> является свойством <em>глобального объекта</em>, то есть, это переменная в глобальной области видимости. Начальным значением <code>undefined</code> является примитивное значение <code>undefined</code>.</p> + +<p>В современных браузерах (JavaScript 1.8.5 / Firefox 4+), <code>undefined</code> является ненастраиваемым и незаписываемым свойством, в соответствии со спецификацией ECMAScript 5. Даже когда это не так, избегайте его переопределения.</p> + +<p>Переменная, не имеющая присвоенного значения, обладает типом <code>undefined</code>. Также <code>undefined</code> возвращают метод или инструкция, если переменная, участвующая в вычислениях, не имеет присвоенного значения. Функция возвращает <code>undefined</code>, если она не {{jsxref("Statements/return", "возвращает", "", 1)}} какого-либо значения.</p> + +<p>Поскольку <code>undefined</code> не является {{jsxref("Reserved_Words", "зарезервированным словом", "", 1)}}, он может использоваться в качестве <a href="/ru/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Variables">идентификатора</a> (имени переменной) в любой области видимости, за исключением глобальной.</p> + +<pre class="brush: js">// печатает 'foo string' +(function(){ var undefined = 'foo'; console.log(undefined, typeof undefined); })(); + +// печатает 'foo string' +(function(undefined){ console.log(undefined, typeof undefined); })('foo'); +</pre> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Strict_equality_and_undefined" name="Strict_equality_and_undefined">Пример: строгое сравнение и <code>undefined</code></h3> + +<p>Вы можете использовать <code>undefined</code> и операторы строгого равенства или неравенства для определения того, имеет ли переменная значение. В следующем коде переменная <code>x</code> не определена и инструкция <code>if</code> вычисляется в <code>true</code>.</p> + +<pre class="brush: js">var x; +if (x === undefined) { + // эти инструкции будут выполнены +} +else { + // эти инструкции не будут выполнены +} +</pre> + +<div class="note"> +<p><strong>Обратите внимание:</strong> здесь используется оператор строгого равенства (идентичности) вместо простого оператора равенства, поскольку <code>x == undefined</code> также проверяет, является ли <code>x</code> равным <code>null</code>, в то время как оператор идентичности этого не делает. {{jsxref("Global_Objects/null", "null")}} не эквивалентен <code>undefined</code>. Для более подробной информации смотрите {{jsxref("Operators/Comparison_Operators", "операторы сравнения", "", 1)}}.</p> +</div> + +<h3 id="Typeof_operator_and_undefined" name="Typeof_operator_and_undefined">Пример: оператор <code>typeof</code> и <code>undefined</code></h3> + +<p>В качестве альтернативы можно использовать оператор {{jsxref("Operators/typeof", "typeof")}}:</p> + +<pre class="brush: js">var x; +if (typeof x === 'undefined') { + // эти инструкции будут выполнены +} +</pre> + +<p>Одной из причин использования оператора {{jsxref("Operators/typeof", "typeof")}} может быть та, что он не выбрасывает ошибку, если переменная не была определена.</p> + +<pre class="brush: js">// переменная x не была определена ранее +if (typeof x === 'undefined') { // вычислится в true без ошибок + // эти инструкции будут выполнены +} + +if (x === undefined) { // выкинет ReferenceError + +} +</pre> + +<p>Однако, уловки такого рода должны избегаться. JavaScript является языком со статической областью видимости, так что узнать, была ли переменная определена, можно путём просмотра, была ли она определена в охватывающем контексте. Единственным исключением являет глобальная область видимости, но глобальная область видимости привязана к глобальному объекту, так что проверка существования переменной в глобальном контексте может быть осуществлена путём проверки существования свойства <em>глобального объекта</em> (например, используя оператор {{jsxref("Operators/in", "in")}}).</p> + +<h3 id="Void_operator_and_undefined" name="Void_operator_and_undefined">Пример: оператор <code>void</code> и <code>undefined</code></h3> + +<p>Третьей альтернативой является оператор {{jsxref("Operators/void", "void")}}.</p> + +<pre class="brush: js">var x; +if (x === void 0) { + // эти инструкции будут выполнены +} + +// переменная y не была определена ранее +if (y === void 0) { + // выкинет ReferenceError (в отличие от оператора `typeof`) +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 1-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение. Реализована в JavaScript 1.3.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td></td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-undefined', 'undefined')}}</td> + <td>{{Spec2('ES6')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("javascript.builtins.undefined")}}</p> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Global_Objects/NaN", "NaN")}}</li> + <li>{{jsxref("Global_Objects/null", "null")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/unescape/index.html b/files/ru/web/javascript/reference/global_objects/unescape/index.html new file mode 100644 index 0000000000..503782b5d0 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/unescape/index.html @@ -0,0 +1,126 @@ +--- +title: unescape() +slug: Web/JavaScript/Reference/Global_Objects/unescape +translation_of: Web/JavaScript/Reference/Global_Objects/unescape +--- +<div> +<div> +<div>{{jsSidebar("Objects")}} {{deprecated_header()}}</div> +</div> +</div> + +<h2 id="Summary" name="Summary">Описание</h2> + +<p>Устаревший метод <code><strong>unescape(str)</strong></code> создает новую строку в которой шестнадцатиричная последовательность симоволов вида %xx заменяется эквивалентами из кодировки ASCII. Знаки, закодированные в формате %uxxxx (знаки Юникода), заменяются знаками Юникода в шестнадцатеричной кодировке xxxx.</p> + +<p>Последовательность может быть результатом работы функции вроде {{jsxref("Global_Objects/escape", "escape")}}. Т.к. {{jsxref("Global_Objects/decodeURIComponent", "unescape")}} является устаревшей, используйте {{jsxref("Global_Objects/decodeURI", "decodeURI")}} или {{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}} вместо неё.</p> + +<div class="note"><strong>Обратите внимание:</strong> Не рекомендуется использовать <code>unescape</code> чтобы декодировать URI, используйте <code>decodeURI</code> вместо него.</div> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code>unescape(str)</code></pre> + +<h3 id="Parameters" name="Parameters">Parameters</h3> + +<dl> + <dt><code>str</code></dt> + <dd>Строка которую необходимо преобразовать</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>Функция unescape</code> это свойство <em>глабального объекта</em>.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush: js">unescape("abc123"); // "abc123" +unescape("%E4%F6%FC"); // "äöü" +unescape("%u0107"); // "ć" +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>ECMAScript 1st Edition.</td> + <td>Standard</td> + <td>Начальное определние.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-B.2.2', 'unescape')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено в (информативно) Compatibility Annex B</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-unescape-string', 'unescape')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено в (нормативно) Annex B for Additional ECMAScript Features for Web Browsers</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + <td>{{ CompatVersionUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_Also" name="See_Also">Смотрите так же</h2> + +<ul> + <li>{{jsxref("Global_Objects/decodeURI", "decodeURI")}}</li> + <li>{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/uneval/index.html b/files/ru/web/javascript/reference/global_objects/uneval/index.html new file mode 100644 index 0000000000..21cd4e9958 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/uneval/index.html @@ -0,0 +1,73 @@ +--- +title: uneval() +slug: Web/JavaScript/Reference/Global_Objects/uneval +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/uneval +--- +<p>{{jsSidebar("Objects")}}{{Non-standard_header}}</p> + +<div><strong style="font-size: 2.14285714285714rem; font-weight: 700; letter-spacing: -1px; line-height: 30px;">Сводка</strong></div> + +<p><code style="font-style: normal; line-height: 1.5;"><strong>uneval()</strong></code><span style="line-height: 1.5;"> метод создает строковое представление исходного кода объекта.</span></p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox">uneval(object)</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>object</code></dt> + <dd>JavaScript-выражение или оператор.</dd> +</dl> + +<div class="note"><strong>Примечание:</strong> Вы не получите корректное JSON-представление объекта.</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p><code>uneval()</code> является функцией высшего порядка и не связана с любым объектом.</p> + +<h2 id="Примеры">Примеры</h2> + +<pre class="brush:js">var a = 1; +uneval(a); // возвращает строку, содержащую 1 + +var b = "1"; +uneval(b) // возвращает строку, содержащую "1" + +uneval(function foo(){}); // возвращает "(function foo(){})" + + +var a = uneval(function foo(){return 'привет'}); +var foo = eval(a); +foo(); // возвращает "привет" +</pre> + +<h2 id="See_also" name="See_also">Технические характеристики</h2> + +<p>Не является частью какой-либо спецификации.</p> + +<h2 id="Совместимость_браузеров">Совместимость браузеров</h2> + +<p> </p> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("javascript.builtins.uneval")}}</p> + +<p> </p> + +<div id="compat-mobile"> </div> + +<h2 id="See_Also" name="See_Also">См. также</h2> + +<ul> + <li>{{jsxref("Global_Objects/eval", "eval()")}}</li> + <li>{{jsxref("JSON.stringify")}}</li> + <li>{{jsxref("JSON.parse")}}</li> + <li>{{jsxref("Object.toSource")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/urierror/index.html b/files/ru/web/javascript/reference/global_objects/urierror/index.html new file mode 100644 index 0000000000..c93ab67453 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/urierror/index.html @@ -0,0 +1,163 @@ +--- +title: URIError +slug: Web/JavaScript/Reference/Global_Objects/URIError +tags: + - Error + - JavaScript + - Object + - Reference + - URIError +translation_of: Web/JavaScript/Reference/Global_Objects/URIError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Объект <code><strong>URIError</strong></code> представляет ошибку, возникающую при неправильном использовании глобальных функций обработки URI.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> +<pre class="syntaxbox"><code>new URIError([<var>message</var>[, <var>fileName</var>[, <var>lineNumber</var>]]])</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> +<dl> + <dt><code>message</code></dt> + <dd>Необязательный параметр. Человеко-читаемое описание ошибки.</dd> + <dt><code>fileName</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Имя файла, содержащего код, вызвавший исключение.</dd> + <dt><code>lineNumber</code> {{non-standard_inline}}</dt> + <dd>Необязательный параметр. Номер строки кода, вызвавшей исключение.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> +<p>Исключение <code>URIError</code> выбрасывается при передаче некорректного URI в глобальные функции обработки URI.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt>{{jsxref("URIError.prototype")}}</dt> + <dd>Позволяет добавлять свойства в объект <code>URIError</code>.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Глобальный объект <code>URIError</code> не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.</p> + +<h2 id="URIError_instances" name="URIError_instances">Экземпляры объекта <code>URIError</code></h2> + +<h3 id="Properties_of_URIError_instances" name="Properties_of_URIError_instances">Свойства</h3> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype', 'Properties')}}</div> + +<h3 id="Methods_of_URIError_instances" name="Methods_of_URIError_instances">Методы</h3> +<div>{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/URIError/prototype', 'Methods')}}</div> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:_Catch_an_URIError" name="Example:_Catch_an_URIError">Пример: перехват исключения <code>URIError</code></h3> +<pre class="brush: js">try { + decodeURIComponent('%'); +} catch (e) { + console.log(e instanceof URIError); // true + console.log(e.message); // "malformed URI sequence" - неверный формат последовательности URI + console.log(e.name); // "URIError" + console.log(e.fileName); // "Scratchpad/1" + console.log(e.lineNumber); // 2 + console.log(e.columnNumber); // 2 + console.log(e.stack); // "@Scratchpad/2:2:3\n" +} +</pre> + +<h3 id="Example:_Create_an_URIError" name="Example:_Create_an_URIError">Пример: возбуждение исключения <code>URIError</code></h3> +<pre class="brush: js">try { + throw new URIError('Привет', 'someFile.js', 10); +} catch (e) { + console.log(e instanceof URIError); // true + console.log(e.message); // "Привет" + console.log(e.name); // "URIError" + console.log(e.fileName); // "someFile.js" + console.log(e.lineNumber); // 10 + console.log(e.columnNumber); // 0 + console.log(e.stack); // "@Scratchpad/2:2:9\n" +} +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.6.6', 'URIError')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-native-error-types-used-in-this-standard-urierror', 'URIError')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error")}}</li> + <li>{{jsxref("URIError.prototype")}}</li> + <li>{{jsxref("Global_Objects/decodeURI", "decodeURI()")}}</li> + <li>{{jsxref("Global_Objects/decodeURIComponent", "decodeURIComponent()")}}</li> + <li>{{jsxref("Global_Objects/encodeURI", "encodeURI()")}}</li> + <li>{{jsxref("Global_Objects/encodeURIComponent", "encodeURIComponent()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html b/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html new file mode 100644 index 0000000000..5e149071db --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/urierror/prototype/index.html @@ -0,0 +1,122 @@ +--- +title: URIError.prototype +slug: Web/JavaScript/Reference/Global_Objects/URIError/prototype +tags: + - Error + - JavaScript + - Property + - Prototype + - URIError +translation_of: Web/JavaScript/Reference/Global_Objects/URIError +--- +<div>{{JSRef("Global_Objects", "Error", "EvalError,InternalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError")}}</div> + +<h2 id="Summary" name="Summary">Сводка</h2> +<p>Свойство <code><strong>URIError.prototype</strong></code> представляет прототип конструктора объекта {{jsxref("URIError")}}.</p> + +<div>{{js_property_attributes(0, 0, 0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> +<p>Все экземпляры {{jsxref("URIError")}} наследуются от объекта <code>URIError.prototype</code>. Вы можете использовать прототип для добавления свойств или методов ко всем экземплярам.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> +<dl> + <dt><code>URIError.prototype.constructor</code></dt> + <dd>Определяет функцию, создающую прототип экземпляра.</dd> + <dt>{{jsxref("Error.prototype.message", "URIError.prototype.message")}}</dt> + <dd>Сообщение ошибки. Хотя стандарт ECMA-262 определяет, что {{jsxref("URIError")}} должен предоставлять своё собственное свойство <code>message</code>, в <a href="/ru/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> он наследует свойство {{jsxref("Error.prototype.message")}}.</dd> + <dt>{{jsxref("Error.prototype.name", "URIError.prototype.name")}}</dt> + <dd>Название ошибки. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.fileName", "URIError.prototype.fileName")}}</dt> + <dd>Путь к файлу, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.lineNumber", "URIError.prototype.lineNumber")}}</dt> + <dd>Номер строки в файле, в котором возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.columnNumber", "URIError.prototype.columnNumber")}}</dt> + <dd>Номер колонки в строке, на которой возникла эта ошибка. Унаследовано от {{jsxref("Error")}}.</dd> + <dt>{{jsxref("Error.prototype.stack", "URIError.prototype.stack")}}</dt> + <dd>Стек вызовов. Унаследовано от {{jsxref("Error")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> +<p>Хотя объект прототипа {{jsxref("URIError")}} не содержит собственных методов, экземпляры {{jsxref("URIError")}} наследуют некоторые методы из цепочки прототипов.</p> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>ECMAScript 3-е издание.</td> + <td>Стандарт</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.11.7.6', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-nativeerror.prototype', 'NativeError.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Определено как <code><em>NativeError</em>.prototype</code>.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> +<div>{{CompatibilityTable}}</div> +<div id="compat-desktop"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> +<div id="compat-mobile"> + <table class="compat-table"> + <tbody> + <tr> + <th>Возможность</th> + <th>Android</th> + <th>Chrome для Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Базовая поддержка</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> + </table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> +<ul> + <li>{{jsxref("Error.prototype")}}</li> + <li>{{jsxref("Function.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html new file mode 100644 index 0000000000..260264b01d --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/clear/index.html @@ -0,0 +1,91 @@ +--- +title: WeakMap.prototype.clear() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/clear +--- +<div>{{JSRef}} {{obsolete_header}}</div> + +<p>Метод <code><strong>clear()</strong></code> удаляет все элементы из объекта WeakMap, но он больше не является частью ECMAScript и его реализаций.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>wm</em>.clear();</code></pre> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_clear">Использование метода <code>clear</code></h3> + +<pre class="brush: js;highlight:[10]">var wm = new WeakMap(); +var obj = {}; + +wm.set(obj, "foo"); +wm.set(window, "bar"); + +wm.has(obj); // true +wm.has(window); // true + +wm.clear(); + +wm.has(obj) // false +wm.has(window) // false +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<p>Не входит ни в одну текущую спецификацию или черновик. Этот метод был частью черновика ECMAScript 6, до 28 ревизии (версия от 14 октября, 2014), но был удален в последующих версиях черновика. В финальном стандарте его не будет.</p> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>20-45</td> + <td>11</td> + <td>23</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>20-45</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html new file mode 100644 index 0000000000..76e4b078dc --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/delete/index.html @@ -0,0 +1,114 @@ +--- +title: WeakMap.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/delete +--- +<div>{{JSRef}}</div> + +<p><code><font face="Open Sans, Arial, sans-serif">Метод </font><strong>delete()</strong></code> удаляет элемент из объекта WeakMap.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>wm</em>.delete(key);</code></pre> + +<h3 id="Параетры">Параетры</h3> + +<dl> + <dt>key</dt> + <dd>Обязателен. Ключ элемента, который будет уделен из объекта WeakMap.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращает true если элемент из объекта WeakMap удалён успешно.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_delete">Использование метода delete</h3> + +<pre class="brush: js;highlight:[4]">var wm = new WeakMap(); +wm.set(window, "foo"); + +wm.delete(window); // Возвращает true. Успешно удалён. + +wm.has(window); // Возвращает false. Объекта window больше нет в WeakMap. +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakmap.prototype.delete', 'WeakMap.prototype.delete')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop("6.0")}}</td> + <td>11</td> + <td>23</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("6.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Firefox-specific_notes">Firefox-specific notes</h2> + +<ul> + <li>Prior to SpiderMonkey 38 {{geckoRelease(38)}}, this method threw a {{jsxref("TypeError")}} when the <code>key</code> parameter was not an object. This has been fixed in version 38 and later to return <code>false</code> as per latest ES6 standard ({{bug(1127827)}}).</li> +</ul> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html new file mode 100644 index 0000000000..3617aa5f82 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/get/index.html @@ -0,0 +1,115 @@ +--- +title: WeakMap.prototype.get() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/get +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/get +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>get()</strong></code> возвращает элемент из объекта WeakMap,</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>wm</em>.get(key);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Обязателен. Ключ элемента, который будет возвращён из объекта WeakMap.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Возвращает элемент по указанному ключу или undefined, если ключ не может быть найден в объекте WeakMap.</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_get">Использование метода get</h3> + +<pre class="brush: js">var wm = new WeakMap(); +wm.set(window, "foo"); + +wm.get(window); // Возвращает "foo". +wm.get("baz"); // Возвращает undefined. +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakmap.prototype.get', 'WeakMap.prototype.get')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop("6.0")}}</td> + <td>11</td> + <td>23</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("6.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Firefox-specific_notes">Firefox-specific notes</h2> + +<ul> + <li>Prior to SpiderMonkey 38 {{geckoRelease(38)}}, this method threw a {{jsxref("TypeError")}} when the key parameter was not an object. However, the latest ES6 standard specifies to return <code>undefined</code> instead. Furthermore, <code>WeakMap.prototype.get</code> accepted an optional second argument as a fallback value, which is not part of the standard. Both non-standard behaviors are removed in version 38 and higher ({{bug(1127827)}}).</li> +</ul> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.set()")}}</li> + <li>{{jsxref("WeakMap.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html new file mode 100644 index 0000000000..18eede2abb --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/has/index.html @@ -0,0 +1,118 @@ +--- +title: WeakMap.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/has +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/has +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>has()</strong></code> возвращает булевое значение, которое указывает на то существует элемент с таким ключом в объекте WeakMap или нет.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>wm</em>.has(key);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Обязателен. Ключ элемента, существование которого необходимо проверить в объекте WeakMap.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<dl> + <dt>Boolean</dt> + <dd>Возвращает <code>true</code> если элемент с указанным ключом существует в объекте WeakMap, если нет — false.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_has">Использование метода <code>has</code></h3> + +<pre class="brush: js">var wm = new WeakMap(); +wm.set(window, "foo"); + +wm.has(window); // возвращает true +wm.has("baz"); // возвращает false +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakmap.prototype.has', 'WeakMap.prototype.has')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop("6.0")}}</td> + <td>11</td> + <td>23</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("6.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Firefox-specific_notes">Firefox-specific notes</h2> + +<ul> + <li>Prior to SpiderMonkey 38 {{geckoRelease(38)}}, this method threw a {{jsxref("TypeError")}} when the <code>key</code> parameter was not an object. This has been fixed in version 38 and later to return <code>false</code> as per latest ES6 standard ({{bug(1127827)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.prototype.set()")}}</li> + <li>{{jsxref("WeakMap.prototype.get()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..1bf1b3c017 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,158 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Global_Objects/WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +<div>{{JSRef("Global_Objects", "WeakMap")}}</div> + +<h2 id="Сводка">Сводка</h2> + +<p>Объект <strong><code>WeakMap</code></strong> — коллекция пар ключ-значение. В качестве ключей могут быть использованы только объекты, а значения могут быть произвольных типов.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox notranslate"><code>new WeakMap([iterable]) +</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt><code>iterable</code></dt> + <dd>Может быть массивом или любым другим итерируемым объектом, элементы которого являются парами ключ-значение (массивы из двух элементов). Каждая пара ключ-значение будет добавлена во вновь созданный экземпляр <code>WeakMap</code>. <code>Null</code> обрабатывается как <code>undefined</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Ключами WeakMap могут быть только объекты. {{Glossary("Primitive", "Примитивы")}} в качестве ключей не допускаются (т.е. {{jsxref("Symbol")}} не может быть ключом <code>WeakMap</code>).</p> + +<h3 id="Почему_WeakMap">Почему<em> Weak</em>Map?</h3> + +<p>Опытный JavaScript разработчик заметит, что map API можно реализовать на JavaScript c помощью двух массивов (один для ключей, второй для значений) и четырех общих API методов. Установка элементов в этот map должна будет одновременно запушить ключи и значения. В результате индексы ключа и значения будут корректными. Получение значений с map потребует итерирование ключей, чтобы найти совпадение, а затем использование индекса этого соответствия для извлечения соответствующего значения из массива значений.</p> + +<p>У такой реализации было бы два главных неудобства. Первым является O(n) поиск (где n — количество ключей в map), так как обе операции требуют итерирование списка ключей для нахождения совпадения. Вторым <span style="background-color: #f9f9f9; color: #252525; font-family: sans-serif; font-size: 12.3199996948242px; line-height: 18.4799995422363px; text-transform: lowercase;">– </span>проблема утечки памяти. В словарях, написанных вручную, массив с ключами будет хранить ссылки на объекты-ключи, не давая им быть помеченными сборщиком мусора. В нативных <code>WeakMap</code>, ссылки на объекты-ключи хранятся «слабо», что означает то, что они не предотвратят сборку мусора в том случае, если других ссылок на объект не будет.</p> + +<p>WeakMaps имеют “weak” («слабые») обращения к ключам объекта, а следовательно непрепятствие сборщику мусора, когда мы больше не имеем объекта-ключа. WeakMaps могут быть особенно полезными конструкциями при сопоставлении ключей с информацией о ключе, который ценен, только если ключ не был собран сборщиком мусора (Garbage collector).</p> + +<p>Из-за того, что ссылки являются слабыми, ключи <code>WeakMap</code> не перечисляемы (то есть нет метода, который возвращает список ключей). Иначе список бы зависел от состояния сбора мусора, представляя индетерминизм. Если вы хотите иметь список ключей, вам следует поддерживать его самостоятельно.</p> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>WeakMap.length</code></dt> + <dd>Значение свойства <code>length</code> всегда равно 0.</dd> + <dt>{{jsxref("WeakMap.prototype")}}</dt> + <dd>Представляет прототип конструктора <code>WeakMap</code>. Позволяет добавлять свойства всем объектам типа <code>WeakMap</code>.</dd> +</dl> + +<h2 id="Boolean_instances" name="Boolean_instances">Экземпляры <code>WeakMap</code></h2> + +<p>Все экземпляры <code>WeakMap</code> унаследованы от {{jsxref("WeakMap.prototype")}}.</p> + +<h3 id="Свойства">Свойства</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Properties')}}</p> + +<h3 id="Методы">Методы</h3> + +<p>{{page('ru/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Methods')}}</p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_объекта_WeakMap">Использование объекта <code>WeakMap</code></h3> + +<pre class="brush: js notranslate">const wm1 = new WeakMap(), + wm2 = new WeakMap(), + wm3 = new WeakMap(); +const o1 = {}, + o2 = function(){}, + o3 = window, + o4 = [1, 2, 3]; + +wm1.set(o1, 37); +wm1.set(o2, 'azerty'); +wm2.set(o1, o2); // значением может быть что угодно, включая объект или функцию +wm2.set(o3, undefined); +wm2.set(wm1, wm2); // ключами и значениями могут быть объекты. Даже WeakMap-ами + +wm1.get(o2); // 'azerty' +wm2.get(o2); // undefined, нет значения для o2 в wm2 +wm2.get(o3); // undefined, это установленное значение + +wm1.has(o2); // true +wm2.has(o2); // false +wm2.has(o3); // true (даже если значение равно 'undefined') + +wm3.set(o1, 37); +wm3.get(o1); // 37 + +wm1.has(o1); // true +wm1.delete(o1); +wm1.has(o1); // false +</pre> + +<h3 id="Пример_Реализация_класса_WeakMap-like_классов_с_методом_.clear">Пример: Реализация класса WeakMap-like классов с методом .clear()</h3> + +<pre class="brush: js notranslate">class ClearableWeakMap { + constructor(init) { + this._wm = new WeakMap(init) + } + clear() { + this._wm = new WeakMap() + } + delete(k) { + return this._wm.delete(k) + } + get(k) { + return this._wm.get(k) + } + has(k) { + return this._wm.has(k) + } + set(k, v) { + this._wm.set(k, v) + return this + } +} +</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарий</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td></td> + </tr> + </tbody> +</table> + +<p style=""></p> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.WeakMap")}}</p> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<p style=""></p> + +<ul> + <li><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=547941">WeakMap bug at Mozilla</a></li> + <li><a href="http://fitzgeraldnick.com/weblog/53/">Hiding Implementation Details with ECMAScript 6 WeakMaps</a></li> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakSet")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html new file mode 100644 index 0000000000..3a955a427f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/prototype/index.html @@ -0,0 +1,74 @@ +--- +title: WeakMap.prototype +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/prototype +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +<div>{{JSRef}}</div> + +<p><code><strong>WeakMap</strong></code><strong><code>.prototype</code></strong> свойство указыкает на прототип {{jsxref("WeakMap")}} конструктора.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Описание">Описание</h2> + +<p>{{jsxref("WeakMap")}} экзепляры унаследывают {{jsxref("WeakMap.prototype")}}. Вы можите использовать прототип конструктора объекта для добавления нових свойств и/или методов всем экзепляра класса <code>WeakMap</code>.</p> + +<p><code>WeakMap.prototype</code> является простым объектом:</p> + +<pre class="brush: js">Object.prototype.toString.call(WeakMap.prototype); // "[object Object]"</pre> + +<h2 id="Свойства">Свойства</h2> + +<dl> + <dt><code>WeakMap.prototype.constructor</code></dt> + <dd>Возвращает функцию, создавшую экземпляр. {{jsxref("WeakMap")}} function by default.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("WeakMap.delete", "WeakMap.prototype.delete(key)")}}</dt> + <dd>Удаление значение по ключу. <code>WeakMap.prototype.has(key)</code> вернет <code>false</code> после.</dd> + <dt>{{jsxref("WeakMap.get", "WeakMap.prototype.get(key)")}}</dt> + <dd>Возвращает значение по ключу, or <code>undefined</code> такового нет.</dd> + <dt>{{jsxref("WeakMap.has", "WeakMap.prototype.has(key)")}}</dt> + <dd>Вернет логическое значение, связанное с существованием ключа.</dd> + <dt>{{jsxref("WeakMap.set", "WeakMap.prototype.set(key, value)")}}</dt> + <dd>Устанавливает значение по ключу, после возвращает самого себя.</dd> + <dt><s class="obsoleteElement">{{jsxref("WeakMap.prototype.clear()")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Удаляет все ключи-значения из <code>WeakMap</code> объекта. Заметьте, что это возможно, только есть <code>WeakMap</code>-like объект имеет<code>.clear()</code> метод путем инкапсулирования <code>WeakMap</code> объекта, раннее неимевшего его (смотри пример на странице {{jsxref("WeakMap")}})</s></dd> +</dl> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES2015', '#sec-weakmap.prototype', 'WeakMap.prototype')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakmap.prototype', 'WeakMap.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость">Совместимость</h2> + + + +<p>{{Compat("javascript.builtins.WeakMap.prototype")}}</p> + +<h2 id="Рекомендуем">Рекомендуем</h2> + +<ul> + <li>{{jsxref("Map.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html b/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html new file mode 100644 index 0000000000..f8dad8a44f --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakmap/set/index.html @@ -0,0 +1,120 @@ +--- +title: WeakMap.prototype.set() +slug: Web/JavaScript/Reference/Global_Objects/WeakMap/set +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap/set +--- +<div>{{JSRef}}</div> + +<p>Метод <code><strong>set()</strong></code> добавляет новый элемент с указанными ключом и значением в объект WeakMap.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>wm</em>.set(key, value);</code></pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt>key</dt> + <dd>Обязателен. Ключ добавляемого в WeakMap объект элемента.</dd> + <dt>value</dt> + <dd>Обязателен. Значение добавляемого в WeakMap объект элемента.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Объект <code>WeakMap.</code></p> + +<h2 id="Примеры">Примеры</h2> + +<h3 id="Использование_метода_set">Использование метода <code>set</code></h3> + +<pre class="brush: js">var wm = new WeakMap(); +var obj = {}; + +// Добавляет новый элемент в объект WeakMap +wm.set(obj, "foo").set(window, "bar"); // chainable + +// Обновляет элемент в объекте WeakMap +wm.set(obj, "baz"); +</pre> + +<h2 id="Спецификация">Спецификация</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakmap.prototype.set', 'WeakMap.prototype.set')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Initial definition.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop("6.0")}}</td> + <td>11</td> + <td>23</td> + <td>7.1</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile("6.0")}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Firefox-specific_notes">Firefox-specific notes</h2> + +<ul> + <li>Prior to Firefox 33 {{geckoRelease("33")}}, <code>WeakMap.prototype.set</code> returned <code>undefined</code> and was not chainable. This has been fixed ({{bug(1031632)}}). The behavior can be found in Chrome/v8 as well (<a href="https://code.google.com/p/v8/issues/detail?id=3410">issue</a>).</li> +</ul> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakMap")}}</li> + <li>{{jsxref("WeakMap.prototype.get()")}}</li> + <li>{{jsxref("WeakMap.prototype.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakset/add/index.html b/files/ru/web/javascript/reference/global_objects/weakset/add/index.html new file mode 100644 index 0000000000..3534fb4d59 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/add/index.html @@ -0,0 +1,77 @@ +--- +title: WeakSet.prototype.add() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/add +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/add +--- +<div>{{JSRef("Global_Objects", "WeakSet")}}</div> + +<p>Метод <code><strong>add()</strong></code> добавляет новый объект в конец объекта WeakSet.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>ws</em>.add(value);</code> +</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt>value</dt> + <dd>Обязателен. Объект, добавляемый в WeakSet.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:Using_the_add_method" name="Example:Using_the_add_method">Использование метода add</h3> + +<pre class="brush: js">var ws = new WeakSet(); + +ws.add(window); // добавляет объект window в WeakSet + +ws.has(window); // true + +// Weakset принимает в качестве параметров только объекты +ws.add(1); +// результат в Chrome: "TypeError: Invalid value used in weak set" +// результат в Firefox: "TypeError: 1 is not a non-null object" </pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.add', 'WeakSet.prototype.add')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.WeakSet.add")}}</p> + +<div id="compat-mobile"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.delete()")}}</li> + <li>{{jsxref("WeakSet.prototype.has()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html b/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html new file mode 100644 index 0000000000..2ebed17dde --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/delete/index.html @@ -0,0 +1,123 @@ +--- +title: WeakSet.prototype.delete() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/delete +--- +<div>{{JSRef("Global_Objects", "WeakSet")}}</div> + +<p>Метод <code><strong>delete()</strong></code> удаляет указанный элемент из объекта <code>WeakSet</code>.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>ws</em>.delete(value);</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt>value</dt> + <dd>Обязателен. Объект, удаляемый из WeakSet.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Если объект был успешно удалён, возвращается true, иначе false.</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:Testing_size_of_all_array_elements" name="Example:Testing_size_of_all_array_elements">Использование метода <code>delete</code> </h3> + +<pre class="brush: js">var ws = new WeakSet(); +var obj = {}; + +ws.add(window); + +ws.delete(obj); // Вернёт false. Удаляемый объект не найден в WeakSet. +ws.delete(window); // Вернёт true. Объект успешно удалён. + +ws.has(window); // Вернёт false. Объект window был удалён из WeakSet. +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.delete', 'WeakSet.prototype.delete')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop(34)}}</td> + <td>{{CompatNo}}</td> + <td>23</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.clear()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakset/has/index.html b/files/ru/web/javascript/reference/global_objects/weakset/has/index.html new file mode 100644 index 0000000000..abd00581e2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/has/index.html @@ -0,0 +1,124 @@ +--- +title: WeakSet.prototype.has() +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/has +tags: + - ECMAScript6 + - JavaScript + - Method + - Prototype + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet/has +--- +<div>{{JSRef("Global_Objects", "WeakSet")}}</div> + +<p>Метод <code><strong>has()</strong></code> определяет, содержит ли WeakSet определённый элемент, возвращая в зависимости от этого true или false. </p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"><code><em>ws</em>.has(value);</code></pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt>value</dt> + <dd>Обязателен. Искомый объект.</dd> +</dl> + +<h3 id="Returns" name="Returns">Возвращаемое значение</h3> + +<dl> + <dt>Boolean</dt> + <dd>Если объект был найден в WeakSet вернёт true, иначе false.</dd> +</dl> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:Using_the_has_method" name="Example:Using_the_has_method">Использование метода <code>has</code> </h3> + +<pre class="brush: js">var ws = new WeakSet(); +var obj = {}; +ws.add(window); + +mySet.has(window); // вернёт true +mySet.has(obj); // вернёт false +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype.has', 'WeakSet.prototype.has')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{CompatGeckoDesktop(34)}}</td> + <td>{{CompatNo}}</td> + <td>23</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("WeakSet")}}</li> + <li>{{jsxref("WeakSet.prototype.add()")}}</li> + <li>{{jsxref("WeakSet.prototype.delete()")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakset/index.html b/files/ru/web/javascript/reference/global_objects/weakset/index.html new file mode 100644 index 0000000000..b4660283a8 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/index.html @@ -0,0 +1,109 @@ +--- +title: WeakSet +slug: Web/JavaScript/Reference/Global_Objects/WeakSet +tags: + - ECMAScript6 + - JavaScript + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +<div>{{JSRef()}}</div> + +<p>Объект <strong><code>WeakSet</code></strong> - коллекция, элементами которой могут быть только <em>объекты. </em>Ссылки на эти объекты в WeakSet являются слабыми. Каждый объект может быть добавлен в WeakSet только один раз.</p> + +<h2 id="Syntax" name="Syntax">Синтаксис</h2> + +<pre class="syntaxbox"> new WeakSet([iterable]);</pre> + +<h3 id="Parameters" name="Parameters">Параметры</h3> + +<dl> + <dt>iterable</dt> + <dd>При передаче <a href="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/for...of">итерируемого объекта</a>, все его элементы будут добавлены в новый WeakSet. <code>Null</code> обрабатывается как <code>undefined</code>.</dd> +</dl> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Объекты <code>WeakSet </code>представляют собой коллекции объектов. Каждый объект в WeakSet встречается только один раз, что обеспечивает его уникальность в рамках коллекции WeakSet.</p> + +<p>Главным отличия от объекта {{jsxref("Set")}}:</p> + +<ul> + <li>WeakSet <strong>содержит только объекты</strong>, тогда как Set - значения любого типа.</li> + <li>Ссылки на объекты в WeakSet являются слабыми: если на объект, хранимый в WeakSet нет ни одной внешней ссылки, то сборщик мусора удалит этот объект. Также это означает, что WeakSet <strong>не итерируем, </strong>так как нет возможности получить список текущих хранимых в WeakSet объектов. </li> +</ul> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>WeakSet.length</code></dt> + <dd>Значение свойства <code>length</code> всегда равно 0.</dd> + <dt>{{jsxref("WeakSet.prototype")}}</dt> + <dd>Представляет прототип конструктора Weak<code>Set</code>. Позволяет добавлять свойства всем объектам типа <code>WeakSet</code>.</dd> +</dl> + +<h2 id="Экземпляры_WeakSet"><code>Экземпляры WeakSet</code> </h2> + +<p>Все экземпляры класса <code>WeakSet</code> унаследованы от {{jsxref("WeakSet.prototype")}}.</p> + +<h3 id="Properties_2" name="Properties_2">Свойства</h3> + +<p>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Properties')}}</p> + +<h3 id="Methods" name="Methods">Методы</h3> + +<p>{{page('ru/docs/Web/JavaScript/Reference/Global_Objects/WeakSet/prototype','Methods')}}</p> + +<h2 id="Examples" name="Examples">Примеры</h2> + +<h3 id="Example:Using_the_WeakSet_object" name="Example:Using_the_WeakSet_object">Использование объекта <code>WeakSet</code> </h3> + +<pre class="brush: js">var ws = new WeakSet(); +var obj = {}; +var foo = {}; + +ws.add(window); +ws.add(obj); + +ws.has(window); // true +ws.has(foo); // false, foo не добавлен в WeakSet + +ws.delete(window); // удаляет window из WeakSet +ws.has(window); // false, window был удалён +</pre> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakset-objects', 'WeakSet')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset-objects', 'WeakSet')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{Compat("javascript.builtins.WeakSet")}}</p> + +<div id="compat-mobile"> </div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Map")}}</li> + <li>{{jsxref("Set")}}</li> + <li>{{jsxref("WeakMap")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html b/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html new file mode 100644 index 0000000000..d7ae6c0270 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/weakset/prototype/index.html @@ -0,0 +1,141 @@ +--- +title: WeakSet.prototype +slug: Web/JavaScript/Reference/Global_Objects/WeakSet/prototype +tags: + - ECMAScript6 + - JavaScript + - Property + - WeakSet +translation_of: Web/JavaScript/Reference/Global_Objects/WeakSet +--- +<div>{{JSRef("Global_Objects", "WeakSet")}}</div> + +<p>Свойство <code><strong>WeakSet</strong></code><strong><code>.prototype</code></strong> представляет прототип для конструктора {{jsxref("WeakSet")}}.</p> + +<div>{{js_property_attributes(0,0,0)}}</div> + +<h2 id="Description" name="Description">Описание</h2> + +<p>Экземпляры {{jsxref("WeakSet")}} наследуются от {{jsxref("WeakSet.prototype")}}. Вы можете изменять прототип конструктора объекта для применения изменений ко всем экземплярам класса <code>WeakSet.</code></p> + +<p><code>WeakSet.prototype</code> сам по себе является обычным объектом:</p> + +<pre class="brush: js">Object.prototype.toString.call(WeakSet.prototype); // "[object Object]"</pre> + +<h2 id="Properties" name="Properties">Свойства</h2> + +<dl> + <dt><code>WeakSet.prototype.constructor</code></dt> + <dd>Возвращает функцию, создающую экземпляр прототипа. По умолчанию, это функция {{jsxref("WeakSet")}}.</dd> +</dl> + +<h2 id="Methods" name="Methods">Методы</h2> + +<dl> + <dt>{{jsxref("WeakSet.add", "WeakSet.prototype.add(value)")}}</dt> + <dd>Добавляет объект value в WeakSet. </dd> + <dt>{{jsxref("WeakSet.delete", "WeakSet.prototype.delete(value)")}}</dt> + <dd>Удаляет из WeakSet элемент value. После удаления вызов <code>WeakSet.prototype.has(value) возвращает false.</code> </dd> + <dt>{{jsxref("WeakSet.has", "WeakSet.prototype.has(value)")}}</dt> + <dd>Определяет, содержит WeakSet объект value или нет, возвращая, соответственно, true или false. </dd> + <dt><s class="obsoleteElement">{{jsxref("WeakSet.prototype.clear()")}} {{obsolete_inline}}</s></dt> + <dd><s class="obsoleteElement">Удаляет все элементы из объекта WeakSet.</s></dd> +</dl> + +<h2 id="Specifications" name="Specifications">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-weakset.prototype', 'WeakSet.prototype')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Изначальное определение.</td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-weakset.prototype', 'WeakSet.prototype')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>36</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{CompatNo}}</td> + <td>23</td> + <td>{{CompatNo}}</td> + </tr> + <tr> + <td>Ordinary object</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoDesktop("40")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome for Android</th> + <th>Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + <tr> + <td>Ordinary object</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatGeckoMobile("40")}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="See_also" name="See_also">Смотрите также</h2> + +<ul> + <li>{{jsxref("Set.prototype")}}</li> + <li>{{jsxref("WeakMap.prototype")}}</li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html new file mode 100644 index 0000000000..ba600573a9 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compile/index.html @@ -0,0 +1,83 @@ +--- +title: WebAssembly.compile() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compile +--- +<div>{{JSRef}}</div> + +<p>Функция <strong><code>WebAssembly.compile()</code></strong> компилирует {{jsxref("WebAssembly.Module")}} из двоичного кода WebAssembly. Эта функция полезна, если необходимо компилировать модуль до того, как его можно создать (в противном случае следует использовать функцию {{jsxref("WebAssembly.instantiate()")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Promise<WebAssembly.Module> WebAssembly.compile(bufferSource);</pre> + +<h3 id="Параметры">Параметры</h3> + +<dl> + <dt><em>bufferSource</em></dt> + <dd>Типированный массив <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a> или <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a>, содержащий двоичный код модуля <code>.wasm</code>, который вы хотите скомпилировать.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Обещание, (<code>Promise</code>), которое разрешает объект {{jsxref("WebAssembly.Module")}}, представляющий скомпилированный модуль.</p> + +<h3 id="Исключения">Исключения</h3> + +<ul> + <li>Если <code>bufferSource</code> не является <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a>, генерируется {{jsxref("TypeError")}}.</li> + <li>Если компиляция не удалась, обещание отклоняется с помощью {{jsxref("WebAssembly.CompileError")}}.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<p>В следующем примере выполняется компиляция загруженного <code>simple.wasm</code> байт-кода с использованием функции <code>compile()</code>, а затем отправляется его <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API">worker</a>-работнику, использующему <a href="/en-US/docs/Web/API/Worker/postMessage">postMessage()</a>.</p> + +<pre class="brush: js">var worker = new Worker("wasm_worker.js"); + +fetch('simple.wasm').then(response => + response.arrayBuffer() +).then(bytes => + WebAssembly.compile(bytes) +).then(mod => + worker.postMessage(mod) +);</pre> + +<div class="note"> +<p><strong>Заметка:</strong> Вероятно, вы захотите использовать {{jsxref("WebAssembly.compileStreaming()")}} в большинстве случаев, поскольку он более эффективен, чем <code>compile()</code>.</p> +</div> + +<h2 id="Характеристики">Характеристики</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Коммент</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('WebAssembly JS', '#webassemblycompile', 'compile()')}}</td> + <td>{{Spec2('WebAssembly JS')}}</td> + <td>Первоначальное определение проекта.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузером</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на перенос.</div> + +<p>{{Compat("javascript.builtins.WebAssembly.compile")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/WebAssembly">WebAssembly</a> обзорная страница</li> + <li><a href="/en-US/docs/WebAssembly/Concepts">WebAssembly концепции</a></li> + <li><a href="/en-US/docs/WebAssembly/Using_the_JavaScript_API">Использование WebAssembly JavaScript API</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html new file mode 100644 index 0000000000..106519cdf2 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/compilestreaming/index.html @@ -0,0 +1,79 @@ +--- +title: WebAssembly.compileStreaming() +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/compileStreaming +--- +<div>{{JSRef}}</div> + +<p>Функция <strong><code>WebAssembly.compileStreaming()</code></strong> компилирует {{jsxref("WebAssembly.Module")}} непосредственно из потокового исходника. Эта функция полезна, если необходимо скомпилировать модуль до того, как его можно создать (в противном случае следует использовать функцию {{jsxref("WebAssembly.instantiateStreaming()")}}.</p> + +<h2 id="Синтаксис">Синтаксис</h2> + +<pre class="syntaxbox">Promise<WebAssembly.Module> WebAssembly.compileStreaming(<em>source</em>);</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><em>source</em></dt> + <dd>Обещание, или {{domxref("Response")}}, которое будет выполнено с одним, представляющим основной источник модулем <code>.wasm</code>, который вы хотите передать и скомпилировать.</dd> +</dl> + +<h3 id="Возвращаемое_значение">Возвращаемое значение</h3> + +<p>Обещание, ( <code>Promise</code>), которое разрешает объект {{jsxref("WebAssembly.Module")}}, представляющий скомпилированный модуль.</p> + +<h3 id="Исключения">Исключения</h3> + +<ul> + <li>Если <code>bufferSource</code> не является <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a>, генерируется {{jsxref("TypeError")}}.</li> + <li>Если компиляция не удалась, обещание отклоняется с помощью {{jsxref("WebAssembly.CompileError")}}.</li> +</ul> + +<h2 id="Примеры">Примеры</h2> + +<p>Следующий пример (см. Нашу демонстрацию <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/compile-streaming.html">compile-streaming.html</a> на GitHub и <a href="https://mdn.github.io/webassembly-examples/js-api-examples/compile-streaming.html">view it live</a>) напрямую передает модуль .wasm из исходника, затем компилирует его в объект {{jsxref("WebAssembly.Module")}}.<br> + Поскольку функция <code>compileStreaming()</code> принимает обещание для объекта {{domxref("Response")}}, вы можете напрямую передать ему вызов {{domxref("WindowOrWorkerGlobalScope.fetch()")}}, и он передаст ответ в выполняемую функцию.</p> + +<pre class="brush: js">var importObject = { imports: { imported_func: arg => console.log(arg) } }; + +WebAssembly.compileStreaming(fetch('simple.wasm')) +.then(module => WebAssembly.instantiate(module, importObject)) +.then(instance => instance.exports.exported_func());</pre> + +<p>Затем создается полученный экземпляр модуля с помощью {{jsxref("WebAssembly.instantiate()")}} и вызывается экспортированная функция.</p> + +<h2 id="Характеристики">Характеристики</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Коммент</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('WebAssembly Embedding', '#webassemblycompilestreaming', 'compileStreaming()')}}</td> + <td>{{Spec2('WebAssembly Embedding')}}</td> + <td>Первоначальное определение <br> + проекта.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузером</h2> + +<div> +<div class="hidden">Таблица совместимости на этой странице создается из структурированных данных. Если вы хотите внести свой вклад в данные, ознакомьтесь с <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам запрос на перенос.</div> + +<p>{{Compat("javascript.builtins.WebAssembly.compileStreaming")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li><a href="/en-US/docs/WebAssembly">WebAssembly</a> обзорная страница</li> + <li><a href="/en-US/docs/WebAssembly/Concepts">WebAssembly концепции</a></li> + <li><a href="/en-US/docs/WebAssembly/Using_the_JavaScript_API">Использование WebAssembly JavaScript API</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/index.html new file mode 100644 index 0000000000..daff5d4ee7 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/index.html @@ -0,0 +1,161 @@ +--- +title: WebAssembly +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly +--- +<div>{{JSRef}}{{SeeCompatTable}}</div> + +<p>Объект JavaScript <strong><code>WebAssembly</code></strong> действует как пространство имен для всего <a href="/en-US/docs/WebAssembly">WebAssembly</a>-связанного функционала.</p> + +<p>В отличие от большинства других глобальных объектов, <code>WebAssembly</code> не является конструктором (это не объект функции). Можно сравнить его с {{jsxref("Math")}}, который так же является пространством имен констант и функций, или {{jsxref("Intl")}}, который является пространством имен для конструкторов интернационализации и других языково-чувствительных функций.</p> + +<h2 id="Описание">Описание</h2> + +<p>Основное использование <code>WebAssembly</code> следующее:</p> + +<ul> + <li>Загрузка кода WebAssembly, с помощью функции {{jsxref("WebAssembly.instantiate()")}}.</li> + <li>Создание новой памяти и таблицы экземпляров с помощью конструкторов {{jsxref("WebAssembly.Memory()")}}/{{jsxref("WebAssembly.Table()")}}.</li> + <li>Обеспечение возможности управлять ошибками, которые появляются в WebAssembly с помощью конструкторов {{jsxref("WebAssembly.CompileError()")}}/{{jsxref("WebAssembly.LinkError()")}}/{{jsxref("WebAssembly.RuntimeError()")}}.</li> +</ul> + +<h2 id="Методы">Методы</h2> + +<dl> + <dt>{{jsxref("WebAssembly.instantiate()")}}</dt> + <dd>Основное API для компиляции и создания экземпляра кода WebAssembly, возвращающее <code>Module</code> и его первый <code>Instance</code>.</dd> + <dt>{{jsxref("WebAssembly.compile()")}}</dt> + <dd>Компилирует {{jsxref("WebAssembly.Module")}} из бинарного кода WebAssembly, оставляя создание экземпляра отдельным шагом.</dd> + <dt>{{jsxref("WebAssembly.validate()")}}</dt> + <dd>Проверяет представленный типизированный массив бинарного кода WebAssembly, возвращая в зависимости от того были ли байты кода WebAssembly валидны (<code>true</code>) или (<code>false</code>).</dd> +</dl> + +<h2 id="Конструкторы">Конструкторы</h2> + +<dl> + <dt>{{jsxref("WebAssembly.Module()")}}</dt> + <dd>Создает новый объект WebAssembly <code>Module</code>.</dd> + <dt>{{jsxref("WebAssembly.Instance()")}}</dt> + <dd>Создает новый объект WebAssembly <code>Instance</code>.</dd> + <dt>{{jsxref("WebAssembly.Memory()")}}</dt> + <dd>Создает новый объект WebAssembly <code>Memory</code>.</dd> + <dt>{{jsxref("WebAssembly.Table()")}}</dt> + <dd>Создает новый объект WebAssembly <code>Table</code>.</dd> + <dt>{{jsxref("WebAssembly.CompileError()")}}</dt> + <dd>Создает новый объект WebAssembly <code>CompileError</code>.</dd> + <dt>{{jsxref("WebAssembly.LinkError()")}}</dt> + <dd>Создает новый объект WebAssembly <code>LinkError</code>.</dd> + <dt>{{jsxref("WebAssembly.RuntimeError()")}}</dt> + <dd>Создает новый объект WebAssembly <code>RuntimeError</code>.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p>После загрузки некоторого байт-кода WebAssembly с помощью fetch, мы компилируем и создаем экземпляр модуля с помощью функции {{jsxref("WebAssembly.instantiate()")}}, импортируя функции JavaScript в WebAssembly Module в процессе. Этот промис результирует в объект (<code>result</code>), содержащий скомпилированные <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module">Module</a></code> и объекты <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Instance">Instance</a></code>. Мы можем вызвать <a href="/en-US/docs/WebAssembly/Exported_functions">Exported WebAssembly function</a>, которая была экспортирована через <code>Instance</code>.</p> + +<pre class="brush: js">var importObject = { + imports: { + imported_func: function(arg) { + console.log(arg); + } + } +}; + +fetch('simple.wasm').then(response => + response.arrayBuffer() +).then(bytes => + WebAssembly.instantiate(bytes, importObject) +).then(result => + result.instance.exports.exported_func() +);</pre> + +<div class="note"> +<p><strong>Note</strong>: Смотрите пример <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/index.html">index.html</a> на GitHub (<a href="https://mdn.github.io/webassembly-examples/js-api-examples/">view it live also</a>), который использует наши <code><a href="https://github.com/mdn/webassembly-examples/blob/master/wasm-utils.js#L1">fetchAndInstantiate()</a></code> библиотечные функции.</p> +</div> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Коммент</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('WebAssembly JS', '#the-webassembly-object', 'WebAssembly')}}</td> + <td>{{Spec2('WebAssembly JS')}}</td> + <td>Первоначальное определение проекта.</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Поддержка браузерами</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Basic support</td> + <td>57</td> + <td>15<sup>[2]</sup></td> + <td>{{CompatGeckoDesktop(52)}}<sup>[1]</sup></td> + <td>{{CompatNo}}</td> + <td>44</td> + <td>11</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome for Android</th> + <th>Android Webview</th> + <th>Edge Mobile</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>57</td> + <td>57</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile(52)}}<sup>[1]</sup></td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>11</td> + </tr> + </tbody> +</table> +</div> + +<p>[1] WebAssembly включен в Firefox 52+, хотя не валиден в <a href="https://www.mozilla.org/en-US/firefox/organizations/">Firefox 52 Extended Support Release</a> (ESR.)</p> + +<p>[2] В настоящее время поддерживается флаг «Экспериментальные функции JavaScript». Для более подробной информации смотрите <a href="https://blogs.windows.com/msedgedev/2017/04/20/improved-javascript-performance-webassembly-shared-memory/">этот blog post</a>.</p> + +<h2 id="Смотри_также">Смотри также</h2> + +<ul> + <li><a href="/en-US/docs/WebAssembly">WebAssembly</a> обзорная страница</li> + <li><a href="/en-US/docs/WebAssembly/Concepts">WebAssembly концепции</a></li> + <li><a href="/en-US/docs/WebAssembly/Using_the_JavaScript_API">Использование WebAssembly JavaScript API</a></li> +</ul> diff --git a/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html new file mode 100644 index 0000000000..c453aeaf46 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/webassembly/table/index.html @@ -0,0 +1,104 @@ +--- +title: WebAssembly.Table +slug: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +translation_of: Web/JavaScript/Reference/Global_Objects/WebAssembly/Table +--- +<div>{{JSRef}}</div> + +<p>Объект <code><strong>WebAssembly.Table()</strong></code> - это JavaScript обертка — структура похожая на массив, представляюшая таблицу функций WebAssembly. Таблица, созданная через JavaScript или в коде WebAssembly, будет доступна и может быть изменена как из JavaScript, так и из WebAssembly.</p> + +<div class="note"> +<p><strong>Обратите внимание</strong>: Таблицы сейчас хранят только ссылки на функции, но это может быть расширено в будущем.</p> +</div> + +<h2 id="Конструктор">Конструктор</h2> + +<dl> + <dt><code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/Table">WebAssembly.Table()</a></code></dt> + <dd>Создает новый объект <code>Table</code>.</dd> +</dl> + +<h2 id="Экземпляры_Table">Экземпляры <code>Table</code></h2> + +<p>Все экземпляры <code>Table</code> наследуются от <a href="/ru-RU/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Table/prototype">прототипа конструктора</a> <code>Table()</code>, следовательно изменения прототипа затронут все экземпляры <code>Table</code>.</p> + +<h3 id="Свойства_экземпляра">Свойства экземпляра</h3> + +<dl> + <dt><code>Table.prototype.constructor</code></dt> + <dd>Возвращает функцию которая создала этот объект. По умолчанию это конструктор {{jsxref("WebAssembly.Table()")}}.</dd> + <dt>{{jsxref("WebAssembly/Table/length","Table.prototype.length")}}</dt> + <dd>Возвращает длину таблицы (количество елементов в таблице).</dd> +</dl> + +<h3 id="Instance_methods">Instance methods</h3> + +<dl> + <dt>{{jsxref("WebAssembly/Table/get","Table.prototype.get(index)")}}</dt> + <dd>Возвращает указанное значение из таблицы.</dd> + <dt>{{jsxref("WebAssembly/Table/grow","Table.prototype.grow(count)")}}</dt> + <dd>Увеличивает размер таблицы на указанное количество элементов.</dd> + <dt>{{jsxref("WebAssembly/Table/set","Table.prototype.set(index, value)")}}</dt> + <dd>Сохраняет указанное значение в таблицу под указанным индексом.</dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p>Следующий пример (смотри <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.html">исходный код</a> и <a href="https://mdn.github.io/webassembly-examples/js-api-examples/table2.html">живую версию</a> table2.html) создает новый экземпляр WebAssembly Table с 2 элементами. После этого выводит длину таблицы и содержимое первых двух елементов (полученных через {{jsxref("WebAssembly/Table/get", "Table.prototype.get()")}} чтобы показать что длина равняется 2 и елементы равны {{jsxref("null")}}.</p> + +<pre class="brush: js">var tbl = new WebAssembly.Table({initial:2, element:"anyfunc"}); +console.log(tbl.length); // "2" +console.log(tbl.get(0)); // "null" +console.log(tbl.get(1)); // "null"</pre> + +<p>После этого мы создаем обьект импорта содержащий таблицу:</p> + +<pre class="brush: js">var importObj = { + js: { + tbl: tbl + } +};</pre> + +<p>После этого, мы создаем экземпляр модуля wasm (table2.wasm) используя метод {{jsxref("WebAssembly.instantiateStreaming()")}}. Модуль table2.wasm содержит две функции, одна возвращает 42, а вторая - 83) и сохраняет эти функции под индексами 0 и 1 в импортированную таблицу (смотри <a href="https://github.com/mdn/webassembly-examples/blob/master/js-api-examples/table2.wat">текстовую версию</a>). Таким образом, после создания wasm-модуля, таблица имеет туже длину, но елементы таблицы стали <a href="/ru-RU/docs/WebAssembly/Exported_functions">функциями экспортированными из WebAssembly</a> которые можно вызывать из JS.</p> + +<pre class="brush: js">WebAssembly.instantiateStreaming(fetch('table2.wasm'), importObject) +.then(function(obj) { + console.log(tbl.length); + console.log(tbl.get(0)()); + console.log(tbl.get(1)()); +});</pre> + +<p>Заметьте что понадобилось добавить второй оператор вызова функции чтобы вызвать функцию возвращенную из талицы (т.е. <code>get(0)()</code> вместо <code>get(0)</code>) .</p> + +<p>Этот пример показывает что мы создаем и работаем с таблицей из JavaScript, но экземпляр таблицы также виден и доступен внутри модуля wasm.</p> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Specification</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('WebAssembly JS', '#tables', 'Table')}}</td> + </tr> + </tbody> +</table> + +<h2 id="Browser_compatibility" name="Browser_compatibility">Совместимость с браузерами</h2> + +<div> + + +<p>{{Compat("javascript.builtins.WebAssembly.Table")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>Обзор <a href="/ru-RU/docs/WebAssembly">WebAssembly</a></li> + <li><a href="/ru-RU/docs/WebAssembly/Concepts">Концепция WebAssembly</a></li> + <li><a href="/ru-RU/docs/WebAssembly/Using_the_JavaScript_API">Использование JavaScript API WebAssembly</a></li> +</ul> |