2010-07-28 4 views
3

Quels sont les constructeurs d'objets valides suivants?Constructeurs d'objet valides

1) var m = function(){} 
2) m = function(){} 
3) m.prototype.constructor = function(){} 
+0

Qu'essayez-vous d'atteindre? – Oded

+1

si 'firebug' ou aucune' web consoles 'n'affiche aucune erreur, alors tout cela est valide .. l'avez-vous essayé? – Reigel

Répondre

1

Ils semblent tous être des déclarations valides qui déclarent une fonction vide, et l'affecter à des variables différentes.

Chaque fonction dans Javascript est à la fois un objet lui-même (ou le prototype f ne fonctionnerait pas) et un constructeur d'objet potentiel. N'importe quelle fonction peut être appelée avec la syntaxe new Thingy (ou peut-être new m dans votre exemple). Ou il pourrait être appelé normalement - la seule chose spéciale new est définie this à un objet dérivé de f.prototype.

Une nouvelle fonction a une propriété prototype qui contient un objet nouvellement créé ({}), qui n'a pas de propriétés, à l'exception d'un constructor caché propriété montrant la fonction (il est une référence circulaire, en fait)

Il devrait être vrai que:

var m = function(){}; 
m.prototype.constructor == m; 
1

Vous avez oublié var m = {};

Ceci est appelé un objet littéral.

0

1) var m = function(){}

2) m = function(){}

sont presque identiques, sauf la première, on crée une fonction scope locale, la seconde - mondiale. Et afin de créer un objet que vous pouvez juste

var obj = new m();