Object.prototype.valueOf.call("abc")
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
Object.prototype.valueOf.call(new String("abc"))
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
根据 MDN JavaScript 调用 valueOf 方法将对象转换为原始值。如果对象没有原始值,则 valueOf 返回对象本身,显示为:
[object Object]
但上面的 valueOf 以不同的格式返回,而不是返回原语
{ '0': 'a'
, '1': 'b'
, '2': 'c'
}
。它不违反定义吗?为什么它以那种格式返回。现在,这造成了混乱。如何知道如果对数组和其他调用 Object.prototype.valueOf.call(array) 会返回什么对象。
还有为什么{}.valueOf()
会显示返回对象表单,因为在记录时从 [].valueOf()
方法返回什么都不显示