toString()
возвращает "[тип объекта]", так что toString.call(new Date)
возвращает [object Date]
и toString.call(new String)
возвращается [object String]
. Мне любопытно, какой будет характер «[тип объекта]»: он не может быть массивом, как подразумевает использование []; если это объект, не будет ли более информативным синтаксисом {type: object}
? Если это строка, почему бы просто не вернуться, например, «тип», где тип - это тип объекта, такой как Date
и String
?Что такое "[тип объекта]"
ответ
Это именно то, что Javascript спецификации языка говорит метод toString
должен сделать
- Если это значение не определено, возвращение «[объект Неопределенный]». Если значение равно null, верните «[объект Null]».
- Пусть O является результатом вызова ToObject, передающего это значение как аргумент.
- Пусть класс будет значение [[Class]] внутреннее свойство О.
- возвращают значение Строка, которая является результатом конкатенации три струны «[» объект, класс, и «]».
В oriol заостренным ECMAscript 2015 (также известный как ES6) сделал метод toString
немного более сложной. То, как он узнает, какой тип объекта он имеет дело, немного более подробен. Вы можете увидеть новую спецификацию here Source
Примечание. ES6 удален [[Класс]], теперь это [немного сложнее] (http://www.ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring). – Oriol
'const letsBreakJQuery = {[Symbol.toStringTag]: 'Array'};' - позволяет сломать некоторые библиотеки :) –
@Oriol обновил ответ, чтобы включить ссылку на новую спецификацию и способ обращения к вызову 'ToString' – eltonkamami
- 1. Что такое тип свойства объекта javascript?
- 2. Что такое имя объекта и тип объекта в Apache Kafka?
- 3. Что такое тип буфера Python?
- 4. Что такое тип тегов?
- 5. Что такое тип?
- 6. Что такое тип данных?
- 7. Что такое MIME-тип
- 8. Что такое тип сокета?
- 9. Что такое универсальный тип?
- 10. Что такое тип возврата «()»?
- 11. Что такое тип SOCKET?
- 12. Что такое sint32 тип
- 13. Что такое динамический тип
- 14. Что такое? тип?
- 15. Что такое тип?
- 16. Что такое тип Vec3b?
- 17. Что такое тип записи?
- 18. Что такое стереофонический тип
- 19. Что такое «тип»?
- 20. Что такое абстрактный тип?
- 21. Что такое тип орда?
- 22. Шаблоны проектирования: что такое тип
- 23. Что такое затмение объекта?
- 24. Что такое [окно объекта]?
- 25. Что такое создание объекта?
- 26. Что такое конструктор объекта?
- 27. Как узнать, что такое «тип» объекта в Python?
- 28. Что такое тип объекта успеха функции файла Cordova?
- 29. Что такое тип поля Solr для хранения объекта JSON?
- 30. Что такое имя класса/тип объекта dr ["MyColumn"] в .Net?
Нет никаких особых причин для такого поведения, кроме того, что это сделала первоначальная реализация. Он просто работает именно так, и его нельзя изменить, потому что на него опирается огромное количество программного обеспечения. – 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