Object.prototype.toSource()

Non-standard
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.

Метод 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('Джо').toSource()); // ---> new Person("Джо")

Вбудовані методи 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
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
toSource
DeprecatedNon-standard
Chrome No support NoEdge No support NoFirefox Full support 1IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 4Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No

Legend

Full support  
Full support
No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.

Див. також