以下是代码,
function Employee() {
this.name = "";
this.dept = "general";
}
function WorkerBee() {
Employee.call(this);
this.projects = [];
}
WorkerBee.prototype = Object.create(Employee.prototype);
var mark = new WorkerBee;
其中MDN说:
来自
mark
中原型对象的name
和dept
属性的mark.__proto__
对象继承值 。projects
构造函数为WorkerBee
属性分配了一个本地值。
根据上面的代码,构造函数WorkerBee
显式调用Employee.call(this);
但不继承mark.__proto__
的值。
行WorkerBee.prototype = Object.create(Employee.prototype);
的存在与为name
对象中的属性dept
和mark
创建本地值无关。
您认为MDN中的声明在继承值时是错误的吗?这些例子和想象力是否需要重新设计?
答案 0 :(得分:1)
在ES 5之前,你会写WorkerBee.prototype = new Employee
,因为没有Object.create
。这句话在某种程度上是正确的。
如果您继续阅读,那么您实际上会看到一个显示旧代码的图表,该代码也会忽略Employee.call(this);
。
所以答案是你是对的,他们忘了更新文章的部分内容。