[英]define property array of objects in Javascript
我已经初始化了一个我希望动态添加的对象。 具体来说,我想向这个对象添加对象数组。 我已经尝试了以下但都不起作用..有没有办法正确地做到这一点? 最终输出应该是object1.property1[0].value = 42
和object1.property1[0].writable = false
。
const object1 = {};
Object.defineProperty(object1, 'property1', '' );
object1.property1 = [{value: 42, writable: false}];
const object1 = {};
Object.defineProperty(object1, 'property1', [{value: 42, writable: false}] );
尝试使用描述符参数中的value
属性:
const object1 = {}; Object.defineProperty(object1, 'property1', { value: [{ value: 42, writable: false }] }); console.log(object1.property1[0].value); console.log(object1.property1[0].writable);
对象描述符必须声明如下:
{value: [{value: 42}], writable: false}
const object1 = {}; Object.defineProperty(object1, 'property1', {value: [{value: 42}], writable: false}); console.log(object1.property1[0].value)
由于您指定要向对象添加一组对象,因此此解决方案类似于其他答案,但应演示添加具有多个元素的数组:
const obj = {}; Object.defineProperty(obj, 'property', { value: [{ value: 42, writable: false }, { value: 55, writable: false } ] }); console.log(obj.property[0].value); console.log(obj.property[0].writable); console.log(obj.property[1].value); console.log(obj.property[1].writable);
当然,您的writable
不会做任何事情,因为它将被视为另一个属性。 由于您的property
是一个对象数组(例如[{...},{...}]
),您可能想要做的是迭代该数组并冻结这些对象:
obj.property.forEach(o=>Object.freeze(o))
obj.property[0].value=33; // when frozen you won't be able to update the value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.