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