subclass.prototype = new superclass() vs. subclass = new superclass()

后端 未结 3 991
醉话见心
醉话见心 2020-12-28 23:59

I\'ve been instantiating subclasses in javascript using

object = new class ()

but I notice some people instantiate using

ob         


        
3条回答
  •  感动是毒
    2020-12-29 00:21

    Sharing a quick demo of Javascript inheritance after reading the mozilla doc

    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); // 8
    alert("Mary leave: " + mary.leave); // 8
    
    alert("cannot batch move staff to another department");
    Employee.prototype.dept = "sales";
    alert("Johnny dept: " + johnny.dept); // programming
    alert("Mary dept: " + mary.dept); // programming
    

    Demo in jsfiddle Demo with more debug in jsfiddle

提交回复
热议问题