From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../global_objects/object/tosource/index.html | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 files/zh-cn/web/javascript/reference/global_objects/object/tosource/index.html (limited to 'files/zh-cn/web/javascript/reference/global_objects/object/tosource') diff --git a/files/zh-cn/web/javascript/reference/global_objects/object/tosource/index.html b/files/zh-cn/web/javascript/reference/global_objects/object/tosource/index.html new file mode 100644 index 0000000000..a47cd4dbc2 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/object/tosource/index.html @@ -0,0 +1,128 @@ +--- +title: Object.prototype.toSource() +slug: Web/JavaScript/Reference/Global_Objects/Object/toSource +tags: + - JavaScript + - Method + - Object + - Prototype +translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource +--- +
+
{{JSRef}} {{non-standard_header}}
+
+ +

toSource()方法返回一个表示对象源代码的字符串。

+ +

语法

+ +
Object.toSource(); obj.toSource()
+ +

返回值

+ +

一个表示对象的源代码的字符串。

+ +

描述

+ +

toSource()方法返回以下值:

+ + + +
function Object() {
+   [native code]
+}
+ + + +

在调试时,你可以通过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中实现。

+ +

浏览器兼容

+ + + +

{{Compat("javascript.builtins.Object.toSource")}}

+ +

相关链接

+ + + +

-- cgit v1.2.3-54-g00ecf