aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/tostring/index.html
blob: 681a6c6f0697cc8e75aa9322335817e61971b940 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
---
title: Object.prototype.toString()
slug: Web/JavaScript/Reference/Global_Objects/Object/toString
tags:
  - JavaScript
  - Об'єкт
  - метод
  - прототип
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toString
---
<div>{{JSRef}}</div>

<div>Метод <code><strong>toString()</strong></code> повертає рядок, який відображає об'єкт.</div>

<div></div>

<div>{{EmbedInteractiveExample("pages/js/object-prototype-tostring.html")}}</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"><code><var>obj</var>.toString()</code></pre>

<h3 id="Повертає">Повертає</h3>

<p>Рядок, який відображає об'єкт.</p>

<h2 id="Опис">Опис</h2>

<p>Кожен об'єкт має метод <code>toString()</code>, який автоматично викликається, коли об'єкт повинен бути відображений як рядок, або коли об'єкт знаходиться у виразі, де очікується рядок. За замовчуванням, метод  <code>toString()</code> успадковується усіма об'єктами, похідними від <code>Object</code>. Якщо цей метод не був перезаписаний у користувацькому об'єкті, то <code>toString()</code> поверне "<code>[object <var>type</var>]</code>", де <code><var>type</var></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("null")}}, повертає <code>[object <em>Null</em>]</code>, для {{jsxref("undefined")}} повертає <code>[object <em>Undefined</em>]</code>, як визначенно у 5-й версії ECMAScript і згодом у Ерраті. Дивіться {{anch("Використання_toString_для_визначення_класу_обєкта", "Використання toString() для визначення класу об'єкта")}}.</p>
</div>

<h2 id="Приклади">Приклади</h2>

<h3 id="Перезапис_стандартного_методу_toString">Перезапис стандартного методу <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("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.color + ' ' + this.sex + ' ' + this.breed;
  return ret;
}
</pre>

<p>або</p>

<pre class="brush: js">Dog.prototype.toString = function dogToString() {
  return `Собака ${this.name} - ${this.color} ${this.sex} ${this.breed}`;
}
</pre>

<p>Завдяки цьому коду, як тільки <code>theDog</code> буде використаний у контексті рядка, JavaScript автоматично викличе новий метод <code>toString()</code>, який поверне наступний рядок:</p>

<pre class="brush: js">"Собака Галя - шоколадна самиця лабрадор"
</pre>

<h3 id="Використання_toString_для_визначення_класу_обєкта">Використання toString() для визначення класу об'єкта</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="Специфікації">Специфікації</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.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("null")}} повертає <code>[object <em>Null</em>]</code>, а {{jsxref("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="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<div>


<p>{{Compat("javascript.builtins.Object.toString")}}</p>
</div>

<h2 id="Дивіться_також">Дивіться також</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>