Ho appena imbattuto la documentazione per il nuovo (proposta per ES6, ma già implementato in Firefox, Chrome & Opera) tipo di dati in JavaScript, Symbol
:Quali sono i possibili scenari di utilizzo per il nuovo tipo di dati "Symbol" di JavaScript?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects
sto leggendo su di esso, ma non riesco a pensare a un possibile scenario di utilizzo.
La documentazione dice:
Un simbolo è un tipo di dati unica e immutabile e può essere usato come un identificatore per le proprietà degli oggetti.
OK, va bene, diciamo che faccio come la documentazione dice:
obj[Symbol("a")] = "a";
ma, dal momento Simbolo ('a') restituisce sempre valore unico (oggetto) e:
I simboli non sono visibili in per ... in iterazioni.
come posso recuperare la mia proprietà da obj
?
var obj = { normalProperty: 'just a string' };
obj[Symbol('a')] = 'a';
document.getElementById('retrieve').addEventListener('click', function() {
document.write('Stringified object:' + JSON.stringify(obj) + '<br/><br/>');
document.write('Trying to get Symbol-property value, aaaand...: <br/>');
document.write(obj[Symbol('a')]); // undefined
}, false);
<button id="retrieve">Retrieve obj's property</button>
Modifica
Naturalmente, è possibile recuperare in questo modo:
var x = Symbol('a');
obj[x] = 'a';
obj[x]; // "a"
ma qual è il scopo di farlo in questo modo?
Grazie in anticipo :)
forse i classici casi d'uso di incapsulamento? – rahpuser