这篇翻译不完整。请帮忙从英语翻译这篇文章

非标准
该特性是非标准的,请尽量不要在生产环境中使用它!

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) + ")";
};

alert(new Person("Joe").toSource()); // ---> new Person("Joe")

内置的toSource方法

每个JavaScript核心类型都有它自己的toSource()方法.这些对象是:

循环引用限制

对于包含对自身的引用的对象 (例如, 循环链表或可以遍历两种方式的树), toSource()不会重新创建自引用, 如火狐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对象类型还创建了一个Dog类型的对象实例theDog

function Dog(name, breed, color, sex) {
   this.name = name;
   this.breed = breed;
   this.color = color;
   this.sex = sex;
}

theDog = new Dog("Gabby", "Lab", "chocolate", "girl");

theDog上调用toSource方法会显示出能定义该对象的源码:

theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})

特性

不属于任何标准的一部分。在JavaScript1.3中实现。

浏览器兼容

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic support
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 NoEdge Mobile 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.

相关链接

文档标签和贡献者

此页面的贡献者: qiu_han, zhangchen, xgqfrms-GitHub, keller0, teoli, ziyunfei
最后编辑者: qiu_han,