← Back to NOTES 🌰
← Effective JavaScript 🤿
← 아이템 42 - 무모한 몽키 패칭을 하지 마라
핵심 요약
자바스크립트 객체는 본질적으로 문자열 키와 값을 매핑하는 딕셔너리로 사용할 수 있다. 단순한 데이터 저장을 위해 객체 리터럴({})을 사용하라. 상속이나 프로토타입 오염을 피하기 위해 new Object(), new Array() 또는 사용자 정의 생성자를 사용하지 말고, Object.prototype의 직접적인 인스턴스를 사용하라.
자세한 내용
딕셔너리로서의 객체 장점
- 단순성: 객체 리터럴로 간단한 딕셔너리 생성
- 빠른 접근: 도트 표기법이나 대괄호 표기법으로 직접 접근
- 열거 지원:
for...in 루프로 쉬운 순회
- 유연성: 동적으로 키 추가/제거 가능
프로토타입 오염 문제
- 예상치 못한 프로퍼티: 상속된 메서드가
for...in 루프에 나타남
- 카운트 오류: 프로토타입 메서드도 프로퍼티로 카운트됨
- 사용자 정의 생성자: 프로토타입 메서드가 비즈니스 데이터와 섞임
- 배열 오용: Array를 딕셔너리로 사용 시 비효율적
현대적 대안
- Map 객체: ES6의 Map은 순수 딕셔너리 기능 제공
- Object.create(null): 프로토타입 없는 깨끗한 객체
- WeakMap: 약한 참조로 메모리 누수 방지