Ich stolperte über die Dokumentation für den neuen (für ES6 vorgeschlagen, aber bereits in Firefox, Chrome & Opera implementiert) Datentyp in JavaScript, Symbol
:Was sind die möglichen Verwendungsszenarien für den neuen JavaScript- "Symbol" -Datentyp?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects
ich darüber bin Lesen, aber ich kann mir einfach kein mögliches Nutzungsszenario vorstellen.
Die Dokumentation sagt:
Ein Symbol ein eindeutiger und unveränderlicher Datentyp ist, und kann als eine Kennung für die Objekteigenschaften verwendet werden.
OK, fein, sagen wir, ich tun, wie die Dokumentation sagt:
obj[Symbol("a")] = "a";
aber, da Symbol ('a') immer eindeutigen Wert zurückgibt (Objekt) und:
Symbole sind in ... in Iterationen nicht sichtbar.
wie rufe ich mein Eigentum von obj
?
var x = Symbol('a');
obj[x] = 'a';
obj[x]; // "a"
aber was ist der Zweck es auf diese Weise zu tun:
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>
bearbeiten
Natürlich können Sie es wie folgt abrufen?
Vielen Dank im Voraus :)
vielleicht die klassische Kapselung Anwendungsfälle? – rahpuser