From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/object/tosource/index.html | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/object/tosource/index.html (limited to 'files/ru/web/javascript/reference/global_objects/object/tosource/index.html') 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 +--- +
{{JSRef("Global_Objects", "Object")}} {{non-standard_header}}
+ +

Метод toSource() возвращает строку, представляющую исходный код объекта.

+ +

Синтаксис

+ +
Object.toSource();
+obj.toSource();
+ +

Параметры

+ +

Нет.

+ +

Описание

+ +

Метод toSource() возвращает следующие значения:

+ + + +

Вы можете вызывать метод toSource() во время отладки для просмотра содержимого объекта.

+ +

Переопределение метода toSource()

+ +

Вы можете безопасно переопределять метод toSource() для объектов. Например:

+ +
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")
+
+ +

Встроенные методы toSource()

+ +

Каждый тип ядра JavaScript имеет свой собственный метод toSource(). Вот эти объекты:

+ + + +

Ограничение на циклические объекты

+ +

В том случае, если объекты содержат ссылки на самих себя, например циклический связанный список или дерево, которое можно обходить в обоих направлениях, метод toSource() не создаёт такие ссылки, начиная с Firefox 24. Например:

+ +
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));
+
+ +

Если же вам позарез нужно использовать метод toSource() для циклической структуры, объект должен предоставить переопределённый метод toSource(), либо с помощью ссылки на конструктор, либо предоставив анонимную функцию.

+ +

Примеры

+ +

Пример: использование метода toSource()

+ +

Следующий код определяет тип объекта Dog и создаёт объект theDog типа Dog:

+ +
function Dog(name, breed, color, sex) {
+  this.name = name;
+  this.breed = breed;
+  this.color = color;
+  this.sex = sex;
+}
+
+theDog = new Dog('Болтушка', 'лабрадор', 'шоколадный', 'девочка');
+
+ +

Вызов метода toSource() на объекте theDog отобразит исходный код JavaScript, который определяет объект:

+ +
theDog.toSource();
+// вернёт ({name:"Болтушка", breed:"лабрадор", color:"шоколадный", sex:"девочка"})
+
+ +

Спецификации

+ +

Не является частью какого-либо стандарта. Реализована в JavaScript 1.3.

+ +

Совместимость с браузерами

+ +

 

+ + + +

{{Compat("javascript.builtins.Object.toSource")}}

+ +

 

+ +
 
+ +
 
+ +

Смотрите также

+ + -- cgit v1.2.3-54-g00ecf