Quelles sont les différences entre la fonction et la fonction de constructeur en JavaScript?
Dans cette auteur du blog dit-dessous de la fonction est un fonction constructeur:
function Cat(name, color) {
this.name = name;
this.color = color;
}
Cat.prototype.age = 0;
var catC = new Cat("Fluffy", "White");
Les instances de Cat
fonction a un nom et une couleur à la propriété. Est-ce la seule différence entre le normal et le constructeur fonction?
Vous devez vous connecter pour publier un commentaire.
Une fonction constructeur est une fonction normale.
Ce qui fait la différence ici, c'est l'utilisation de la
new
opérateur qui en fait le contexte (this
) dans la fonction de la nouvelle instance, et donc la laisser prendre les deux propriétés, et renvoie cette nouvelle instance.Sans
new
opérateur, le contexte aurait été l'externe (window
si votre code est dans la portée globale en vrac, mode,undefined
si en mode strict).Qui est, si vous omettez le
new
la fonction "oeuvres" (si vous n'êtes pas en mode strict), mais vous avez deux résultats différents :
catC
estundefined
que votre fonction ne retourne rienname
etcolor
sont maintenant les propriétés de la portée externeToute la magie, donc, est dans le nouvel opérateur :
Quand j'ai dit que c'est une fonction normale, je, j'ai omis une chose : l'intention du développeur. Vous généralement de définir des fonctions pour être soit disant que les constructeurs (c'est à dire avec
new
) ou pas. Dans le premier cas vous le plus souvent les arguments à utiliser pour initialiser les champs de l'instance (à l'aide dethis.name = ...
) et vous suivent souvent par l'ajout de fonctions pour le prototype (comme vous l'avez fait), afin qu'ils deviennent disponibles pour toutes les instances. Et pour rendre votre intention claire, il est de coutume de donner un nom à votre constructeur de commencer avec une lettre majuscule.Prenons un exemple pour comprendre la naissance de constructeurs en Javascript. Supposons, vous êtes invité à créer un objet de l'employé et il doit avoir 4 propriétés prénom, nom, sexe , et de la désignation. Bien! vous dit pas de problème.
Ci-dessus est la façon la plus simple, d'abord vous avez créé objet vide et puis vous avez associé tous les 4 propriétés de l'objet (bien sûr, vous pourriez avoir également créé via inline). Que faire si vous êtes invité à nouveau pour créer un autre employé de l'objet avec les mêmes propriétés.
Semble pas du tout un problème. Maintenant, si vous êtes demandé qu'il y a un total de 100 employés et vous venez de créer 2 d'entre eux, commune, vous devez créer un autre 98 employé objets. Maintenant, vous ne serez pas en créant des objets comme ci-dessus comme il semble fastidieux. Gotcha! nous allons créer une méthode qui sera appelée à n'importe quel nombre de fois et il va créer des objets et de nous le retourner. Ouais! écrire une fois et sera utilisé plusieurs fois.
Beaucoup de façon pratique, et sans dupliquer les codes. Appelez simplement createEmployeeObject fonction avec vos arguments, et en retour, vous obtenez votre objet. Que faire si nous avons plusieurs types d'objets disent département. Ensuite, nous allons aussi avoir une fonction qui va créer un ministère de l'objet et le renvoie.
Donc, ce qui est commun dans ces sortes de fonctions. Il est:-
la création d'objet vide
var myObj={};
objet retourné après le remplissage, il
retour myObj;
La création d'objet vide et le retour de l'objet est commun dans l'ensemble des fonctions qui créent des objets. Javascript a créé un raccourci qui vous permet de ne pas écrire ces lignes lorsque vous utilisez la fonction qui crée des objets. Donc, ces 2 lignes peuvent être ignorées. Façon de le faire est par l'utilisation des Constructeurs.
À l'aide des fonctions pour créer des objets est assez commun en Javascript, donc Javascript fournit un raccourci qui vous permet d'écrire des fonctions pour créer des objets. Ces fonctions sont appelées fonctions Constructeur. Les constructeurs sont des fonctions qui vous permet de remplir l'objet dont vous avez besoin pour créer.
Vous devez savoir à propos de ce mot-clé, Il pointe sur l'objet courant.Rappelez-vous que dans le Constructeur fonctions Javascript crée vide d'objet pour nous, donc, de ce fait les points de cet objet. Javscript Construtor fonctions automatiquement renvoie l'objet après qu'il est rempli. Maintenant comment dire à Javascript qu'une fonction est appelée dans le Constructeur de mode, c'est le nouveau mot-clé qui indique Javascript pour traite d'une fonction comme la fonction Constructeur. Chaque fois que vous besoin d'un objet, l'utilisation de mots clés, puis appeler une fonction, et puis cette fonction prépare un objet pour nous et le renvoie.
Même si le Javascript n'est pas de la classe de base, vous devez prendre soin de la fonction Constructeur de nom. il n'est pas bon d'utiliser chameau cas, l'utilisation régulière.
http://jkoder.com/javascript-constructors-why-it-should-be-used-object-oriented-programming-in-javascript/
Dystroy a elle.
Une autre façon de le dire, c'est que une fonction devient un "constructeur" lorsqu'il est appelé avec la
new
Opérateur, la construction de une nouvelle instance de la classe.C'est aussi la raison pour la Capitalisation de la convention dans le nom de la fonction qui est mentionné, ainsi que d'autres développeurs peuvent voir que c'est un constructeur, et qui est tombe avec de l'actuelle convention de nommage
classes
En programmation orientée objet, un constructeur dans une classe est un type spécial de sous-routine appelée pour créer un objet. Il prépare le nouvel objet pour l'utiliser, souvent d'accepter les arguments que le constructeur utilise pour définir les variables de membre requis.
De sorte que le
var catC = new Cat("Fluffy", "White");
crée une nouvelle instance du constructeur de la classeCat