2013-10-17 3 views
0

기본적으로 내가하고 싶은 일은 매번 목적을 달성 할 때마다 하나의 물건을 비우는 것입니다.
자바 스크립트 배열의 경우 다른 배열을 가리키는 대신 배열을 비우기 위해 arr.length=0을 작성했습니다. 내가 자바 스크립트에서 객체를 비울 수있는 방법이 있습니까?
시나리오는 다음과 같습니다자바 스크립트에서 객체를 비게하는 효율적인 메모리 방법은 무엇입니까?

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

관련 문제