【发布时间】:2016-02-06 19:19:25
【问题描述】:
在下面的 Javascript 代码中,我创建了 2 个 Person 实例(p1 和 p2)。
更改p1 的名称时,仅更改p1 的名称(而不是p2 的名称)。这正是我所期望的。
但是当更改p1.sizes.width 然后检查p2.sizes.width 的值时,似乎p1.sizes.width 等于p2.sizes.width。
为什么?
var Person = {
name: '',
sizes: {width: {type:'size', value:undefined}, height: {type:'size', value:undefined}}
}
var p1 = Object.create(Person);
var p2 = Object.create(Person);
p1.name = "Alice";
p2.name = "Bob";
console.log(p1.name === "Alice") // true
console.log(p2.name === "Bob") // true
p1.sizes.width=20;
console.log(p1.sizes.width === 20) // true
console.log(p2.sizes.width === 20) // true (but I would had expected false...?!)
【问题讨论】:
标签: javascript object prototype