是“输出”;[对象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)中返回。