Comment créer un objet JavaScript?

Pour le moment, j’ai vu trois manières de créer un objet en JavaScript. Quelle est la meilleure méthode pour créer un objet et pourquoi ?

J’ai également vu que dans tous ces exemples, le mot clé var n’est pas utilisé - pourquoi ?

Dans la deuxième et troisième façon, le nom de l’objet est en majuscule alors que dans la première façon, le nom de l’objet est en minuscule. Quelle casse devons-nous utiliser pour le nom d’un objet ?

Méthode 1:

function car(model, speed, color){
  this.model= model;
  this.speed= speed;
  this.color= color;
}

myCar = new car("Mercedes", "250", "black");
document.write("Model: " + myCar.model+ " Speed: " + myCar.speed);

Méthode 2:

var Car = {
  model: "Mercedes",
  start: function(){
    alert("Starting...");
  }
  stop: function(){
    alert("Stoping...");
  }
};

Car.start();
Car.stop();

Méthode 3:

var Car = {};

Car['model'] = "Mercedes";
Car['speed'] = 250;
Car['start'] = function(){ alert("Starting...") }

Il n’y a pas de meilleure méthode, cela dépend de votre cas d’utilisation.

  • Utilisez la méthode 1 si vous devez créer plusieurs objets de même type. Dans votre exemple, Personne (vous devez commencer le nom par une majuscule) est appelée la fonction constructeur. C’est similaire aux classes dans d’autres langages OO.

  • Utilisez la méthode 2 si vous n’avez besoin que d’un seul objet d’un type donné (comme un singleton). Si vous voulez que cet objet hérite d’un autre objet, vous devez utiliser une fonction constructeur.

  • Utilisez la méthode 3 si vous voulez initialiser les propriétés de l’objet en fonction d’autres propriétés de celui-ci ou si vous avez des noms de propriétés dynamiques.

Je pense que cela dépend de ce que vous voulez. Pour des objets simples, je pense que vous pouvez utiliser la deuxième méthode. Lorsque vos objets deviennent plus grands et que vous prévoyez d’utiliser des objets de même type, je pense que la première méthode est préférable. De cette façon, vous pouvez également l’étendre en utilisant des prototypes.

Exemple :

function Voiture(vitesse) {
    this.vitesse = vitesse;
}
Voiture.prototype.accelerer = function() {
    return vitesse + 10;
};
Voiture.prototype.ralentir = function() {
    return vitesse - 10;
}

Je n’utilise pas la troisième méthode, mais elle est vraiment utile pour modifier dynamiquement les propriétés.