簡體   English   中英

在Javascript中定義對象的屬性數組

[英]define property array of objects in Javascript

我已經初始化了一個我希望動態添加的對象。 具體來說,我想向這個對象添加對象數組。 我已經嘗試了以下但都不起作用..有沒有辦法正確地做到這一點? 最終輸出應該是object1.property1[0].value = 42object1.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM