2015-12-09 2 views
1

Существует техническая проблема, которую я хотел выяснить с помощью Object.prototype.toString.call. В javascript, когда вы вызываете функцию "call", первым параметром является ссылка на "this" или объект, над которым вы работаете. Поэтому я ожидал, что Object.prototype.toString.call("aaa") даст «aaa», так же, как вы звоните "aaa".toString().javascript - результат Object.prototype.toString.call со строкой

Вместо этого, он дает

"[объект String]".

Почему это?

+3

Поскольку 'Object.prototype.toString' не то же самое, как' String.prototype.toString' – zerkms

+0

В основном вы делаете ToString прототипа из переданный объект, а не toString самого объекта. Это метод определения того, какой тип объекта является переменной, а не просто получение строкового представления переменной. –

ответ

0

Поведение Object.prototype.toString подробно объяснено в the standard.

Заметные шаги

3) Пусть О ToObject (это значение).
7) Иначе, если O - экзотический объект String, пусть builtinTag будет «String».
19) Верните строку, которая является результатом объединения «[object», tag и «]».

Так как вы можете видеть, строка символов (которая является примитивным типом и не является объектом) сначала преобразуется в строковый объект, затем помечены как String, а затем выход [object String] возвращается.

Ссылки:

Смежные вопросы