//-------------------------------------------- // IEmployee Class - Basic employee class //-------------------------------------------- function IEmployee(name, department) { this.IEmployee = this; this.name = name; this.department = department; this.work = function() { alert(this.name + ' is working for 8 hours in the ' + this.department + ' department.'); } } //----------------------------------------------- // IManager - Class inherits from IEmployee //----------------------------------------------- function IManager(name, department) { this.IManager = this; // Call the base constructor. IEmployee.call(this, name, department); this.work = function() { alert(this.name + ' is telling peeps what to do for 6 hours in the ' + this.department + ' department.'); } } IManager.prototype = new IEmployee; //-------------------------------------------------- // ISalesPerson - Class inherits from IEmployee //-------------------------------------------------- function ISalesPerson(name, department, quota) { this.ISalesPerson = this; this.expectedQuota = quota; this.currentQuota = 0; IEmployee.call(this, name, department); this.sell = function(dollarAmount) { if (this.currentQuota < this.expectedQuota) this.currentQuota += dollarAmount; this.IEmployee.work(); alert('Quota: ' + this.currentQuota + ' of ' + this.expectedQuota); } } ISalesPerson.prototype = new IEmployee; //------------------------------------------------------------ // Instantiate each class, demonstrating how they work //------------------------------------------------------------ adam = new IEmployee('Adam', 'Engineering'); adam.work(); bob = new IManager('Bob', 'VP of Development'); bob.work(); john = new ISalesPerson('John', 'Corporate Sales', 5000); john.sell(1000);