// Symbol is a primitive data type of JavaScript, along with string, number,
// boolean, null and undefined. Symbols are immutable, and unique.
let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols are unique
// Just like strings, symbols can be used as keys for object properties.
const sym = Symbol();
let obj = {
[sym]: "value",
};
console.log(obj[sym]); // "value"
// Symbols can also be combined with computed property declarations to
// declare object properties and class members.
const getClassNameSymbol = Symbol();
class C {
[getClassNameSymbol]() {
return "C";
}
}
let c = new C();
let className = c[getClassNameSymbol](); // "C"