2013-10-17 60 views
0

基本上我想要做的是,每次使用單個對象後,當我的目的被提供時,它是空的。
對於JavaScript中的數組,我曾經寫arr.length=0以使任何數組爲空,而不是將它指向不同的內存位置。有什麼方法可以通過我可以清空JavaScript中的對象?
方案是:內存有效的方法來使一個對象在JavaScript中爲空?

var obj = {}; 
obj["name"]="Aman"; 
obj["country"]="India"; 
console.log(obj); // output is { name: 'Aman', country: 'India' } 

我可以重用刪除的內容在此之後OBJ對象?如果是的話如何?

+7

JSON是一種數據格式。你正在談論「一個對象」,它沒有任何JSON。 – Quentin

+0

@JoeSimmons - 這不會清空對同一對象的任何其他引用。 – Quentin

+0

@Quentin是的,我同意JSON是一種數據格式,但我的目的是使其爲空。 – agpt

回答

3

我能想到的唯一方法就是循環播放對象並依次刪除每個屬性。

var obj = {}; 
obj["name"]="Aman"; 
obj["country"]="India"; 

for (var prop in obj) { 
    // Possibly with a hasOwnProperty test, depending on how empty you want it to be 
    delete obj[prop]; 
} 

console.log(obj); 

顯然,如果你不處理多個對象的引用,你可以用一個新的引用覆蓋它。

var obj = {}; 
obj["name"]="Aman"; 
obj["country"]="India"; 

obj = {}; 

console.log(obj); 
+3

一定要使用'hasOwnProperty' - 不想刪除任何自定義的原型方法 –

+0

讚賞...謝謝:) – agpt

2
for (var member in myObject) { 
    if (myObject.hasOwnProperty(member)) { 
     delete myObject[member]; 
    } 
} 
+1

一定要使用'hasOwnProperty' - 不想刪除任何自定義的原型方法。 –

0

使用的ECMAScript 6地圖:

var obj = new Map(); 
obj.set("name", "Aman"); 
obj.set("country", "India"); 
obj.clear(); 
+1

我不確定...但它是否支持所有瀏覽器? – agpt

+0

@Aman,還沒有,但我希望有人會調查爲什麼'Map'被添加到規範中 – 4esn0k

相關問題