
const a =Symbol();
new๋ฅผ ๋ถ์ด์ง ์์ต๋๋ค!
์ ์ผ์ฑ์ด ๋ณด์ฅ: ์ ์ฒด ์ฝ๋ ์ค์ ๋ฑ ํ๋!
const id = Symbol('id'); const id2 = Symbol('id'); id === id2 //false id == id2 //false
const id = Symbol('id');
const user = {
name: 'Mike',
age: 30,
[id] : 'myid'
}
user
//{name: 'Mike', age:30, Symbol(id): "myid"}
Object.keys(user) // ["name", age] //symbol id๋ ์์!
์๋ณธ ๊ฐ์ฒด๋ฅผ ๊ฑด๋ค์ด์ง ์๊ณ property๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉ!
Object.getOwnPropertySymbols(user); ๋ฅผ ์ฌ์ฉํ๋ฉด ์จ๊ฒจ์ง Symbol key๋ฅผ ๋ณผ ์ ์์const id = Symbol('id'); const user = { name: 'Mike', age: 30, [id] : 'myid' } Object.getOwnPropertySymbols(user); //[Symbol(id)] Reflect.ownKeys(user); //Symbol์ ํฌํจํ ๊ฐ์ฒด์ ๋ชจ๋ ํค๋ฅผ ๋ณด์ฌ์ค //["name". "age", "Symbol(id)] ์ ์ฌ์ฉํ์ง ์์ผ๋ ๊ทธ๋ฅ ์์๋๊ธฐ๋ง ํ์!
ํ๋์ ์ฌ๋ณผ๋ง ๋ณด์ฅ๋ฐ์ ์ ์์: ์์ผ๋ฉด ๋ง๋ค๊ณ , ์์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ
Symbol ํจ์๋ ๋งค๋ฒ ๋ค๋ฅธ Symbol ๊ฐ์ ์์ฑํ์ง๋ง, Symbol.for ๋ฉ์๋๋ ํ๋๋ฅผ ์์ฑํ ๋ค ํค๋ฅผ ํตํด ๊ฐ์ Symbol์ ๊ณต์const id1 = Symbol.for('id'); const id2 = Symbol.for('id'); id1===id2; //true์ด๋ฆ์ ์ป๊ณ ์ถ๋ค๋ฉด,
Symbol.keyFor(id1); //'id'
์ ์ญ ์ฌ๋ณผ์ด ์๋ ์ฌ๋ณผ์ keyFor()์ ์ธ ์ ์์.
๋์ ์, description์ผ๋ก ์ด๋ฆ์ ์ ์ ์์const id = Symbol('id ์ ๋๋ค.'); id.description ; //"id ์ ๋๋ค."
//๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ง๋ค์ด ๋์ ๊ฐ์ฒด
const user = {
name: "Mike",
age: 30
};
//๋ด๊ฐ ์์
user.showName = function(){}; //์ด๋ฌ๋ฉด His showName is function(){}๋ก ๋์ด
const showName = Symbol('show name');
user[showName] = function(){
console.log(this.name);
};
//์ฌ์ฉ์๊ฐ ์ ์ํ๋ฉด ๋ณด๋ ๋ฉ์ธ์ง
for (let key in user) {
console.log(`His ${key} is ${user[key]},`);