2010-12-06 15 views
6

Duplicar posibles:
Null object in javascript¿Es nulo un objeto?

nulo es un derecho objeto? Entonces, si configuro x en nulo, ¿por qué no puedo obtener el valor del constructor?

var x = null; 
alert(typeof x); 
alert(x.constructor); 
+1

también un posible duplicado de Is null an object in JavaScript? stillstanding

+0

@birryree, no es un duplicado de ese tema. Esa es la diferencia entre 'null' y' undefined', mientras que se trata de la pregunta si 'null' en sí es un objeto. – Harmen

Respuesta

0

Null no es un objeto en Javascript - nula es la instancia singular del tipo primitivo null, y como tal tiene ningún constructor.

+0

Así que nada ES algo =) – StingyJack

+0

Sí, pero solo hay uno, y nada puede ser nada, nada más puede ser nada, y si haces algo, ya no es nada. –

11

null en JS es un valor primitivo. No fue construido por ninguna función constructora, por lo que no tiene una propiedad constructor. typeof null siendo 'object' es básicamente una mentira horrible retenida por razones históricas. No esperes mucha consistencia de JS, ¡te decepcionará!

Los valores primitivos pueden a menudo se comportan como objetos en JS debido a autoboxing: (1).constructor obras a pesar 1 siendo también un valor primitivo, porque llama implícitamente new Number(1). Pero no existe el formulario Object de null (o undefined) para convertir automáticamente a, por lo que en este caso se obtiene un error.

En general, debe evitar el uso de constructor. Para muchos modelos de clase/instancia construidos sobre JS, no hace lo que piensas en absoluto. instanceof por lo general funciona mejor.

Cuestiones relacionadas