JavaScript中的经典继承:重新分配构造函数

时间:2015-06-01 07:23:37

标签: javascript

我正在尝试使用prototype关键字在JavaScript中学习继承。

我在一个网站上找到了一个代码,它解释了我在JavaScript中的经典继承。 我正在使用Mozilla Rhino进行命令行javaScript

这是我的代码

    var fn55 = function(){

    var Employee = function(name){

        var name = name;

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

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

    var ContractEmp = function(name,sal){
        var salary = sal;

        this.getSalary = function(){
            return salary;
        }
        //calling super constructor
        Employee.apply(this,[name]);            
    };
    ContractEmp.prototype = new Employee();
    ContractEmp.prototype.constructor = ContractEmp;


    var emp1 = new ContractEmp("Jack",3000);
    var emp2 = new ContractEmp("John",4000);
    print(emp1.getName());
    print(emp2.getName());
    print(emp1.getName());

    Employee.prototype.getInfo = function(){
        return "Emp Name \""+this.getName()+"\" Salary "+this.getSalary();
    }

    print(emp1.getInfo());
};

fn55();

输出

Jack
John
Jack
Emp Name "Jack" Salary 3000

现在,如果我在代码中注释一行

//ContractEmp.prototype.constructor = ContractEmp;

输出保持不变。

所以我的问题是,重新分配构造函数

的目的是什么

1 个答案:

答案 0 :(得分:0)

  

所以我的问题是,重新分配构造函数

的目的是什么

唯一目的是将constructor重置为原始值。

另见What it the significance of the Javascript constructor property?