我创建了一个普通的 JS 对象
var person1 = {
name:"ABCD"
}
然后创建另一个对象 person2 为
var person2 = Object.create(person1)
现在在我输入时在浏览器控制台中
person1 - 它给了我对象定义。但是当我键入 person2 时 - 尽管 person2.name 返回 ABCD,但会打印一个空对象(即 {})。
关于这里发生的事情的任何想法。
我创建了一个普通的 JS 对象
var person1 = {
name:"ABCD"
}
然后创建另一个对象 person2 为
var person2 = Object.create(person1)
现在在我输入时在浏览器控制台中
person1 - 它给了我对象定义。但是当我键入 person2 时 - 尽管 person2.name 返回 ABCD,但会打印一个空对象(即 {})。
关于这里发生的事情的任何想法。
person2
是空的,因为您从未分配过它的任何属性;在控制台中,您必须扩展__proto__
属性以获取对象的原型,以查看它继承自什么。
在脚本中(而不是在控制台中)键入代码时,尽管您可以使用它__proto__
来访问原型:
var person1 = {
name:"ABCD"
};
var person2 = Object.create(person1);
console.log(person2.__proto__ === person1);
它已被弃用,最好使用Object.getPrototypeOf
:
var person1 = {
name:"ABCD"
};
var person2 = Object.create(person1);
console.log(Object.getPrototypeOf(person2) === person1);