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