添加属性,打印对象时不显示

Add property, that doesn't show up when object is printed

本文关键字:显示 对象 打印 属性 添加      更新时间:2023-09-26

我正在循环浏览一个列表,为列表中的每个项目添加一个新字段,如下所示:

for (var i = 0; i < returnList.length; i++) {
    returnList[i].eligible = true;
};

然后,如果我这样做:

for (var i = 0; i < returnList.length; i++) {
    console.log(returnList.eligible);
};

它多次返回"true"。

但是,如果我这样做:

console.log(returnList);

然后它返回(我只举一个对象的例子):

{ _id: 557ff7dab10a9e8029cf9baa,
WGS84:{ longitude: 0.028586996883792574,
 latitude: 51.363584078860356 },
free: false,
approved: true,
organisationName: 'Test Organisation',
__v: 0,
polygonLineCoordinates: [],
organisationLocation: { postCode: 'BR2 6BP' },
opportunities: [],
events: [],
supportAreas: [] }

这显然没有符合条件的元素。我只想知道发生了什么!

亚当

可以定义不可枚举的属性。最简单的解决方案是使用 Object.defineProperty

var obj = {};
obj.someProp = true;
Object.defineProperty(obj, 'eligible', {writable:true});
obj.eligible = true;
console.log(obj.eligible); // logs true
for (var k in obj) {
  console.log(k); // only logs "someProp"
}

var obj = {};
obj.someProp = true;
Object.defineProperty(obj, 'eligible', {writable:true});
obj.eligible = true
document.body.appendChild(document.createElement('pre')).innerHTML = "obj.eligible = "+obj.eligible;
console.log(obj.eligible); // logs true
for (var k in obj) {
  console.log(k); // only logs "someProp"
}
document.body.appendChild(document.createElement('pre')).innerHTML = JSON.stringify(obj)