null
и undefined
не имеют метода toString
или valueOf
. Afaik с помощью String
вызывает метод toString
своего параметра (например, String({})
= > [object Object]
).
Почему работают String(null)
или String(undefined
? Это не подразумевает Object.prototype.toString.call(null)
. потому что это оценивается как [object Null]
.
[edit]: из спецификации ECMA-262/5th edition (стр. 48). Это не добавляет разъяснений, я бы сказал:
/*
Table 13 — ToString Conversions
-------------------------------------------------------------------------
Argument Type | Result
-------------------------------------------------------------------------
Undefined | "undefined"
Null | "null"
Boolean | If the argument is true, then the result is "true".
... | ...
*/