Lors de l'utilisation de const avec des objets en JavaScript?
J'ai lu récemment sur ES6 const
mot-clé et je peux comprendre son importance quand avoir quelque chose comme ceci:
(function(){
const PI = 3.14;
PI = 3.15; // Uncaught TypeError: Assignment to constant variable
})();
Donc, personne ne peut changer mon PI
variable.
L'incompréhension que j'ai est que je ne comprends pas dans quelle situation l'utilisation de const
avec les objets peuvent faire sens (autre que d'empêcher les gens de faire myObj = newValue;
).
(function(){
const obj = {a:1 ,b: 2, c:3};
//obj = {x:7 , y:8, z: 9}
//This is good
//TypeError: Assignment to constant variable.
obj.a=7; obj.b=8 ; obj.c=9;
console.log(obj); //outputs: {a: 7, b: 8, c: 9}
})();
Donc, lors de la déclaration d'un objet: quand devrais-je dire: Maintenant, je doit déclarer mon objet avec const
?
Vous devez vous connecter pour publier un commentaire.
c'est une idée fausse très répandue sur le web,
CONST
n'a pas crée immuable variables au lieu de cela, il crée immuable de liaison.par exemple.
Mais
donc
const
crée une liaison à cet objet particulier. const assure que la variabletemp1
n'aurons pas de l'objet de Liaison.Arrive maintenant à
Object
. nous pouvons obtenir immuable fonctionnalité avecObject
en utilisantObject.freeze
const
assure que la variabletemp1
n'aurons pas de l'objet de Liaison."?const
et ici est la référence pourObject.freeze()
.laisser et const sont conçus pour le type de sécurité. Il n'y a pas de situation où vous doit de les utiliser, mais ils peuvent être à portée de main et de réduire la difficulté à repérer les bugs.
Un exemple d'une situation où const serait utile pour un objet que vous ne voulez pas de se transformer en un autre type.
Selon la cette référence:
Costants sont utilisés pour faire des variables qui ne peuvent pas être ré-attribué du nouveau contenu.
mot clé "const rend la variable elle-même immuable, et non son contenu attribué (par exemple, dans le cas où le contenu est un objet, cela signifie que l'objet lui-même peut encore être modifié).
Qui signifie qu'il est possible de modifier le contenu de l'objet qui est assigné à la variable const mais vous ne pouvez pas affecter un nouvel objet cette variable const.
Vous êtes également autorisé à ajouter de nouveaux attributs à votre objet.
Vous pouvez aussi essayer et voir sur ce violon: https://jsfiddle.net/am2cbb00/1/
const obj = new myObject(this, data);
Je ne suis pas sûr si c'est comme statique dans PHP ou plus comme un ..euh.. le pattern singleton peut-être, mais avec.. heu... "réutilisable" constructeur? Ou peut-être juste un programmeur pour montrer sa brillante nouveau mot-clé pour aucune raison....Si vous travaillez avec un objet et que vous souhaitez vous assurer que l'identité de l'objet n'est jamais modifié dire:
Également à l'aide de
const
est une bonne indication pour le compilateur javascript pour faire des optimisations sur votre code, et donc de faire de l'exécution beaucoup plus rapide, aveclet
ouvar
parce que l'identité ne change jamais,MAIS
méfiez-vous de l'utilisation de const/laisser dans les boucles pour des raisons de performances, car il risque de ralentissement de la performance en raison de la création d'une variable pour la boucle, mais dans la plupart des cas, la différence est négligeable.
const
crée en réalité immuable de liaison au lieu de faire les variables immuables.Depuis primitive types de données (
Boolean
,null
,undefined
,String
, etNumber
) sont passés par valeur, ils deviennent eux-mêmes immuable et ne peut donc pas être attribué à une autre valeur.Dans le cas de données complexes-types (
Array
,Function
, etObject
), ils sont passés par référence. Lorsque nous changer ou de modifier leurs propriétés ou des éléments, on ne change pas leur liaison, doncconst
ne renvoie pas d'erreur.