
162
6장 객체
확장 가능(extensible) 속성(14.2절)이
false
일 때:
p
는
o
에 존재하지 않고 호출
할 세터 메서드도 없으므로
p
를
o
에 추가해야 하지만,
o
는 확장 불가이므로 새
프로퍼티를 정의할 수 없습니다.
6.4
delete
연산자(4.13.4절)는 객체에서 프로퍼티를 삭제합니다. 피연산자는 프로퍼
티 접근 표현식이어야 합니다. 값을 삭제하는 것이 아니라 프로퍼티 자체를 삭제합
니다.
delete book.author; //
이제
book
에는
author
프로퍼티가
없습니다
.
delete book["main title"]; //
이제는
"main title"
역시
없습니다
.
delete
연산자는 자체 프로퍼티만 삭제할 뿐 상속된 프로퍼티는 삭제하지 않습니
다. 상속된 프로퍼티를 삭제하려면 반드시 해당 프로퍼티를 정의한 프로토타입 객
체에서 삭제해야 합니다. 이렇게 하면 해당 프로토타입을 상속한 객체 전체에 영향
을 미칩니다.
delete
표현식은 삭제에 성공했을 때, 또는 존재하지 않는 프로퍼티 삭제를 시도
하는 등 효과가 없었을 때
true
로 평가됩니다.
delete
는 프로퍼티 접근 표현식이
아닌 표현식을 사용했을 때도 (아무 의미 없지만)
true
로 평가됩니다.
let o
=
{x: 1}; // o ...