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 属性?
请提出好的参考资料来理解这一点。
解决方案
因为“人”是“我”对象的原型。如果在对象上找不到属性(因为删除),JS 正在查找该属性的原型链。这就是为什么你得到“乔恩”。
参考:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
推荐阅读
- c++ - C ++将向量传递给已经传递的函数
- python - conda环境python2.7 tensorflow导入报错
- php - 在我的 OpenCart 3.0.3.3 中出现问题。第 69 行 developer.php 中的目录不为空
- .net - Windows 身份验证未提示
- javascript - 如何切换 .setAttribute?
- c++ - 使用时遇到大数问题
cpp 较大 - reactjs - React hook 如何避免无限更新
- php - 降级到 PHP 5.3
- react-native - React.createElement:类型无效,应为字符串
- sql-server - 将记录合二为一?