2010-12-06 5 views
6

Possible en double:
Null object in javascriptNull est-il un objet?

nul est un droit d'objet? Donc, si je mets x à null, pourquoi ne puis-je pas obtenir la valeur du constructeur?

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

également une copie possible de Is null an object in JavaScript? stillstanding

+0

@birryree, ce n'est pas une copie de ce sujet. Celui-là est à propos de la différence entre 'null' et' undefined', alors qu'il s'agit de la question si 'null' lui-même est un objet. – Harmen

Répondre

0

Null est pas un objet en Javascript - null est le cas singulier du null type primitif, et en tant que telle n'a pas de constructeur.

+0

Donc rien n'est quelque chose =) – StingyJack

+0

Oui, mais il n'y en a qu'un, et rien ne peut être rien - rien d'autre ne peut être rien, et si vous faites quelque chose, ce n'est plus rien. –

11

null dans JS est une valeur primitive. Il n'a été construit par aucune fonction constructeur, donc il n'a pas de propriété constructor. typeof null étant 'object' est fondamentalement un mensonge horrible retenu pour des raisons historiques. Ne vous attendez pas trop à la cohérence de JS, vous serez déçu!

Les valeurs primitives peuvent souvent se comporter comme des objets en raison de JS autoboxing: (1).constructor travaux en dépit 1 étant également une valeur primitive, car elle appelle implicitement new Number(1). Mais il n'y a aucune forme d'objet de null (ou undefined) pour convertir automatiquement en, dans ce cas, vous obtenez une erreur.

En général, vous devez éviter d'utiliser constructor. Pour de nombreux modèles de classe/instance construits au-dessus de JS, il ne fait pas ce que vous pensez du tout. instanceof fonctionne généralement mieux.

Questions connexes