자바스크립트 파괴 객체
-
delete
연산자를 사용하여 JavaScript에서 개체 삭제 -
destroy
메서드를 사용하고 JavaScript에서 개체 인스턴스 전달 -
JavaScript를 사용하여 개체 변수 참조를
null
로 설정
JavaScript destroy
메서드는 개체 인스턴스에 액세스할 수 없습니다. 이 예제에서는 사례를 해결하는 두 가지 방법을 볼 수 있습니다.
한 인스턴스에서는 delete
연산자를 소개하고 다음 예제에서는 개체와 해당 인스턴스를 전달하려고 시도합니다. 따라서 객체와 해당 인스턴스가 정의되지 않음
으로 설정되는 방법을 살펴보겠습니다.
delete
연산자를 사용하여 JavaScript에서 개체 삭제
객체는 키-값 쌍으로 여러 속성으로 구성됩니다. 객체를 직접 소멸시키는 기능이 JavaScript에 도입되지 않았기 때문에 속성과 해당 값을 참조에서 제거해야 합니다.
따라서 이 경우 name
속성을 제거하십시오. delete
연산자 사용의 영향을 살펴보겠습니다.
코드 조각:
const Employee = {
name: 'xyz',
id: 1
};
console.log(Employee.name);
delete Employee.name;
console.log(Employee.name);
출력:
나중에 Employee.name
값이 정의되지 않음
으로 시각화될 수 있습니다. 개체는 여전히 id
속성으로 구성됩니다.
해당 속성을 제거하면 객체는 논리적으로 비어 있습니다. 그러나 개체는 메모리에서 제거되지 않습니다.
그러나 그 대상은 과거의 어떤 속성도 가지고 있지 않습니다.
destroy
메서드를 사용하고 JavaScript에서 개체 인스턴스 전달
destroy
메서드를 정의하는 클래스 생성자를 시작합니다. 여기에서 destroy
기능은 작동할 개체와 해당 특정 인스턴스를 가져옵니다.
나중에 개체 속성에 대한 인스턴스를 인스턴스화하고 이 새 인스턴스는 null 또는 사라지도록 작동합니다.
코드 조각:
// Class constructor
var Class = function() {
this.destroy = function(baseObject, refName) {
delete baseObject[refName];
};
};
// instanciate
var store = {'name': 'abc', 'id': 2};
console.log(store.id);
store.id = new Class();
console.log(store.id);
store.id.destroy(store, 'id');
console.log(store.id);
출력:
store.id
에 여전히 new Class()
시작이 있지만 매개변수(객체, 인스턴스)가 destroy
메서드에 전달되기 전에 삭제 작업이 시작되지 않았습니다. 이것이 개체가 null이 되는 경향이 있는 방식입니다.
JavaScript를 사용하여 개체 변수 참조를 null
로 설정
변수가 개체를 가리키고 null
로 설정하면 해당 개체에 액세스할 수 없습니다. 따라서 JavaScript 가비지 수집기는 개체를 삭제합니다.
userName
변수는 다음 코드 예제에서 개체를 가리킵니다. 이제 userName
변수를 통해 개체에 액세스할 수 있습니다.
그러나 userName
변수를 null
로 설정하면 더 이상 개체에 액세스할 수 없습니다. 객체를 삭제하고 메모리를 해제합니다.
암호:
let userName = {id: 1, position: 2} console.log('Before deletion: ', userName);
// Set the object reference to null
userName = null;
// Check if we can reach the object
console.log('After deletion: ', userName);
출력:
Before deletion: Object { id: 1, position: 2 }
After deletion: null