6
votes

Cette fonction est-elle similaire à celle d'un constructeur?

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?

0 commentaires

4 Réponses :


0
votes

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();

5 commentaires

Vérifiez ECMAScript §13.2.2 - Il n'y a pas de constructeur impliqué lorsque vous appelez nouveau


@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 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 , alors il appelle le constructeur.


Oui, mais aucun .Constructeur est créé!



-1
votes
Employee.prototype.printName = function()
{
   document.write(this.name);
};

two.printName();  // Writes B

0 commentaires

1
votes

Cette fonction Catrecord compterait-elle comme constructeur?

Nope.

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 à la place quand aucun héritage n'est impliqué.

La spécification ECMAScript définit un constructeur simplement comme un

Objet de fonction qui crée et initialise des objets.

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

Un constructeur est une fonction qui possède une propriété nommée " prototype " utilisé pour implémenter héritage basé sur prototype et propriétés partagées .

Donc, alors que techniquement, chaque objet que implémente [[construction]] est un constructeur, en JavaScript, le terme "constructeur" est utilisé uniquement pour des fonctions destinées à être utilisées avec le Nouveau Mot-clé et créez des instances qui partagent un prototype commun (formant une" classe "). Conventionnellement, leurs noms sont capitalisés alors.


0 commentaires

1
votes

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"));


0 commentaires