Quels sont les constructeurs d'objets valides suivants?Constructeurs d'objet valides
1) var m = function(){}
2) m = function(){}
3) m.prototype.constructor = function(){}
Quels sont les constructeurs d'objets valides suivants?Constructeurs d'objet valides
1) var m = function(){}
2) m = function(){}
3) m.prototype.constructor = function(){}
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;
Vous avez oublié var m = {};
Ceci est appelé un objet littéral.
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();
Qu'essayez-vous d'atteindre? – Oded
si 'firebug' ou aucune' web consoles 'n'affiche aucune erreur, alors tout cela est valide .. l'avez-vous essayé? – Reigel