正在经历Mozilla's Reference并遇到了这种简单的关系。
function Employee() {
this.name = "";
this.dept = "general";
}
function Manager() {
Employee.call(this);
this.reports = [];
}
Manager.prototype = Object.create(Employee.prototype);
显然,这形成了从Employee到Manager的类似继承的关系。
这里有两个问题,不确定Employee.call(this);
是什么以及为什么
而不是将对象分配给Employee.prototype
,而是将其分配给Manager.prototype
。我的想法是,Manager是继承自Employee,而不是相反。也许这就是原型链的概念,它实际上意味着两个对象都可以相互抓取属性?
想要澄清一下。
答案 0 :(得分:2)
Employee.call(this)
就像调用Employee()
一样,但不是用它来创建新对象,而是修改当前的Manager
。在此示例中,它在name
。dept
和Manager
本声明:
Manager.prototype = Object.create(Employee.prototype);
表示Employee.prototype.x = val
中也可以使用Manager.prototype
之类的任何属性。但是如果你在Manager.prototype
中覆盖它们,它们将被覆盖
您还应该运行Manager.prototype.constructor = Manager
以使该属性正确。