JavaScript에서 delete 연산자는 객체의 속성이나 getter를 제거할 때 사용합니다. getter를 삭제하려면 delete 키워드 뒤에 삭제할 속성을 지정하기만 하면 됩니다.
getter 삭제 방법
기본적인 사용법은 다음과 같습니다.
delete obj.name
이렇게 하면 객체 obj에 정의된 name 속성(또는 getter)이 삭제됩니다. 삭제 이후 해당 속성에 접근하면 undefined가 반환됩니다.
예제 코드
아래 예제는 getter와 setter를 포함한 객체를 만들고, delete 연산자로 속성을 삭제하는 과정을 보여줍니다. 코드를 직접 실행해 보면서 동작을 확인해 보세요.
<html>
<body>
<script>
var department = {
deptName: "Marketing",
deptZone: "North",
deptID: 101,
get details() {
return "Department Details<br>" + "Name: " + this.deptName + " <br>Zone: " + this.deptZone + "<br>ID: " + this.deptID;
},
set details(info) {
var res = info.toString().split(' ');
this.deptName = res[0] || '';
this.deptZone = res[1] || '';
this.deptID = res[2] || '';
}
}
department.details = 'Marketing North 001';
document.write("<br>Department Name: " + department.deptName);
document.write("<br>Departmet Zone: " + department.deptZone);
document.write("<br>Department ID: " + department.deptID);
delete department.deptName;
document.write("<br>Department Name (after deletion): " + department.deptName);
</script>
</body>
</html>코드 설명
위 예제의 동작 순서를 살펴보면 다음과 같습니다.
1. 객체 정의: department 객체에는 deptName, deptZone, deptID 세 개의 일반 속성이 있고, details라는 이름의 getter와 setter가 함께 정의되어 있습니다.
2. setter 호출: department.details = 'Marketing North 001' 구문이 실행되면 setter가 동작하여 입력값을 공백 기준으로 분리한 뒤 각 속성에 값을 할당합니다.
3. 속성 출력: document.write()를 통해 부서 이름, 지역, ID가 화면에 표시됩니다.
4. 속성 삭제: delete department.deptName; 구문으로 deptName 속성을 삭제합니다. 이후 해당 속성에 접근하면 값 대신 undefined가 출력되는 것을 확인할 수 있습니다.
주의 사항
delete 연산자를 사용할 때는 몇 가지 유의해야 할 점이 있습니다.
- delete는 객체 자체에 직접 정의된 속성만 삭제할 수 있으며, 프로토타입 체인으로 상속받은 속성은 삭제되지 않습니다.
- var, let, const로 선언된 변수나 함수 선언문으로 생성된 전역 함수는 delete로 삭제할 수 없습니다.
- strict 모드('use strict')에서는 삭제할 수 없는 속성에 delete를 사용하면 문법 오류(SyntaxError)가 발생합니다.