Javascript Inheritance

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#More_flexible_constructors

JavaScript

function Employee (name, dept) {
    this.name = name || "";
    this.dept = dept || "";
}

function Programmer (name, projs) {
    Employee.call(this, name, "programming");
    this.projects = projs || [];
}
Programmer.prototype = new Employee;

// demo dynamic inheritance
Employee.prototype.leave = 10;

var johnny = new Programmer("Johnny", ["C#","Java"]);
alert("name: " + johnny.name + "\n"
      + "dept: " + johnny.dept + "\n"
      + "projects: " + johnny.projects + "\n"
      + "leave: " + johnny.leave);

var mary = new Programmer("Mary", ["Javascript","Java"]);
alert("name: " + mary.name + "\n"
      + "dept: " + mary.dept + "\n"
      + "projects: " + mary.projects + "\n"
      + "leave: " + mary.leave);

alert("changing leave of all staff to 8");
Employee.prototype.leave = 8;
alert("Johnny leave: " + johnny.leave);
alert("Mary leave: " + mary.leave);

alert("cannot batch move staff to another department");
Employee.prototype.dept = "sales";
alert("Johnny dept: " + johnny.dept);
alert("Mary dept: " + mary.dept);