LHJ

I'm a FE developer.

10.4 위크셋

18 May 2020 » js_lj

10.4 위크셋

위크셋은 객체만 포함할 수 있으며, 이 객체들은 가비지 콜렉션의 대상이 됩니다.
WeakMap과 마찬가지로 WeakSet도 이터러블이 아니므로 위크셋의 용도는 매우 적습니다.
위크셋의 실제 용도는 주어진 객체가 셋 안에 존재하는지 아닌지를 알아보는 것뿐이라고 해도 과언이아닙니다.

예를 들어 산타 클로스가 naughty라는 WeakSet을 가지고 어떤 아이가 우는 아이인지 확인해서 선물 대신 석탄을 놓고 온다고 합시다.

const naughty = new WeakSet();

const children = [
    {name: "Suzy"},
    {name: "Derek"},
]

naughty.add(children[1]);

for (let child of children) {
    if (naughty.has(child))
        console.log(`Coal for ${child.name}!`);
    else
        console.log(`Presents for ${child.name}!`);
}