理解JS的Object.create功能
Understanding the Object.create function of JS
我创建了一个普通的JS对象
var person1 = {
name:"ABCD"
}
然后创建另一个对象person2 as
var person2 = Object.create(person1)
当我输入时现在在浏览器控制台中
person1 - 它给了我对象定义。
但是当我键入 person2 时 - 虽然 person2.name returns 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);
我创建了一个普通的JS对象
var person1 = {
name:"ABCD"
}
然后创建另一个对象person2 as
var person2 = Object.create(person1)
当我输入时现在在浏览器控制台中
person1 - 它给了我对象定义。 但是当我键入 person2 时 - 虽然 person2.name returns 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);