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

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

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

 

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
toSource
УстаревшаяНестандартная
Chrome Нет поддержки НетEdge Нет поддержки НетFirefox Полная поддержка 1IE Нет поддержки НетOpera Нет поддержки НетSafari Нет поддержки НетWebView Android Нет поддержки НетChrome Android Нет поддержки НетFirefox Android Полная поддержка 4Opera Android Нет поддержки НетSafari iOS Нет поддержки НетSamsung Internet Android Нет поддержки Нетnodejs Нет поддержки Нет

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Нестандартная. Ожидается плохая кросс-браузерная поддержка.
Устаревшая. Не следует использовать в новых веб-сайтах
Устаревшая. Не следует использовать в новых веб-сайтах

 

 
 

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

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

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