是“输出”;[对象X]”;用JavaScript保证?

是“输出”;[对象X]”;用JavaScript保证?,javascript,standards,Javascript,Standards,当您在某个对象上调用Object.prototype.toString.apply(Object)时,对于某个类型名X(例如Array,Function,Null,Boolean,Number,等等),您会得到一个格式的字符串 任何ECMAScript标准都能保证这种行为吗?我知道主机对象的结果是不确定的,但是ECMA标准中的常规对象呢 调用toString方法时,将执行以下步骤: 如果此值为未定义,则返回“[对象未定义]” 如果此值为空,则返回“[对象空]” 将O作为调用ToObject的结果

当您在某个对象上调用
Object.prototype.toString.apply(Object)
时,对于某个类型名
X
(例如
Array
Function
Null
Boolean
Number
,等等),您会得到一个
格式的字符串

任何ECMAScript标准都能保证这种行为吗?我知道主机对象的结果是不确定的,但是ECMA标准中的常规对象呢

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

  • 如果
    值为
    未定义
    ,则返回
    “[对象未定义]”
  • 如果
    值为
    ,则返回
    “[对象空]”
  • O
    作为调用
    ToObject
    的结果,并将
    值作为参数传递
  • class
    成为
    [[class]]
    内部属性
    O
    的值
  • 返回串接三个字符串的结果字符串值
    “[object”、class和“]”
  • 也被定义为

    一个字符串值,指示由规范定义的对象分类

    [[Class]]
    内部属性的值由本规范为每种内置对象定义。主机对象的
    [[Class]]
    内部属性的值可以是除
    “参数”、“数组”、“布尔”、“日期”、“错误”、“函数”、“JSON”、“数学”、“数字”、“对象”、“RegExp”
    “字符串”
    之外的任何字符串值。
    [[Class]]
    内部属性的值在内部用于区分不同类型的对象。请注意,除了通过
    Object.prototype.toString
    (参见15.2.4.2)之外,本规范不提供程序访问该值的任何方法


    您试图实现什么?进一步说,主机对象必须实现
    [[Class]]
    内部属性,但该值取决于实现。因此,
    Object.prototype.toString.call(DOMDivElement)
    可以在一个浏览器(Safari)中返回,比如在另一个浏览器(IE 9)中返回。