toString()
返回“[object type]”,以便toString.call(new Date)
返回[object Date]
,toString.call(new String)
返回[object String]
。我很好奇“[对象类型]”的本质是什么:它不可能是一个数组,因为使用[]意味着;如果它是一个对象,不会{type: object}
是一个更具信息性的语法?如果它是一个字符串,为什么不只是返回例如“type”,其中type是对象的类型,如Date
和String
?什么是“[对象类型]”
回答
这正是JavaScript语言规范说toString
方法应该做
- 如果这个值是不确定的,回报“[对象未定义]”。如果 该值为空,则返回“[object Null]”。
- 令O是调用ToObject传递这个值作为 论证的结果。
- 设类是[[类]]内部O.
- 返回字符串值,该值是串接 三个字符串的结果的属性的值“[对象”,类,和“]”。
作为oriol尖的EcmaScript 2015(也称为ES6)方面的toString
方法有点复杂。它发现它处理的对象类型的方式有点冗长。你可以看到新的规格here Source
注意ES6已被删除[[Class]],现在[稍微复杂一点](http://www.ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)。 – Oriol
'常量letsBreakJQuery = {[Symbol.toStringTag]:“阵”};' - 让打破一些库:)更新了答案 –
@Oriol包括一个链接到新的规范,它处理成'ToString'呼叫的方式 – eltonkamami
- 1. 什么是动态类型的对象
- 2. 这是什么类型的对象?
- 3. 这是什么类型的对象?
- 4. 什么是类型的子对象?
- 5. 什么是对象的类型由scrapy
- 6. C# - 什么对象类型是FormData
- 7. python xmlrpc对象是什么类型?
- 8. 什么是解析“对象”列类型?
- 9. 什么是抽象类型?
- 10. 什么类型的对象/属性是原型getter和setter?
- 11. .Net中的dr [“MyColumn”]对象的类名称/类型是什么?
- 12. 什么是类的本身是对象?
- 13. 什么类型给一个JSON对象
- 14. 为什么继承对象类型
- 15. Spinner.getItemAtPosition(...)返回什么类型的对象?
- 16. ObjectForID返回什么类型的对象
- 17. 什么是抽象数据类型(ADT)?
- 18. Ruby的对象模型是什么?
- 19. 什么是Python'模型对象'?
- 20. 对象类型和字典类型的映射对象有什么区别
- 21. 什么是?类型?
- 22. 类对象的HashSet。什么是散列?
- 23. 这是什么? Mootools类或对象?
- 24. 什么是MySQL对象的类?
- 25. 为什么对象类不是空值
- 26. LLDB:对象的类是什么?
- 27. 空对象类型和对象有什么区别?
- 28. 为什么是引用类型可以用Java从对象类型不同
- 29. TypeScript中的jQuery对象的类型是什么?
- 30. 插入OLE对象的正确类型是什么?
这种行为没有什么特别的原因,除了它原来的实现。它就是这样工作的,因为大量的软件依赖于它,所以它不能改变。 – Pointy
如上所述,'toString'返回一个包含左括号,构造函数,类型和右括号的字符串。括号没有特殊含义,它们不是数组,它只是[**规范**](http://www.ecma-international.org/ecma-262/5.1/#sec-15.2。 4.2)表示应该退回。 – adeneo
注意你所说的“类型”不是[类型](http://www.ecma-international.org/ecma-262/6.0/#sec-type)。在ES5中,它是内部的[[Class]],在ES6中更复杂一些。 – Oriol