Каковы возможные сценарии использования нового типа данных JavaScript «Symbol»?
Я просто наткнулся на документацию для нового (предложенного для ES6, но уже реализованного в Firefox, Chrome & Opera) типа данных в JavaScript,Symbol
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol http://people.mozilla.org/~jorendorff/es6-draft.html#sec-symbol-objects
Я читаю об этом, но я просто не могу вспомнить возможный сценарий использования.
В документации сказано:
Символ является уникальным и неизменным типом данных и может использоваться в качестве идентификатора для свойств объекта.
Хорошо, хорошо, допустим, я делаю так, как написано в документации:
obj[Symbol("a")] = "a";
но, поскольку Symbol ('a') всегда возвращает уникальное значение (объект) и:
Символы не видны в течение ... в итерациях.
как я могу получить свою собственность из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>
редактироватьКонечно, вы можете получить его так:
var x = Symbol('a');
obj[x] = 'a';
obj[x]; // "a"
но что этоцель делать это таким образом?
Заранее спасибо :)