了解JS的Object.create函数

时间:2019-01-20 08:47:49

标签: javascript browser-console

我创建了一个普通的JS对象

var person1 = {
name:"ABCD"
}

然后创建另一个对象person2作为

var person2 = Object.create(person1)

现在当我键入内容时,在浏览器控制台中

person1-它给了我对象的定义。 但是,当我键入person2时-尽管person2.name返回ABCD,但会打印一个空对象(即{})。

任何关于这里发生的事情的想法。

1 个答案:

答案 0 :(得分:2)

person2为空,因为您从未分配过任何属性;在控制台中,您必须扩展__proto__属性以获取对象的原型,以查看其继承的内容。

enter image description here

在脚本中(而不是在控制台中)键入代码时,尽管可以使用__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);