MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Object.prototype.toSource()

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

Сводка

Метод 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.

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

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

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

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

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