【发布时间】:2016-06-29 19:47:30
【问题描述】:
Mozilla 开发中心说:
最好不要在对象中添加、修改或删除属性 在迭代期间,当前访问的属性除外; 无法保证是否会访问添加的属性,
但是,直到以后我才需要访问添加的属性。那么添加它们是否安全?
例如
var animals = {"cats":25, "dogs":15}
for(var key in animals){
if(key.substring(0,3) !=="big"){ // no danger of referencing them
var newAnimal = "big" + key;
animals[newAnimal] =0;
}
}
或者增加对象的大小会混淆“for - in”迭代?
【问题讨论】:
-
您要为每个现有属性添加
'big'前缀吗? -
如果你遍历
Object.keys(animals)返回的数组,你可以百分之一百地确定你新添加的属性不会被访问。顺便说一句,there's no such thing as a JSON object. -
@RomanPerekhrest - 不,这只是一个简单的版本,实际对象包含游戏角色的详细信息。这些人中的许多人都离开了。该代码找到面向左侧的对象并使用面向右侧的数据创建类似的对象。然后游戏只从同一个集合中调用“左”或“右”(或顶部、底部等)。我发现这比在运行时不断改变方向要简单得多。
标签: javascript json object iteration