자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있다.
Set은 값 컬렉션으로, 삽입 순서대로 요소를 순회할 수 있다. Set 내 값은 한 번만 나타날 수 있다. 즉, Set에는 중복이 없다! 유일하다!
NaN, undefined 도 저장 가능하다. NaN !== NaN 이지만 Set에서는 같은 것으로 간주! 근데 NaN은 그런데 왜 배열은?
자바스크립트 내장객체이다.
let obj = {};
m.set(obj, ‘123’);
obj = null;
하면 일반 Map으로 이루어졌다면 obj 는 가비지 컬렉팅이 되지 않는다 m때문에
근데? weakMap은 된다 ..
앞으로 키-값 갖는건 Map을 쓰는걸로 !! set , clear, delete
수정하면 안되는 불변 객체로 써야할 때 .. 부가적인 정보가 필요할 때 쓴다 새 객체 만들어서 하는건 지저분하니까 waekMap 사용하면 된다는데 굳이? 이딴거 볼 바에 Set, Map 공부나 하자 .. 가 내 결론임 ㅎ
약하게 유지되는 객체를 컬렉션에 저장할 수 있다.
Set과 다른점은 객체만의 컬렉션이다.
음 .. 쓸 곳 없음 쓸모 없음 스지마셈
결론적으로 WeakMap, WeakSet은 쓰지말자 그냥 있는 객체랑 Map, Set 나 잘 사용하자! 애초에 자바스크립트가 자동으로 가비지컬렉팅 하도록 되어있고 자바스크립트 개발자는 메모리 관리를 신경쓰지 않고 코딩을 할 수 있는게 장점인것이다. 그런데 그렇게 만들어진 언어를 가지고 왜 메모리 영역을 신경써가면서 해야돼? 의도와는 전혀 맞지않음 그래서 사용안할거고
typeof연산자는 피연산자의 평가 전 자료형을 나타내는 문자열을 반환한다.
Map, Set, 등 object로 출력이 되어 구분에 제한이 있다.
생성자의 prototype 속성이 객체의 프로토타입 체인 어딘가 존재하는지 판별한다. a instanceof b 하면 a의 프로토타입 체인 어딘가에 b 프로토타입 속성이 있는지 확인한다. 쉽게말하면 a 타입이 b인지?
object instanceof constructor
instanceof 연산자는 obejct의 프로토타입 체인에 constructor.prototype 이 존재하는지 판별한다.