JavaScript Factory
by Dan Wahlin
JavaScript
var person = function() {
if (person.caller != personFactory.create) {
throw new Error("There is no public constructor for person.");
}
};
person.base = {
firstName: '',
lastName: '',
type: 'Customer',
getFullName: function() {
return this.firstName + ' ' + this.lastName;
}
};
var personFactory = {
create: function(type, firstName, lastName) {
var per = Object.create(person.base);
per.firstName = firstName;
per.lastName = lastName;
if (type === 'Manager') {
var mgr = Object.create(per);
mgr.type = 'Manager';
mgr.employees = 50;
return mgr;
}
return per;
}
};
var p = personFactory.create('Customer', 'John', 'Doe');
alert(p.type);
alert(p.getFullName());
//This will fail
var p2 = new person();
alert(p2);