2013-04-26 94 views
0

我有一定的对象,我不得不删除某些特性,即:删除JS对象的属性

objA = { firstAttrA: 'fooA', secondAttrA: 'barA' } 
objB = { firstAttrB: 'fooB', secondAttrB: 'barB' } 

我想在这将删除基础上,firstAttrA和firstAttrB功能通过这些对象以下属性文件:

{ 
    "objA":"firstAttrA", 
    "objB":"firstAttrB" 
} 

的方法必须是稳健的,我需要避免过度循环以及任何影响,因为这基本上将传递的对象的数量表现是伟大的,他们的财产无数​​。

本质上,我想我需要做一个delete objA.firstAttrA; delete objB.firstAttrB;,但由JSON属性文件驱动。

+1

好极了,这是很好的有一个目标。但是,Stackoverflow并不是一个代码编写服务,我们希望你先尝试为自己解决问题,并在问题中展示这种努力(如果你有代码,即使它不工作,那也更好比没有)。目前,这是一个非常广泛的问题,因此您需要将其缩小到您正在努力的特定部分。如果你完全不知道从哪里开始,那也可以,你只需要这样说。 – 2013-04-26 09:59:01

回答

0

那么,如果在全球范围内定义,那么你的方法应该是这样的:

var objRef = { 
    "objA":"firstAttrA", 
    "objB":"firstAttrB" 
}; 
for (var item in objRef) { 
    if (window.hasOwnProperty(item)) { 
     if (window[item].hasOwnProperty(objRef[item])) { 
      delete window[item][objRef[item]]; 
     } 
    } 
} 
+0

我很好奇:为什么'if(window [item] .hasOwnProperty'? – zeroflagL 2013-04-26 10:20:50

+0

@zeroflagL为了避免在不存在的属性上调用delete,并且如果在原型中定义属性,那么它不应该被删除。 – 2013-04-26 11:20:17

+0

It不伤害任何人;) – zeroflagL 2013-04-26 11:21:46