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/symbol | |
| 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/symbol')
17 files changed, 1779 insertions, 0 deletions
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> |
