자바스크립트에서 객체를 만드는 두가지 방법

Prototype 프로퍼티

프로토타입 체인을 탐색하는 시간이 오래 걸리면 성능에 부정적인 영향을 준다.

성능이 중요한 코드에서 이 탐색시간은 치명적인 문제가 될 수 있다.

가령, 없는 프로퍼티에 접근하고자하면 항상 프로토타입 체인 전체를 탐색하게 된다.

뿐만 아니라, 객체를 순회할때도 프로토타입 체인에 있는 모든 프로퍼티를 탐색하게 된다.

타입 확장 (네이티브 프로토타입의 확장)

Object.prototype을 이용해 내장 객체를 확장시키는 경우가 있는데 이 또한 잘못된 설계중에 하나다.

이 이유는 monkey patching이라고 부르는데 캡슐화를 망친다. 기존 프로토타입을 확장해야하는 유일한 이유는 Array.forEach같이 새로운 Javascript 엔진에 추가된 기능을 대비해 미리 만들어놓은 경우 말고는 없다.

즉, 프로토타입을 이용해 복잡한 코드를 작성하기 전에 반드시 프로토타입 상속 모델을 이해하고

프로토타입 체인과 관련된 성능 문제로 고생하지않으려면 프로토타입 체인이 너무 길지 않도록 항상 주의해야하고 절대로 네이비트 프로토타입을 확장하지 마라

hasOwnProperty