2015-09-03 2 views
1

С Symbol является уникальным и неизменным типом данных, общий прецедент для Symbol - это свойства объекта. Однако полезно ли использовать его как уникальный идентификатор? Например:Является ли хорошей практикой использовать символ ES6 как уникальные идентификаторы?

 const list = [ 
      {id: Symbol()}, 
      {id: Symbol()} 
     ] 
+1

На самом деле это не то, для чего они созданы, и вы можете использовать любой объект. '{}! = {}' – lyschoening

+0

@lyschoening '{}! == {}' не будет работать, если мы хотим сохранить неизменяемый объект. – wuct

+0

@ChingTingWu: Идентификация объекта неизменна. Если вы хотите, чтобы объекты были неизменными, вы все равно можете их заморозить. – Bergi

ответ

2

Это зависит от ваших потребностей. Если вам нужны только они как идентификаторы в вашей собственной базе кода, они в порядке, безусловно, лучше, чем генерация случайного идентификатора.

Существенным недостатком использования Symbol() является то, что они не являются сериализуемыми. Не существует способа делить значение Symbol() через сети/процессы или сохранять их на диск/базы данных.

Для большинства случаев, вероятно, лучше использовать автоинкрементные идентификаторы.

Смежные вопросы