| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/new | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
L'oprateur new permet de crer une instance d'un certain type d'objet partir du constructeur qui existe pour celui-ci (natif ou dfini par l'utilisateur).
Le mot-cl new, utilis avec une fonction, applique les 4 tapes suivantes :
this la fonctionthis qui est renvoye.function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
const car1 = new Car("Eagle", "Talon TSi", 1993);
console.log(car1.make);
// Expected output: "Eagle"
new constructeur[([arguments])];
constructeurUne fonction ou une classe qui dfinit le type de l'objet qui sera une instance.
argumentsUne liste de valeurs correspondant aux arguments avec lesquels appeler le constructeur.
La cration d'un objet personnalis se fait en deux tapes :
new.Pour dfinir un type d'objet, crez une fonction pour ce type qui spcifie son nom, ses proprits et ses mthodes. Un objet peut avoir des proprits qui sont elles-mmes des objets, comme on pourra le voir dans les exemples ci-dessous.
Lorsque le code new Toto(...) est excut, voici ce qui se passe :
Toto.prototype.Toto est appele avec les arguments fournis, this tant li au nouvel objet cr. new Toto sera quivalent new Toto() (i.e. un appel sans argument).new. Si le constructeur ne renvoie pas d'objet de faon explicite, l'objet cr l'tape 1 sera utilis. (En gnral, les constructeurs ne renvoient pas de valeurs mais si on souhaite surcharger le processus habituel, on peut utiliser cette valeur de retour).Il est toujours possible d'ajouter une proprit un objet dfini prcdemment. Par exemple, l'instruction voiture1.couleur = "noir" ajoute une proprit couleur voiture1, et lui assigne une valeur : "noir". Cependant, ceci n'affecte aucunement les autres objets. Pour ajouter une nouvelle proprit tous les objets du mme type, cette proprit doit tre ajoute la dfinition du type d'objet Voiture.
Il est possible d'ajouter une proprit partage par tous les objets d'un type dj dfini auparavant en utilisant sa proprit Function.prototype. Ceci permet de dfinir une proprit partage par tous les objets crs avec cette fonction, plutt que simplement par une seule instance de ce type d'objet. Le code qui suit ajoute une proprit couleur avec la valeur "couleur standard" tous les objets de type Voiture, et redfinit ensuite cette valeur avec la chane "noir" uniquement pour l'instance d'objet voiture1. Pour plus d'informations, voir la page sur prototype.
function Voiture() {}
voiture1 = new Voiture();
voiture2 = new Voiture();
console.log(voiture1.couleur); // undefined
Voiture.prototype.couleur = "couleur standard";
console.log(voiture1.couleur); // couleur standard
voiture1.couleur = "noir";
console.log(voiture1.couleur); // noir
console.log(voiture1.__proto__.couleur); // couleur standard
console.log(voiture2.__proto__.couleur); // couleur standard
console.log(voiture1.couleur); // noir
console.log(voiture2.couleur); // couleur standard
Note :
Si on n'crit pas l'appel du constructeur avec l'oprateur new, le constructeur est appel comme une fonction normale et ne cre pas d'objet. Dans ce cas, la valeur de this sera diffrente.
Supposons que vous vouliez crer un type d'objet pour les voitures. Vous voulez que ce type d'objet s'appelle Voiture, et qu'il ait des proprits pour la marque, le modle et l'anne. Pour ce faire, vous cririez la fonction suivante :
function Voiture(marque, modle, anne) {
this.marque = marque;
this.modle = modle;
this.anne = anne;
}
prsent, vous pouvez crer un objet appel ma_voiture de la manire suivante :
ma_voiture = new Voiture("Volkswagen", "Golf TDi", 1997);
Cette instruction cre l'objet ma_voiture et assigne les valeurs spcifies ses proprits. La valeur de ma_voiture.marque est alors la chane "Volkswagen", celle de ma_voiture.anne est l'entier 1997, et ainsi de suite.
Il est possible de crer un nombre illimit d'objets Voiture en appelant new. Par exemple :
voiture_de_ken = new Voiture("Nissan", "300ZX", 1992);
Supposons que vous ayez dfini un objet appel Personne de la manire suivante :
function Personne(nom, age, surnom) {
this.nom = nom;
this.age = age;
this.surnom = surnom;
}
Et que vous avez ensuite instanci deux nouveaux objets Personne de la manire suivante :
rand = new Personne("Rand McNally", 33, "Randy");
ken = new Personne("Ken Jones", 39, "Kenny");
Vous pouvez alors rcrire la dfinition de Voiture pour contenir une proprit propritaire qui reoit un objet Personne, comme ceci :
function Voiture(marque, modle, anne, propritaire) {
this.marque = marque;
this.modle = modle;
this.anne = anne;
this.propritaire = propritaire;
}
Pour instancier les nouveaux objets, vous utiliserez ensuite :
voiture1 = new Voiture("Volkswagen", "Golf TDi", 1997, rand);
voiture2 = new Voiture("Nissan", "300ZX", 1992, ken);
Plutt que de passer une chane littrale ou une valeur entire lors de la cration des nouveaux objets, les instructions ci-dessus utilisent les objets rand et ken comme paramtres pour les propritaires. Pour connatre le nom du propritaire de voiture2, on peut alors accder la proprit suivante :
voiture2.propritaire.nom;
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-new-operator |
Cette page a t modifie le 7 sept. 2026 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |