const person = {
isHuman: false,
name:"Jon",
printIntroduction: function() {
console.log(this.name);
}
};
const me = Object.create(person);
me.name = 'Matthew';
me.isHuman = true;
delete me.name
me.printIntroduction();
输出:“乔恩”
当我删除“me”对象的 name 属性时,为什么它指向 person 对象的 name 属性?
请推荐好的引用 Material 来理解这一点。
最佳答案
因为“人”是“我”对象的原型(prototype)。如果在对象上找不到某个属性(因为删除),JS 就会在原型(prototype)链中查找该属性。这就是为什么你会得到“Jon”。
引用:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
关于javascript - 为什么不打印未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69821541/