๐ด Symbols
const user = {
[Symbol("ryong")]: {
age: 28
},
[Symbol("ryong")]: {
age: 32
},
hello: "bye"
};
console.log(Object.keys(user)); // ["hello"]
console.log(Object.getOwnPropertySymbols(user)); // [Symbol(ryong), Symbol(ryong)]
โช symbol ๋ด๋ถ์ description ํ๋ผ๋ฏธํฐ๊ฐ ์๋ก ๊ฐ๋๋ผ๋ ์๋ก ๋ค๋ฅธ symbol์ ๋ฆฌํดํ๋ค.
const numberArr = [1, 3, 3, 5, 7];
const objectArr = [
{ name: 'Harry', age: 20 },
{ name: 'Kim', age: 30 },
{ name: 'Steve', age: 40 }
];
console.log(objectArr.find(item => {
return item.age === 20 // ํด๋น์กฐ๊ฑด์ ๋ถํฉํ๋ฉด item๊ฐ ๋ฐํ
}); // {name: "Harry", age: 20}
// find๋ ํ๋๋ง ์ฐพ์. ๋ค์์ ๋ฐฐ์ธ filter์ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ฐฐ์ด๋ก
console.log(numberArr.find(item => item === 3)); // 3
console.log(numberArr.filter(item => item === 3)); // [3, 3]
๐ Sets
// set : ์ค๋ณต๋์ง ์๊ณ ์ ์ผํ ๊ฐ์ ๊ฐ๋๋ก ํ๋ ๋ฐฐ์ด
const setTest = new Set([1, 2, 3, 4, 5, 6, 7, 7, 7, 8]);
> setTest.has(9); // false
> setTest.delete(1);
> setTest // {2, 3, 4, 5, 6, ... }
> setTest.size(); // 9
> setTest.clear();
> setTest // { }
๐ก WeakSet
โช weak set์ ๋ฃ์ objects๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ๊ณณ์ด ์๋ค๋ฉด weak set์ ํด๋น object๋ ์ง์์ง๋ค.
const weakSet = new WeakSet();
const newObj = {
hello: true
};
weakSet.add(newObj);
// ์ฝ์ ์ฐฝ์์ weakSet.add({hello: true}) ์
๋ ฅ ํ
// garbage collector ํ์ฑํ๋ฅผ ์ํค๋ฉด
// {hello: true} ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ณณ์ด ์์ผ๋ฏ๋ก
// weakSet์์ ์ฌ๋ผ์ง๊ฒ ๋๋ค.
๐ข Map and Weakmap
const map = new Map();
> map.set("age", 20)
// { "age" => 20 } : object๋ฅผ ์ฐธ์กฐํ๊ณ ์์
> map.entries()
// MapIterator { "age" => 20 }
> map.has("age")
// true
> map.get("age")
// 20
'JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ JS ] Base64 / Blob / ArrayBuffer / File ๋ค๋ฃจ๊ธฐ (0) | 2022.08.08 |
---|---|
[ JS ] Generators and Maps (0) | 2022.07.06 |
[ JS ] Classes (0) | 2022.07.06 |
[ JS ] Async / Await (0) | 2022.07.06 |
[ JS ] Promises (0) | 2022.07.06 |