diff options
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects/object/tostring/index.html')
-rw-r--r-- | files/ru/web/javascript/reference/global_objects/object/tostring/index.html | 139 |
1 files changed, 139 insertions, 0 deletions
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> |