【发布时间】:2021-05-09 09:45:45
【问题描述】:
class Human{
talk(){
return 'talking';
}
}
class SuperHuman extends Human{
constructor(){
super();
this.age = 12;
}
fly(){
return 'flying';
}
}
let me = new Human();
let you = new SuperHuman();
you.gender = 'male';
console.log(you);
let she = Object.create(you);
console.log(she);
在研究原型继承时,she(object) proto 看起来像这样。
但我的期望是它应该看起来像这样......
为什么会这样显示?
【问题讨论】:
-
嗨!请将代码、错误消息、标记和其他文本信息作为文本发布,而不是作为文本的图片。为什么:meta.stackoverflow.com/q/285551/157247
-
老实说,我也觉得这很令人困惑。不知道为什么 Chrome 开发工具选择在那里显示
.__proto__.constructor.name。 -
@JonasWilms - 它显示(松散地说)
__proto__所指的对象的 type 或种类。 -
@t.j。是的,但实际上这是层次结构中的下一个对象。我希望任何查看该层次结构的人都熟悉原型链,这种“类型”更像是类思维。我认为 devtools 在这里以一种令人困惑的方式混合了两个概念。
-
@JonasWilms - 哦,我同意这很令人困惑——当然我不止一次被它困惑过。 :-) 另外,他们真的不应该使用
__proto__,他们的意思是[[Prototype]]。 :-)
标签: javascript inheritance ecmascript-6 properties v8