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 중국어 웹사이트의 기타 관련 기사를 참조하세요!