En JavaScript, nous pouvons déclarer un nouvel objet vide de deux manières :
var obj1 = new Object();
var obj2 = {};
Je n'ai rien trouvé qui suggère qu'il existe une différence significative entre ces deux méthodes en ce qui concerne leur fonctionnement en coulisses (corrigez-moi si je me trompe - j'aimerais bien le savoir). Cependant, la seconde méthode (qui utilise la notation littérale d'objet) offre quelques avantages.
- Il est plus court (10 caractères pour être précis)
- Il est plus facile et plus structuré de créer des objets à la volée.
- Peu importe qu'un bouffon ait par inadvertance écrasé Object
Considérons un nouvel objet qui contient les membres Name et TelNo. En utilisant la convention new Object(), nous pouvons le créer comme suit :
var obj1 = new Object();
obj1.Name = "A Person";
obj1.TelNo = "12345";
El Expando Properties de JavaScript nous permet de créer de nouveaux membres de cette façon à la volée, et nous obtenons ce que nous voulions. Cependant, cette méthode n'est pas très structurée ou encapsulée. Et si nous voulions spécifier les membres lors de la création, sans avoir à compter sur les propriétés expando et l'affectation post-création ?
C'est là que la notation littérale des objets peut être utile :
var obj1 = {Name:"A Person",TelNo="12345"};
Ici, nous avons obtenu le même effet en une seule ligne de code et avec beaucoup moins de caractères.
Une discussion plus approfondie des méthodes de construction d'objets ci-dessus peut être trouvée à l'adresse suivante : JavaScript et la programmation orientée objet (OOP).
Et enfin, qu'en est-il de l'idiot qui a passé outre l'objet ? Vous pensiez que ce n'était pas possible ? Bon, ce JSFiddle prouve le contraire. L'utilisation de la notation littérale objet nous évite de tomber dans cette bouffonnerie.
(De http://www.jameswiseman.com/blog/2011/01/19/jslint-messages-use-the-object-literal-notation/ )
7 votes
C'est pareil :
a = new Object
,a = new Object()
,a = {}
La version littérale est beaucoup plus simple et certains tests que j'ai effectués il y a quelque temps indiquent qu'elle est plus rapide, mais les compilateurs plus récents ont pu fausser mon affirmation. Il en va de même pour les tableaux littéraux9 votes
Avec un peu de chance, vous déclarez vos variables avec la balise
var
dans votre code d'application pour éviter de polluer l'espace de noms global et de devoir chercher vos variables au-delà de l'enregistrement actuel dans la pile.0 votes
@Samo hey mec, bon conseil. Mais qu'entendez-vous par "l'enregistrement actuel dans la pile" ? Si je rate quelque chose, j'aimerais l'apprendre.
1 votes
Fondamentalement, à tout moment pendant l'exécution d'un programme, il y a une pile d'enregistrements ou de blocs. Chaque enregistrement contient une liste de variables qui ont été créées dans cette portée. En JavaScript, si une expression contient une variable et que l'interprète ne la trouve pas dans l'enregistrement de la pile pour cette portée, il passera à l'enregistrement suivant jusqu'à ce qu'il trouve la variable. Plus d'informations davidshariff.com/blog/
2 votes
Éviter les JSLint est la première étape pour devenir un bon développeur. Utiliser
new
est une convention qui transcende les pinaillages inutiles d'une langue médiocre. Utiliseznew
parce que son sens est clair. Dans 99,9% des cas, les gains de performance ne sont pas pertinents.2 votes
@Hal50000 langue médiocre selon qui ?