함수 프로퍼티를 생성자 함수의 프로토타입에 붙일 수도 있다. 생성자 함수의 프로토타입에 함수를 정의하면 객체 인스턴스를 대량 생성할 때 함수 사본 개수를 한 개로 제한하여 메모리 점유율을 낮추고 성능까지 높이는 추가 이점이 있다.
예제 3-7은 생성자 함수 프로토타입에 함수 프로퍼티를 추가하는 코드다. 각 객체 인스턴스가 함수 구현부를 공유한다는 사실을 알 수 있다.
예제 3-7 생성자 함수 프로토타입에 함수를 추가
소스 파일 3장\New Pattern\newpattern_05.js
function Marsupial(name, nocturnal) { if (!(this instanceof Marsupial)) { throw new Error(“이 객체는 new를 사용하여 생성해야 합니다”); } this.name = name; this.isNocturnal = nocturnal; } // 각 객체는 isAwake 사본 하나를 공유한다. Marsupial.prototype.isAwake = function(isNight) { return isNight === this.isNocturnal; } var maverick = new Marsupial(‘매버릭’, true); var slider = new Marsupial(‘슬라이더’, false); var isNightTime = true; console.log(maverick.isAwake(isNightTime)); // true console.log(slider.isAwake(isNightTime)); // false // 객체들은 isAwake의 단일 인스턴스를 공유한다. console.log(maverick.isAwake === slider.isAwake); // true