是输出" [对象X]"在JavaScript中保证?

时间:2014-06-05 06:09:53

标签: javascript standards

当您在某个对象上调用Object.prototype.toString.apply(object)时,您会在[object X]表单中找到某个类型名称X的字符串(例如ArrayFunctionNullBooleanNumber等等。

任何ECMAScript标准都能保证这种行为吗?我知道没有说明主机对象的结果是什么,但是ECMA标准中的常规对象呢?

1 个答案:

答案 0 :(得分:3)

根据ECMA 5.1 Specifications

  

调用toString方法时,将执行以下步骤:

     
      
  1. 如果this值为undefined,请返回"[object Undefined]"
  2.   
  3. 如果this值为null,请返回"[object Null]"
  4.   
  5. O成为调用ToObject传递this值作为参数的结果。
  6.   
  7. class[[Class]]的{​​{1}}内部属性的值。
  8.   
  9. 返回串联三个字符串O的结果的字符串值。
  10.   

同样[[Class]]定义为,

  

一个String值,表示规范定义的对象分类。

     

"[object ", class, and "]"内部属性的值由此规范为每种内置对象定义。主机对象的[[Class]]内部属性的值可以是除[[Class]]"Arguments", "Array", "Boolean", "Date", "Error", "Function", "JSON", "Math", "Number", "Object", "RegExp"之外的任何字符串值。内部使用"String"内部属性的值来区分不同类型的对象。请注意,除了[[Class]]之外,本规范没有为程序提供访问该值的任何方法(见15.2.4.2)。