object.create(parentObject)
之间有什么区别,只是将父对象分配给子对象,如下所示:
var child = Object.create(parent);
var child2 = parent;
他们似乎对我做同样的事情。 完整代码供参考:
var parent = {
get: function fn() {
return this.val;
},
val: 42
};
var child = Object.create(parent);
var child2 = parent;
parent.val = 67;
alert(parent.val); //outputs 67
alert(child.val); //outputs 67
alert(child2.val); //outputs 67

答案 0 :(得分:1)
Object.create(parent)
创建一个 new 对象,其原型为parent
。
分配不会创建新对象,child2
和parent
都会引用同一个对象。
仅在尝试访问对象中不存在的属性时才使用原型。
在下面的示例中,分配给child2.val2
更改parent.val2
,因为它们是同一个对象。但是,分配到child.val2
对parent
没有影响,因为它们是不同的对象。由于child
具有自己的val2
属性,因此它不会从父级继承此属性。
var parent = {
val2: 1
};
var child = Object.create(parent);
var child2 = parent;
child.val2 = 2;
child2.val2 = 3;
console.log(parent.val2); //outputs 3
console.log(child.val2); //outputs 2
console.log(child2.val2); //outputs 3