// Car 생성자 함수의 프로토타입 객체는 new 연산자와 Object 생성자 함수 호출을 통해 생성된 객체이며
// 프로토타입 객체에 constructor 프로퍼티는 자동으로 Car 생성자 함수를 참조한다.
var Car = function(){};
Car.prototype = {
startEngine : function(){
document.writeln('시동을 겁니다.
');
},
accelerate : function(){
document.writeln('속도를 올립니다.
');
},
decelerate : function(){
document.writeln('속도를 줄입니다.
');
},
stopEngine : function(){
document.writeln('시동을 끕니다.
');
}
};
// Bus 생성자 함수의 프로토타입 객체는 new 연산자와 Object 생성자 함수 호출을 통해 생성된 객체이며,
// 프로토타입 객체에 constructor 프로퍼티는 자동으로 Bus 생성자 함수를 참조합니다.
var Bus = function(){};
// Bus() 생성자 함수의 prototype 프로퍼티가 new 연산자와 Car() 생성자 함수 호출을 통해 생성된 객체를 참조하면
// Car() 생성자 함수의 프로토타입 멤버를 상속하게 됩니다.
Bus.prototype = new Car();
// 프로토타입 객체가 Car() 생성자 함수를 통해 만들어졌기 때문에 constructor 프로퍼티는
// Car() 생성자 함수를 참조하게 됩니다. 따라서 constructor 프로퍼티를 Bus() 생성자 함수로 변경합니다.
Bus.prototype.constructor = Bus;
Bus.prototype.startNavigation = function(){
document.writeln('네비게이션 안내를 시작합니다.
');
};
Bus.prototype.stopNavigation = function(){
document.writeln('네비게이션 안내를 종료합니다.
');
};
var bus = new Bus();
bus.startEngine();
bus.startNavigation();
bus.accelerate();
bus.decelerate();
bus.stopNavigation();
bus.startEngine();
/*
result :
시동을 겁니다.
네비게이션 안내를 시작합니다.
속도를 올립니다.
속도를 줄입니다.
네비게이션 안내를 종료합니다.
시동을 겁니다.
*/