function Employee(name, dept) {
this.name = name || "";
this.dept = dept || "general";
}
function WorkerBee(projs) {
this.projects = projs || [];
}
WorkerBee.prototype = Object.create( Employee.prototype );
function Engineer(mach) {
this.dept = "engineering";
this.mach = mach || "";
}
Engineer.prototype = Object.create(WorkerBee.prototype);
var jane = new Engineer("belau");
console.log( 'projects' in jane );
尝试检查jane
是否继承了projects
属性。
输出false
。为什么呢?
答案 0 :(得分:3)
输出
false
。为什么呢?
因为this.projects
设置在WorkerBee
内,但该函数永远不会执行。
这与上一个问题中的问题相同:JavaScript inheritance Object.create() not working as expected
答案 1 :(得分:1)
如果您正在测试对象本身的属性(不是其原型链的一部分),您可以使用.hasOwnProperty():
if (x.hasOwnProperty('y')) {
// ......
}
对象或其原型具有属性:
您可以使用in运算符来测试继承的属性。
if ('y' in x) {
// ......
}