function catRecord(name, birthdate, mother) {
return {name: name, birth: birthdate, mother: mother};
}
My understanding of a constructor is a function is used to build up the object.Would this catRecord function count as a constructor?
4 Réponses :
constructeur est une fonction appelée automatiquement chaque fois que nous créer une instance de classe. p>
renvoie une référence à la fonction d'objet qui a créé le prototype de l'instance. Notez que la valeur de cette propriété est une référence à la fonction elle-même, pas une chaîne contenant le nom de la fonction, mais elle n'est pas la lecture seule (à l'exception des valeurs primitives Boolean, Number ou String: 1, True, "Lecture seule" ). P>
Si nous créerons une instance de la date code> de la classe code> alors: p>
var Vehicle = function Vehicle() { // ... } var vehicle = new Vehicle();
Vérifiez ECMAScript §13.2.2 - Il n'y a pas de constructeur code> impliqué lorsque vous appelez nouveau code>
@Bergi Op veut connaître le constructeur en JavaScript, pas dans ECMAScript. et nulle part n'est écrit que ce que vous dites.
JavaScript est i> ECMAScript. Si vous vous souciez de JavaScript, reportez-vous à MDN . Cependant, mon point de vue était que votre deuxième balle est fausse, JS ne fait que trois choses.
@Bergi dans les seconde points, mes moyens sont que lorsque nous créons l'objet de la classe par nouveau code>, alors il appelle le constructeur.
Oui, mais aucun .Constructeur code> est créé!
Employee.prototype.printName = function()
{
document.write(this.name);
};
two.printName(); // Writes B
Cette fonction Catrecord compterait-elle comme constructeur? P> blockQuote>
Nope. P>
C'est très similaire à un constructeur, oui, mais je n'appelerais pas toutes les fonctions / méthodes qui renvoient un objet " constructeur ". J'utilise le terme usine strong> à la place quand aucun héritage n'est impliqué. p>
La spécification ECMAScript définit un constructeur simplement comme un p>
Objet de fonction qui crée et initialise des objets. P> blockQuote>
Bien qu'il y ait déjà une note sur l'héritage prototypique juste en dessous de celui-ci. Et dans le Vue d'ensemble de la langue dit P>
Un constructeur est une fonction qui possède une propriété nommée "
prototype code>" utilisé pour implémenter héritage basé sur prototype em> et propriétés partagées em>. p> blockQuote>Donc, alors que techniquement, chaque objet que implémente
[[construction]] Code> est un constructeur, en JavaScript, le terme "constructeur" est utilisé uniquement pour des fonctions destinées à être utilisées avec leNouveau code> Mot-cléet créez des instances qui partagent un prototype code> commun code> (formant une" classe "). Conventionnellement, leurs noms sont capitalisés alors. P>
Non, la fonction que vous avez donnée retourne un nouveau tableau associatif sans aucune information de type. Le constructeur que vous êtes après est quelque chose comme ceci:
// this is an Object, not what you want!
console.log(new catRecord("Fluffy", "12/12/12", "Melody"));
// this is a fixedCatRecord, good!
console.log(new fixedCatRecord("Fluffy", "12/12/12", "Melody"));