2011-05-16 90 views
1

如果我有一個對象:newbie:如何清理JavaScript中的對象?

var myobj={name: 'Some Value', 
      id: 'my id', 
      address: 'my address' 
      ...} 

myobj已被動態擴展,通過myobj[custom_attribute]=SOME_VALUE

我想清理這個對象擁有空的屬性,這是MyObj中= {},該怎麼辦呢? (我不想使用循環來清理屬性逐個)

回答

4

,所以你要分配MyObj中= {},使之空?請原諒我,如果我讀了你的問題錯了,但在我看來,你想要做

myobj={}; 
+0

謝謝。我只是不太確定,看到我對@SirViver – Leem 2011-05-16 08:53:34

+0

的迴應你可以使用這個。這將工作。 – Nanne 2011-05-16 09:03:04

4

這有什麼錯

myobj = {}; 

myobj = new Object(); 

+0

這也是我暗示的問題,我可以使用myobj = {}嗎?我看到一些人說,即使使用myobj = {},它仍然保留對舊屬性的引用,因爲我是新手,我不確定這一點。感謝任何準確的答案,謝謝:) – Leem 2011-05-16 08:52:19

4

設置MyObj中以空對象,

myobj = {}; 
2

做到這一點的最快/最簡單的方法是:

myobj = {}; 
0

其他的答案是很好,如果你沒有被引用編輯對象。然而,如果你傳遞一個對象到一個函數,並希望原始對象受到影響,以及您可以使用此功能:

function emptyObject(objRef) { 
    for(var key in objRef) { 
     if(objRef.hasOwnProperty(key)) { 
      delete objRef[key]; 
     } 
    } 
} 

這維持了原來的對象引用,也是很好的,你管理一個插件開發作爲參數提供的對象。兩個簡單的例子將展示如何這從簡單地設置等於{}

EX 1的對象的不同:

function setEmptyObject(obj) { 
    obj = {}; 
} 
var a = {"name":"Tom", "site":"http://mymusi.cc"} 
setEmptyObject(a); 
console.log(a); //{"name":"Tom", "site":"http://mymusi.cc"} 
使用emptyObject

EX 2()替代(函數定義如上):

var a = {"name":"Tom", "site":"http://mymusi.cc"} 
emptyObject(a); 
console.log(a); //{}