less than 1 minute read

  • 프로토타입에 직접 접근 시 모던 메서드 사용 가능

  • proto 는 Object.prototype 의 접근자 프로퍼티

  • obj.proto 읽거나 쓸때 이에 대응하는 getter, setter 가 프로토타입에서 호출되고 [[Prototype]] 가져오거나 설정됨

  • 사용자가 키를 직접 만들 수 있게 허용 시 키가 proto 이면 에러 발생. 보안 문제 생길 수 있음(프로토타입 값에 따라 예측 불가능한 결과 생김)

  • 보안 문제로 인하여 proto 사용으로 프로토타입 설정은 구식이 되고 create 같은 메서드 생겨남

  • Object.create(proto, [descriptors]) : [[prototype]] 이 proto인 객체 생성. 참조값은 null 일 수 있꼬 [descriptors] 는 프로퍼티 설명자 받음

  • Object.getPrototypeOf(obj) : obj의 [[prototype]] 반환. (proto getter 와 동일)

  • Object.setPrototypeOf(obj,proto) : obj의 [[prototype]] 을 proto로 설정 (proto setter 와 동일)

  • 직접 키 접근 방지하기 위해 Object.create(null) 사용해 proto getter, setter 상속없는 단순한 객체 만들어서 ‘순수 사전’ 처럼 사용하거나 맵을 일관되게 사용하는 것이 좋음

  • object.create 사용 시 객체 얕은 복사본 만듦

  • 객체의 프로퍼티를 반환하는 메서드들은 객체가 ‘직접’ 소유한 프로퍼티만 반환하며 상속 프로퍼티는 for…in 으로 사용 가능.