We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Не стандартно
Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.

Сводка

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

Синтаксис

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

Параметры

Нет.

Описание

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

  • Для встроенного объекта Object, метод toSource() возвращает следующую строку, указывающую, что исходный код не доступен:
    function Object() {
        [native code]
    }
    
  • Для экземпляров Object, метод 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.

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка ? (Да) ? ? ?
Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка ? ? (Да) ? ? ?

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

Метки документа и участники

Внесли вклад в эту страницу: Mingun
Обновлялась последний раз: Mingun,