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

Classical Inheritance in JavaScript : Reassigning the constructor

本文关键字:分配 构造函数 新分配 经典 继承 JavaScript      更新时间:2023-09-26

我正在尝试使用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;

输出保持原样。

我的问题是,重新赋值构造函数的目的是什么
我的问题是,重新赋值构造函数的目的是什么?

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

参见Javascript构造函数属性的意义是什么?