我是新来的Javascript,我已经试过这样的:如果我显示object2.a无法更改对象属性值
object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;
然后,它是仍然1而不是2.这是为什么?
谢谢。
我是新来的Javascript,我已经试过这样的:如果我显示object2.a无法更改对象属性值
object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;
然后,它是仍然1而不是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;
好玩:)
试试这个:
var object1 = {};
var object2 = Object.create(object1, {a:{value:1,writable: true}});
object2.a = 2;
这个帖子有关对象的创建模式看一看,你将有一个更好的了解object1之间的差异在你的例子中的object2。 http://www.codeproject.com/Articles/687093/Understanding-JavaScript-Object-Creation-Patterns – buzzsaw