嵌套的Object.defineProperties

时间:2019-04-13 07:29:07

标签: javascript object ecmascript-6

mozilla中的示例为例,这里是Object.defineProperties

的简单案例
const object1 = {};

Object.defineProperties(object1, {
  property1: {
    value: 42,
    writable: true
  },
  property2: {}
});

如果我想做一个嵌套的东西,例如

const object1 = {};

Object.defineProperties(object1, {
  nested: {
    property1: {
      value: 42,
      writable: true
    },
    property2: {}
  }
});

这显然行不通,但希望它能描绘出我想要的内容。

1 个答案:

答案 0 :(得分:3)

defineProperties只能传递要向其添加属性的现有对象,并且只会在该对象上直接 定义属性。为了提前在嵌套属性上调用defineProperties,没有办法提前定义父对象:

const object1 = {nested: {}};

Object.defineProperties(object1.nested, {
  property1: {
    value: 42,
    writable: true,
    enumerable: true
  },
  property2: {
    enumerable: true
  }
});
console.log(object1);