¿Por qué `Object.prototype.toString` siempre devuelve` [object *] `?
Si llamasObject.prototype.toString.call(anything)
el resultado es siempre[object Something]
, dóndeSomething
Podría ser una de varias cosas. Mi pregunta es ¿por qué la parte "objeto" está ahí? Parece superfluo tenerlo siempre allí. No le dice nada sobre el argumento que se transmitió.
Object.prototype.toString.call(null);
=> [object Null]
Object.prototype.toString.call(undefined);
=> [object Undefined]
Ya quenull
yundefined
no son objetos (y fallaCheckObjectCoercible
), la parte del "objeto" realmente, realmente parece sin sentido.
Tengo que pensar que originalmente había alguna razón por la cual la parte del "objeto" se colocó allí, incluso si la razón se había perdido desde entonces, y ahora se conserva por razones históricas.
¿Alguien puede ayudar a arrojar algo de luz sobre esto?
Para ser claros, ya sé cómo.Object.prototype.toString
se puede utilizar para obtener el[[Class]]
(tipo) de un objeto. Mi pregunta se refiere a la razón del formato de la cadena devuelta, específicamente la parte "objeto" al principio. Quiero saber si alguna vez hubo una razón para esta parte o si hay una posible razón futura para esta parte. Tal vez en el futuro podría devolver algo más que "objeto"? ¿Puedo esperar que siempre devuelva "objeto"? Si es así, ¿por qué lo devuelve? ¿Quién quiere que una función devuelva siempre lo mismo sin importar cuál sea la entrada?