2016-04-22 2 views
4

Нового типа примитива поставляется с ES6 которым Symbol type.The короткое определение говорит:Что такое «символ» примитивный тип данных в JavaScript

Символа является уникальным и непреложным типом данных и может быть использован в качестве идентификатор свойств объекта. Объект-символ - это неявный объект-обертка для примитивного типа данных символа.

Я провел некоторое исследование, но я не могу понять, зачем нужен этот примитивный тип точно?

Благодарим за ответы.

+1

больше (лучше) дубликатов: [Что это точка типа «символ» в ECMA -262-v6?] (Http://stackoverflow.com/q/30919170/1048572), [зачем добавлять символы в javascript?] (Http://stackoverflow.com/q/21724326/1048572) – Bergi

ответ

8

Этот примитивный тип полезен для так называемых «частных» и/или «уникальных» ключей.

Используя символ, вы не знаете никого, кто не делится Этот экземпляр (вместо строки) не сможет установить определенное свойство на карте.

Пример без символов:

var map = {}; 
setProp(map); 
setProp2(map); 

function setProp(map) { 
    map.prop = "hey"; 
} 
function setProp2(map) { 
    map.prop = "hey, version 2"; 
} 

В этом случае вызов функции второго переопределяет значение в первой.

Однако, с символами, а не только с помощью «строк prop», мы используем сам экземпляр:

var map = {}; 
var symbol1 = Symbol("prop"); 
var symbol2 = Symbol("prop"); // same name, different instance – so it's a different symbol! 
map[symbol1] = 1; 
map[symbol2] = 2; // doesn't override the previous symbol's value 
console.log(map[symbol1] + map[symbol2]); // logs 3 
+0

Нет, ничего нет о Символах вообще. Они * полезны для уникальности. –

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