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.name
和emp.getName()
为undefined
答案 0 :(得分:7)
为什么
emp.name
和emp.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;
}
}