aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/object/tosource/index.html
blob: 1de70827b65d58696a4d9cba6a104ce061b4c3f6 (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
---
title: Object.prototype.toSource()
slug: Web/JavaScript/Reference/Global_Objects/Object/toSource
tags:
  - JavaScript
  - Об'єкт
  - застарілий
  - метод
  - нестандартний
  - прототип
translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource
---
<div>{{JSRef}} {{obsolete_header}}</div>

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

<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox notranslate"><code>Object.toSource();
<var>obj</var>.toSource();
</code></pre>

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

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

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

<p>Метод <code>toSource()</code> повертає наступні значення:</p>

<ul>
 <li>Для вбудованого об'єкта {{jsxref("Object")}} <code>toSource()</code> повертає наступний рядок, який вказує, що першокод недоступний:

  <pre class="brush: js notranslate">function Object() {
    [native code]
}
</pre>
 </li>
 <li>Для екземплярів {{jsxref("Object")}} <code>toSource()</code> повертає рядок, який відображає першокод.</li>
</ul>

<p>Ви можете викликати <code>toSource()</code> під час налагодження для дослідження вмісту об'єкта.</p>

<h3 id="Перезапис_методу_toSource">Перезапис методу <code>toSource()</code></h3>

<p>Перезапис <code>toSource()</code> не несе ніякої шкоди об'єктам. Наприклад:</p>

<pre class="brush: js notranslate">function Person(name) {
  this.name = name;
}

Person.prototype.toSource = function Person_toSource() {
  return 'new Person(' + uneval(this.name) + ')';
};

console.log(new Person('Джо').toSource()); // ---&gt; new Person("Джо")
</pre>

<h3 id="Вбудовані_методи_toSource">Вбудовані методи <code>toSource()</code></h3>

<p>Кожен базовий тип JavaScript має свій власний метод <code>toSource()</code>. Ці об'єкти наступні:</p>

<ul>
 <li>{{jsxref("Array.prototype.toSource()")}} — об'єкт {{jsxref("Array")}}.</li>
 <li>{{jsxref("Boolean.prototype.toSource()")}} — об'єкт {{jsxref("Boolean")}}.</li>
 <li>{{jsxref("Date.prototype.toSource()")}} — об'єкт {{jsxref("Date")}}.</li>
 <li>{{jsxref("Function.prototype.toSource()")}} — об'єкт {{jsxref("Function")}}.</li>
 <li>{{jsxref("Number.prototype.toSource()")}} — об'єкт {{jsxref("Число","Number")}}.</li>
 <li>{{jsxref("RegExp.prototype.toSource()")}} — об'єкт {{jsxref("RegExp")}}.</li>
 <li>{{jsxref("String.prototype.toSource()")}} — об'єкт {{jsxref("String")}}.</li>
 <li>{{jsxref("Symbol.prototype.toSource()")}} — об'єкт {{jsxref("Symbol")}}.</li>
 <li><code>Math.toSource()</code> — Повертає рядок "Math".</li>
</ul>

<h3 id="Обмеження_для_циклічних_обєктів">Обмеження для циклічних об'єктів</h3>

<p>У випадках, коли об'єкт містить посилання на самого себе, наприклад, циклічно зв'язаний список чи дерево, котре можна пройти обома шляхами, <code>toSource()</code> не відтворюватиме посилання на самого себе, починаючи з Firefox 24. Наприклад:</p>

<pre class="brush: js notranslate">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="Приклади">Приклади</h2>

<h3 id="Використання_toSource">Використання <code>toSource()</code></h3>

<p>Наступний код визначає тип об'єкта <code>Dog</code> і створює <code>theDog</code>, об'єкт типу <code>Dog</code>:</p>

<pre class="brush: js notranslate">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 notranslate">theDog.toSource();
// повертає ({name:"Галя", breed:"лабрадор", color:"шоколадний", sex:"самиця"})
</pre>

<h2 id="Специфікація">Специфікація</h2>

<p>Не є частиною жодних стандартів.</p>

<h2 id="Сумісність_з_веб-переглядачами">Сумісність з веб-переглядачами</h2>

<div>


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

<h2 id="Див._також">Див. також</h2>

<ul>
 <li>{{jsxref("Object.prototype.toString()")}}</li>
</ul>