首页 > 解决方案 > 为什么不打印未定义?

问题描述

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 属性?

请提出好的参考资料来理解这一点。

标签: javascript

解决方案


因为“人”是“我”对象的原型。如果在对象上找不到属性(因为删除),JS 正在查找该属性的原型链。这就是为什么你得到“乔恩”。

参考:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain


推荐阅读