无法更改对象属性值

时间:2015-10-13 00:58:28

标签: javascript

我是Javascript的新手,我试过这个:

object1 = {};
object2 = Object.create(object1, {a:{value:1}});
object2.a = 2;

然后如果我显示object2.a,它仍然是1而不是2.为什么会这样?

感谢。

2 个答案:

答案 0 :(得分:2)

因为Object.create()不是您的想法。

请参阅此ECMAScript 5: Object creation and property definition

  

我们可以控制的属性还有三个方面,每个方面都给出一个布尔值:

     
      
  1. writable:控制是否可以分配属性。如果false,则分配尝试将失败。仅适用于数据描述符。
  2.   
  3. enumerable:控制此属性是否会显示在for...in循环中。
  4.   
  5. configurable:控制是否可以删除属性,以及是否可以更改其属性描述符(writable除外)。
  6.         

    如果没有提供,则每个默认为false

所以你需要的是:

var object1 = {};
var object2 = Object.create(object1, {
    a: {
        value: 1,
        writable: true
    },
});
object2.a = 2;

玩得开心:)

答案 1 :(得分:1)