Constructeurs d'objets JavaScript
Exemple
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
Il est recommandé de nommer les fonctions constructeur avec une première lettre en majuscule.
Types d'objets (Plans) (Classes)
Les exemples des chapitres précédents sont limités. Ils ne créent que des objets uniques.
Parfois, nous avons besoin d'un " plan directeur " pour créer de nombreux objets du même "type".
La façon de créer un "type d'objet" consiste à utiliser une fonction de constructeur d'objet .
Dans l'exemple ci-dessus, function Person()
est une fonction constructeur d'objet.
Les objets du même type sont créés en appelant la fonction constructeur avec le mot- new
clé :
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
Le ce mot- clé
En JavaScript, la chose appelée this
est l'objet qui "possède" le code.
La valeur de this
, lorsqu'elle est utilisée dans un objet, est l'objet lui-même.
Dans un constructeur, la fonction this
n'a pas de valeur. C'est un substitut du nouvel objet. La valeur de this
deviendra le nouvel objet lorsqu'un nouvel objet sera créé.
Notez que ce this
n'est pas une variable. C'est un mot clé. Vous ne pouvez pas modifier la valeur de this
.
Ajouter une propriété à un objet
Ajouter une nouvelle propriété à un objet existant est simple :
Exemple
myFather.nationality = "English";
La propriété sera ajoutée à myFather. Pas à ma mère. (Pas à d'autres objets de personne).
Ajouter une méthode à un objet
Ajouter une nouvelle méthode à un objet existant est simple :
Exemple
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
La méthode sera ajoutée à myFather. Pas à ma mère. (Pas à d'autres objets de personne).
Ajouter une propriété à un constructeur
Vous ne pouvez pas ajouter une nouvelle propriété à un constructeur d'objet de la même manière que vous ajoutez une nouvelle propriété à un objet existant :
Exemple
Person.nationality = "English";
Pour ajouter une nouvelle propriété à un constructeur, vous devez l'ajouter à la fonction constructeur :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
De cette façon, les propriétés d'objet peuvent avoir des valeurs par défaut.
Ajouter une méthode à un constructeur
Votre fonction constructeur peut également définir des méthodes :
Exemple
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {
return this.firstName + " " + this.lastName;
};
}
Vous ne pouvez pas ajouter une nouvelle méthode à un constructeur d'objet de la même manière que vous ajoutez une nouvelle méthode à un objet existant.
L'ajout de méthodes à un constructeur d'objet doit être fait à l'intérieur de la fonction constructeur :
Exemple
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
La fonction changeName() affecte la valeur de name à la propriété lastName de la personne.
Vous pouvez maintenant essayer :
myMother.changeName("Doe");
JavaScript sait de quelle personne vous parlez en "substituant" this par myMother .
Constructeurs JavaScript intégrés
JavaScript a des constructeurs intégrés pour les objets natifs :
new String() // A new String object
new Number() // A new Number object
new Boolean() // A new Boolean object
new Object() // A new Object object
new Array() // A new Array object
new RegExp() // A new RegExp object
new Function() // A new Function object
new Date() // A new Date object
L' Math()
objet n'est pas dans la liste. Math
est un objet global. Le new
mot-clé ne peut pas être utilisé sur
Math
.
Saviez-vous?
Comme vous pouvez le voir ci-dessus, JavaScript a des versions d'objet des types de données primitifs String
, Number
et Boolean
. Mais il n'y a aucune raison de créer des objets complexes. Les valeurs primitives sont beaucoup plus rapides :
Utilisez des littéraux de chaîne ""
au lieu de new String()
.
Utilisez des nombres littéraux 50
au lieu de new Number()
.
Utilisez des littéraux booléens true / false
au lieu de new Boolean()
.
Utilisez des littéraux d'objet {}
au lieu de new Object()
.
Utilisez des littéraux de tableau []
au lieu de new Array()
.
Utilisez des littéraux de modèle /()/
au lieu de new RegExp()
.
Utilisez des expressions de fonction () {}
au lieu de new Function()
.
Exemple
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new Object object
const x5 = []; // new Array object
const x6 = /()/ // new RegExp object
const x7 = function(){}; // new function
Objets chaîne
Normalement, les chaînes sont créées en tant que primitives : firstName = "John"
Mais les chaînes peuvent également être créées en tant qu'objets à l'aide du mot- new
clé :
firstName = new String("John")
Découvrez pourquoi les chaînes ne doivent pas être créées en tant qu'objet dans le chapitre JS Strings .
Objets numériques
Normalement, les nombres sont créés en tant que primitives : x = 30
Mais les nombres peuvent également être créés en tant qu'objets à l'aide du mot- new
clé :
x = new
Number(30)
Découvrez pourquoi les nombres ne doivent pas être créés en tant qu'objet dans le chapitre JS Numbers .
Objets booléens
Normalement, les booléens sont créés en tant que primitives : x =
false
Mais les booléens peuvent également être créés en tant qu'objets à l'aide du mot- new
clé :
x = new Boolean(false)
Découvrez pourquoi les booléens ne doivent pas être créés en tant qu'objet dans le chapitre JS Booleans .