객체 생성시 부모의 프로토타입을 자식의 프로토타입에 할당하는 방식이다. 생성된 객체에 hasOwnProperty 검사시 false가 출력된다. 프로퍼티는 본인의 것이 아니라 __proto__에 링크되어 있기 때문이다.
#2. 생성자 함수 빌려쓰기
다음 예제는 생성자 함수를 빌려서 객체에 hasOwnProperty를 만드는 것을 설명한다. 이 짓을 하는 이유는 프로퍼티의 값 변경이 체이닝되어있는 인스턴스에 영향을 주지 않기 위해서이다. 프로토타입 체인으로 연결되었을 경우 프로퍼티 값이 변경되면 자신의 것이 아니라 체이닝된 인스턴스의 프로퍼티에 영향을 준다. 하지만 hasOwnProperty일 경우 프로퍼티 값을 변경해도 연결된 인스턴스에 영향을 미치지 않는다.
#3. 생성자 빌려쓰고 프로토타입 지정해주기
다음의 예제는 새로 생성할 객체에 hasOwnProperty를 만들면서 체인을 연결하는 것이다. 생성자 함수에서 this로 선언되지 않은 것은 상속되지 않기 때문에 이짓을 한다.
#4. 프로토타입 공유
원칙적으로 재사용할 멤버는 생성자 함수의 this가 아니라 프로토타입에 추가되어야 한다. 프로토타입을 공유하는 패턴은 이런면에서 유용하다. 하지만 자식이나 손자가 프로토타입을 수정할 수 있게 된다.
a.prototype.say = function () {} 식으로 재정의 할 수 있기 때문이다. 이 다음에 볼 예제는 그것을 막아준다. a.__proto__는 접근이 되지 않기 때문이다.
#5. 임시 생성자
프로토타입 체인을 거는데 프록시를 하나 만들어서 수정될 위험을 피하는 방법이다. 프로퍼티를 복사하지는 않는다. 위에서 말한대로 a.__proto__에는 접근할 수 없기 때문이다.
클로저를 이용하여 임시 생성자 함수 다시 쓰기
프로퍼티 복사: 생성자 함수에 this로 정의된 것들은 객체생성시 복사되어 hasOwnProperty다.