Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的经典继承:重新分配构造函数_Javascript - Fatal编程技术网

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

JavaScript中的经典继承:重新分配构造函数,javascript,Javascript,我正在尝试使用prototype关键字学习JavaScript中的继承 我在一个网站上看到一段代码,解释了JavaScript中的经典继承。 我将Mozilla Rhino用于命令行javaScript 这是我的密码 var fn55 = function(){ var Employee = function(name){ var name = name; this.getName = function(){ retu

我正在尝试使用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;
输出保持原样

我的问题是,重新分配构造函数的目的是什么

我的问题是,重新分配构造函数的目的是什么

唯一的目的是将
构造函数
重置为其原始值


另请参见

我认为这是由于一些古老的IE行为,从未重新分配构造函数,也从未咬过我:-)没有必要将构造函数分配给原型对象,但在某些情况下它会有所帮助。然后可以使用
myObject.constructor
在运行时访问对象的构造函数。