【发布时间】:2019-09-06 15:10:14
【问题描述】:
我正在关注MDN 关于添加属性的指南,这就是我的代码的样子
'use strict';
function Employee() {
this.name = '';
this.dept = 'general';
}
Employee.prototype.specialty = 'none';
function Manager() {
Employee.call(this);
this.reports = [];
}
Manager.prototype = Object.create(Employee.prototype);
Manager.prototype.constructor = Manager;
function WorkerBee() {
Employee.call(this);
this.projects = [];
}
WorkerBee.prototype = Object.create(Employee.prototype);
WorkerBee.prototype.constructor = WorkerBee;
function SalesPerson() {
WorkerBee.call(this);
this.dept = 'sales';
this.quota = 10;
}
SalesPerson.prototype = Object.create(WorkerBee.prototype);
SalesPerson.prototype.constructor = SalesPerson;
function Engineer() {
WorkerBee.call(this);
this.dept = 'engineering';
this.machine = '';
}
Engineer.prototype = Object.create(WorkerBee.prototype);
Engineer.prototype.constructor = Engineer;
let mark = new WorkerBee;
console.log(mark);
mark.name = 'Doe, Mark';
mark.dept = 'admin';
mark.projects = ['navigator'];
console.log(mark);
mark.bonus = 3000;
console.log(mark);
当我运行它时,我没有看到 mark 对象的 specialty 属性。
WorkerBee { name: '', dept: 'general', projects: [] }
WorkerBee { name: 'Doe, Mark', dept: 'admin', projects: [ 'navigator' ] }
WorkerBee {
name: 'Doe, Mark',
dept: 'admin',
projects: [ 'navigator' ],
bonus: 3000 }
我错过了什么?
谢谢
更新
根据@adiga 的回答,我能够在原型链中找到specialty 属性。
【问题讨论】:
标签: javascript inheritance prototype