当您在某个对象上调用Object.prototype.toString.apply(object)
时,您会在[object X]
表单中找到某个类型名称X
的字符串(例如Array
,Function
,Null
,Boolean
,Number
等等。
任何ECMAScript标准都能保证这种行为吗?我知道没有说明主机对象的结果是什么,但是ECMA标准中的常规对象呢?
答案 0 :(得分:3)
调用
toString
方法时,将执行以下步骤:
- 如果
this
值为undefined
,请返回"[object Undefined]"
。- 如果
this
值为null
,请返回"[object Null]"
。- 让
O
成为调用ToObject
传递this
值作为参数的结果。- 让
class
为[[Class]]
的{{1}}内部属性的值。- 返回串联三个字符串
醇>O
的结果的字符串值。
同样[[Class]]
定义为,
一个String值,表示规范定义的对象分类。
"[object ", class, and "]"
内部属性的值由此规范为每种内置对象定义。主机对象的[[Class]]
内部属性的值可以是除[[Class]]
和"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp"
之外的任何字符串值。内部使用"String"
内部属性的值来区分不同类型的对象。请注意,除了[[Class]]
之外,本规范没有为程序提供访问该值的任何方法(见15.2.4.2)。