Javascript子类对象不保留基类的属性/方法

时间:2015-01-08 21:32:15

标签: javascript

function Man(name){
   this.name = name || 'John';
}
Man.prototype.getName = function(){
   return this.name;
}

function Emp(id){
   this.id = id;
}
Emp.prototype = Object.create(Man.prototype);
Emp.prototype.display = function(){
  return this.id;
}

//Testing

var emp = new Emp(100);
emp.id ; // 100
emp.display() //100

然而,

emp.name // undefined
emp.getName() // undefined

emp instanceof Man // true, proves inheritance

为什么emp.nameemp.getName()undefined

1 个答案:

答案 0 :(得分:7)

  

为什么emp.nameemp.getName()undefined

因为您从未将Man应用于新的Emp实例。您还必须在子构造函数中调用父构造函数:

function Emp(id){
   Man.call(this); // call parent constructor
   this.id = id;
}

使用ECMAScript 6课程,您必须致电super

class Emp extends Man {
    constructor(id) {
        super();
        this.id = id;
    }
}