方案
当我写下以下代码(demo here)时,我正在玩一些Javascript对象编程:
var o = {
"key":1,
"value": 1234,
toString: function(){
var res = this.key + ";" + this.value;
return res;
}
};
var p = {
"key":2,
"value": 5678
};
document.write(o);
document.write("</br>");
document.write(p);
正如您所看到的,使用toString()方法可以显示o object
而不调用toString()方法,而p object
显示为......是什么?
问题
toString
文字是对象表示的一种默认名称吗?或者还有什么?
[object Object]
符号的含义是什么?
答案 0 :(得分:2)
toString文字是对象表示的一种默认名称吗?还有什么?
它是对象的toString
属性的函数。
在Javascript中,当一个对象被转换为字符串(EcmaScript §9.8: ToString时,例如在字符串连接中使用时,或alert()
或document.write()
)时,它是toString
方法被称为(通过ToPrimitive和DefaultValue - §8.12.8)。
通常,您在自定义对象的原型上指定它,并且所有内置类型都有一个(例如Array.prototype.toString
,它将值与逗号连接)。您已在对象文字中明确设置它。
[object Object]符号是什么意思?
这是对象的默认toString
实现的结果,即。适用于Object
的所有实例。 EcmaScript §15.2.4.2指定Object.prototype.toString
返回[object
+ 类 + ]
,普通对象的内部[[class]]为“Object”。
答案 1 :(得分:1)
toString不是文字,它是一个函数,是为所有对象定义的。记住函数在javascript中是“第一类”。
[object Object]
是对象的浏览器默认toString()的返回值。
这是Mozilla的优秀文档:
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/toString
答案 2 :(得分:0)
当一个对象被发送到write时,write会在内部调用该对象的toString方法,该方法可能(如o)或者可能不会(如p)被覆盖。
在toString的默认实现中,第一个object
定义它是一个对象(与数组或原语相反),第二个Object
定义它是一个对象类型对象。某些没有有意义的字符串表示的内置对象类型(例如DOM节点)返回其类型名称而不是Object。如果希望自己的对象在传递给write时输出其类型名称,则必须覆盖toString。
答案 3 :(得分:0)
JavaScript中的每个对象都有一个toString()
方法,当在字符串上下文中使用对象时会隐式调用该方法,例如document.write(o)
,但是当你编写o + ' another string'
时。 / p>
该方法默认返回'[object Object]'
,这不是很有用,但可以覆盖它以返回您喜欢的任何内容;像Numeric
,String
或Date
这样的对象就是这样做的。
答案 4 :(得分:-1)
'[object Object]'由默认的toString
方法返回,该方法由Object
的每个对象继承。