javascript - 为什么不打印未定义?

标签 javascript

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/

相关文章:

javascript - 检查日期是否在今天的 X 天以内

javascript - 如何将从 MySQL 检索到的数组列表值设置到 JavaScript 中的文本框中?

javascript - 哪种按钮类型应该用于 HTML 对话框取消按钮?

JavaScript:消除三个 JSHint 错误

javascript - 衡量 JavaScript 性能

javascript - Awesomium 点击标签 C#

宿主函数返回后事件中可用的 JavaScript 局部范围变量。为什么?

javascript - 状态改变后 react 不重新渲染,我如何设置子组件的状态?

javascript - 如何更改 Glyphicon 的颜色?

javascript - 如何打乱 Javascript 数组以确保每个索引都位于新数组中的新位置?