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/object/tosource | |
| 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/object/tosource')
| -rw-r--r-- | files/ru/web/javascript/reference/global_objects/object/tosource/index.html | 138 |
1 files changed, 138 insertions, 0 deletions
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> |
