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('Joe').toSource()); // ---> new Person("Joe")

Вбудованні toSource() методи

Кожен основний JavaScript тип має свій власний метод toSource():

Обмеження для зациклених об'єктів

В випадках, коли об'єкт містить посилання на самого себе (зациклений список чи дерево, котре можна пройти обома шляхами), toSource() не відтворюватиме посилання на самого себе (починаючи з Firefox 24). Наприклад:

var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;

console.log('Cyclical: ' + (obj1.b.a == obj1));

var objSource = obj1.toSource(); // returns "({b:{a:{}}})"

obj1 = eval(objSource);

console.log('Cyclical: ' + (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('Gabby', 'Lab', 'chocolate', 'female');

Якщо ти викличеш toSource() для об'єкту theDog, то цей метод поверне JavaScript код, що визначає об'єкт:

theDog.toSource();
// повертає ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})

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

Не є частиною ніяких стандартів. Представлений в 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.

Дивитися також