Link to home
Start Free TrialLog in
Avatar of jecommera
jecommeraFlag for United Kingdom of Great Britain and Northern Ireland

asked on

please look at my code and advise if I could do this better (extending objects)

The question is:

Using JavaScript prototyping, extend the Employee (Exercise 4). Create two
new subclasses from the Employee: a Salesman and a Manager class. Use a prototype
to create a salary property for the new employees (setSalary, getSalary),
and a setRaise() method to add 15 percent to the salary. Check to see if each of
the new Employees is an instance of the Employee class.

<script type="text/javascript">
function Employee(){
var = name;
this.getName = function(){
return this.name;
}
this.setName = function(name){
this.name = name;
};
}

My answer is:

<html>
<head><title>Object object</title>
<script type="text/javascript">
function Employee(){
var name;

this.getName = function(){
      return this.name;
      }

this.setName = function(name){
      this.name = name;
}

}

function Salesman() {}
Salesman.prototype = new Employee();
Salesman.prototype.constructor = Salesman;
Salesman.prototype.setSalary = function(salary) {
      this.salary = salary;
}
Salesman.prototype.getSalary = function() {
      return this.salary;
}
Salesman.prototype.setRaise = function() {
      return (this.salary+(this.salary*0.15));
}

function Manager() {}
Manager.prototype = new Employee();
Manager.prototype.constructor = Salesman;
Manager.prototype.setSalary = function(salary) {
      this.salary = salary;
}
Manager.prototype.getSalary = function() {
      return this.salary;
}
Manager.prototype.setRaise = function() {
      return (this.salary+(this.salary*0.15));
}



</script>
</head>
<body bgColor="#EOFFFF">
<script type="text/javascript">


sm1 = new Salesman();
sm1.setSalary(10000);
alert("The raise will be "+sm1.setRaise());

mr1 = new Manager();
mr1.setSalary(134320);
alert("The raise will be "+mr1.setRaise());

if (mr1 instanceof Manager)
{
      alert('correct');
}
if (mr1 instanceof Salesman)
{
      alert('correct');
}
else alert('false');
</script>
</body>
</html>

which works fine - I am just wondering if there is a better (neater and shorter) way I could write this code.

thanks
Avatar of Gurvinder Pal Singh
Gurvinder Pal Singh
Flag of India image

Given that it works for you, only way I could think of is to put each class in a different file and include those files in your header tag
ASKER CERTIFIED SOLUTION
Avatar of jjperezaguinaga
jjperezaguinaga
Flag of Mexico image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial