>  기사  >  웹 프론트엔드  >  자바스크립트에서 객체 속성을 삭제하는 방법

자바스크립트에서 객체 속성을 삭제하는 방법

青灯夜游
青灯夜游원래의
2021-05-18 11:52:218333검색

JavaScript에서는 삭제 연산자를 사용하여 객체의 속성을 삭제할 수 있습니다. 피연산자는 속성 액세스 표현식이어야 합니다(예: "var obj={x:1};delete obj.x;"). 삭제 연산자는 상속된 속성이 아닌 자유 속성만 삭제할 수 있습니다.

자바스크립트에서 객체 속성을 삭제하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

delete 연산자는 객체의 속성을 삭제할 수 있습니다. 피연산자는 속성 액세스 표현식이어야 합니다. 놀라운 점은 삭제는 호스트 개체에서 속성의 연결을 끊을 뿐이고 속성의 속성을 작동하지 않는다는 것입니다.

delete book.author; //book不再有属性author
delete book["main title"] //book不会再有属性"main title"

삭제 연산자는 상속된 속성이 아닌 자유 속성만 삭제할 수 있습니다(상속된 속성을 삭제하려면 이를 제거해야 합니다). 정의된 프로토타입 객체의 속성이며 이는 이 프로토타입에서 상속되는 모든 객체에 영향을 미칩니다.
참고:

a={p:{x:1}};
b=a.p;
delete a.p;

이 코드를 실행한 후에도 b.x 값은 여전히 ​​1입니다. 삭제된 속성에 대한 참조가 여전히 존재하기 때문에 JavaScript의 일부 구현에서 이러한 느슨한 코드로 인해 메모리 누수가 발생할 수 있습니다. 따라서 객체를 소멸할 때에는 속성에 있는 속성을 순회하며 하나씩 삭제해야 합니다.

삭제 표현식이 성공적으로 삭제되거나 부작용(예: 존재하지 않는 속성 삭제) 없이 삭제되면 true를 반환합니다. delete가 속성 액세스 표현식이 아닌 경우 delete도 true를 반환합니다.

o = {x:1};
delete o.x; //删除x,返回true。
delete o.x; //什么都没做(x已经不存在了),返回true
delete o.toString; //什么也没做(toString是继承来的),返回true
delete 1; //无意义,返回true

delete는 구성 가능성이 false인 속성을 삭제할 수 없습니다(확장할 수 없는 객체의 구성 가능한 속성은 삭제할 수 있지만). 변수 선언 및 함수 선언을 통해 생성된 전역 객체의 속성과 같은 내장 객체의 일부 속성은 구성할 수 없습니다. 엄격 모드에서 구성할 수 없는 속성을 삭제하면 유형 오류가 발생합니다. 비엄격 모드에서 이러한 경우 삭제 연산자는 false를 반환합니다.

delete Object.prototype; //不能删除,属性是不可配置的
var x = 1;
delete this.x; //不能删除这个全局变量,
function f(){}
delete this.f; //同样也不能删除全局函数

비엄격 모드에서 전역 개체의 구성 가능 항목 및 속성을 삭제할 때 전역 개체에 대한 참조를 생략하고 다음에서 직접 삭제할 수 있습니다. 연산자 뒤에는 삭제할 속성의 이름이 옵니다:

this.x = 1; //创建一个可配置的全局属性(没有用var)
delete x; //将它删除

그러나 엄격 모드에서는 delete 뒤에 잘못된 피연산자(예: x)가 오면 구문 오류가 보고되므로 지정된 객체와 해당 속성이 표시되어야 합니다. :

delete x; //在严格模式下报语法错误
delete this.x; //正常工作

【추천 학습:javascript 고급 튜토리얼

위 내용은 자바스크립트에서 객체 속성을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.