我是Javascript的新手,我试过这个:
object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;
然后如果我显示object2.a,它仍然是1而不是2.为什么会这样?
感谢。
答案 0 :(得分:2)
因为Object.create()
不是您的想法。
请参阅此ECMAScript 5: Object creation and property definition
我们可以控制的属性还有三个方面,每个方面都给出一个布尔值:
writable
:控制是否可以分配属性。如果false
,则分配尝试将失败。仅适用于数据描述符。enumerable
:控制此属性是否会显示在for...in
循环中。- 醇>
configurable
:控制是否可以删除属性,以及是否可以更改其属性描述符(writable
除外)。如果没有提供,则每个默认为
false
。
所以你需要的是:
var object1 = {};
var object2 = Object.create(object1, {
a: {
value: 1,
writable: true
},
});
object2.a = 2;
玩得开心:)
答案 1 :(得分:1)