-symbol: ์ ์ผํ ์๋ณ์๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ. ์ ์ผ์ฑ์ด ๋ณด์ฅ ๋จ
const a = Symbol(); //new๋ฅผ ๋ถ์ด์ง ์์
const b = Symbol();
console.log(a)
console.log(b)
๊ฒฐ๊ณผ Symbol() Symbol() |
์ผ์น ์ฐ์ฐ์๋ก ํ์ธ ์ a == b; false |
- property key : ์ฌ๋ณผํ
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
console.log(user)
๊ฒฐ๊ณผ
{name: 'Mike', age: 30, Symbol(id): 'myid'}
-> Object ์ฌ์ฉ ์
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
console.log(Object.keys(user));
๊ฒฐ๊ณผ > ['name', 'age']
๋ค๋ฅธ Object values , entries ๋ ์ ์ ๋๋ก ๋์ด
-ํน์ ๊ฐ์ฒด์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์์ฑ ์ถ๊ฐํ ์ ์์
๋จ ๋๋ฌด ๋ณต์กํ ์ด๋ฆX, ๋ค๋ฅธ ์ด๊ฐ ๋ง๋ ๊ฐ์ฒด์ ๋ฎ์ด ์ฐ๊ธฐ X
const user = {
name : 'Mike',
age : 30
}
const id = Symbol('id');
user[id] = 'myid';
console.log(user[id])
๊ฒฐ๊ณผ > myid
-Symbol.for(): ์ ์ญ ์ฌ๋ณผ
์์ผ๋ฉด ๋ง๋ค๊ณ ์์ผ๋ฉด ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ํ๋์ ์ฌ๋ณผ๋ง ๋ณด์ฅ๋ฐ์ ์ ์์
Symbol ํจ์๋ ๋งค๋ฒ ๋ค๋ฅธ Symbol ๊ฐ์ ์์ฑํ์ง๋ง, Symbol.for ๋ฉ์๋๋ ํ๋๋ฅผ ์์ฑํ ๋ค ํค๋ฅผ ํตํด ๊ฐ์ Symbol์ ๊ณต์ ํ ์ ์์
์ด๋ฆ์ ๋ฃ์ด์ฃผ๋ฉด ์์ฑํ ๋ ๋ฃ์ด์ฃผ์๋ ์ด๋ฆ ์๋ ค์ค
์์) Symbol.keyFor(id1) //id
์ ์ญ๋ณ์๊ฐ ์๋ ์ keyFor ์ฌ์ฉํ ์ ์์ ๋์ description ์ด์ฉ
const id = Symbol('id์
๋๋ค.');
console.log(id.description);
๊ฒฐ๊ณผ> id์
๋๋ค.
-์จ๊ฒจ์ง Symbol key ๋ณด๋ ๋ฒ
symbol key ๋ ์์ ํ ์จ๊ธธ ์์ด Object์ Reflect ์ฌ์ฉ ํด ๋ณผ ์ ์์
const id = Symbol('id');
const user = {
name : 'Mike',
age : 30,
[id] : 'myid'
}
console.log(Object.getOwnPropertySymbols(user)); //๊ฒฐ๊ณผ> [Symbol(id)]
console.log(Reflect.ownKeys(user)); //๊ฒฐ๊ณผ> ['name', 'age', Symbol(id)]
// ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ง๋ค์ด ๋์ ๊ฐ์ฒด
const user = {
name : 'Mike',
age : 30,
};
//๋ด ์์
// user.showName = fuction(){} ; > His showname is fuction(){}.
const showName = Symbol('show name');
user[showName] = function(){
console.log(this.name);
};
user[showName]();
//์ฌ์ฉ์๊ฐ ์ ์ํ๋ฉด ๋ณด๋ ๋ฉ์ธ์ง
for(let key in user){
console.log(`His ${key} is ${user[key]}.`);
}
๊ฒฐ๊ณผ>
Mike
His name is Mike.
His age is 30.
'js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
javascript ๋ฐฐ์ด ๋ฉ์๋2(sort, reduce) (1) | 2022.10.04 |
---|---|
javascript ๋ฐฐ์ด ๋ฉ์๋(Array methods) (0) | 2022.10.04 |
javascript ์ซ์ ์ํ method (0) | 2022.09.01 |
javascript ๊ฐ์ฒด ๋ฉ์๋(Object methods), ๊ณ์ฐ๋ ํ๋กํผํฐ(Computed propery) (0) | 2022.08.29 |
javascript ์์ฑ์ ํจ์ (0) | 2022.08.29 |