const one = Symbol.for("sports");
log(one);
// Symbol(sports)
const one = Symbol.for("sports");
const two = Symbol.for("sports");
log(one === two);
log(Symbol.for(true));
// true
// Symbol(true)
const one = Symbol.for("book");
const six = Symbol.keyFor(one);
log(six);
// book
log(Symbol("100").toString());
const sym = Symbol.for("book");
log(sym.toString());
try {
log(Symbol() + "ABC");
} catch {
log("+로 연결 불가");
};
// Symbol(100)
// Symbol(book)
// +로 연결 불가
Symbol.prototype.description
Syntax, ES2019
Symbol 오브젝트의 주석, 설명을 반환
log(Symbol("sports").description);
log(Symbol.for("book").description);
log(Symbol.iterator.description);
// sports
// book
// Symbol.iterator
log(Symbol("book").toString());
log(Symbol("").toString());
log(Symbol().toString());
log(Symbol.for("book").description);
log(Symbol("book").description);
log(Symbol("").description);
log(Symbol().description);
// Symbol(book)
// Symbol()
// Symbol()
// book
// book
// ""
// undefined
log(Symbol("100").valueOf());
log(Symbol.for("200").valueOf());
// Symbol(100)
// Symbol(200)
Object 함수이지만
파라미터의 Object에서
const obj = {point: 100};
obj[Symbol("one")] = 200;
obj[Symbol.for("two")] = 300;
log(Object.getOwnPropertySymbols(obj));
const list = Object.getOwnPropertySymbols(obj);
for (const sym of list){
log(`${sym.description}: ${obj[sym]}`);
};
// [point]
// one: 200
// two: 300