-
Notifications
You must be signed in to change notification settings - Fork 809
Open
Labels
Description
Reading this right here, the Factory Pattern section.
// Our default vehicleClass is Car
VehicleFactory.prototype.vehicleClass = Car;
// Our Factory method for creating new Vehicle instances
VehicleFactory.prototype.createVehicle = function ( options ) {
switch(options.vehicleType){
case "car":
this.vehicleClass = Car;
break;
case "truck":
this.vehicleClass = Truck;
break;
//defaults to VehicleFactory.prototype.vehicleClass (Car)
}
return new this.vehicleClass( options );
};
You say that this.vehicleClass
defaults to Car, but in practice, the first time you do it it default to car but every other time it defaults to whatever class you instantiated last. Try making a truck and then a car:
// Create an instance of our factory that makes cars
var carFactory = new VehicleFactory();
var truck = carFactory.createVehicle( {
vehicleType: "truck",
color: "yellow",
doors: 6 } );
var car = carFactory.createVehicle( {
color: "yellow",
doors: 6 } );
// Test to confirm our car was created using the vehicleClass/prototype Car
// Outputs: false
console.log( car instanceof Car );
console.log( car );