javascript 삭제 예시
var flower={};
flower.name="oop";
delete flower.name; //true
alert(flower.name); //정의되지 않음
flower
Flower에 값이 "oop"인 멤버 이름이 있습니다.
삭제 작업으로 이 멤버가 삭제됩니다.
삭제가 완료되었으며 flower.name 멤버가 더 이상 존재하지 않습니다.
javascript 삭제 예 2
alert(isNaN(5)) //false
delete isNaN; //true
alert(isNaN(5)); //정의되지 않음
삭제 연산자는 전역 개체의 멤버도 삭제할 수 있습니다.
은 var에 의해 선언된 변수를 삭제할 수 없습니다.
var flower="monkey"; >delete flower; //false
alert( flower); // "monkey"
var로 선언된 변수는 삭제 후에도 false를 반환합니다.
참고: 삭제는 삭제할 수 없는 구성원만 삭제합니다. 예, false를 반환합니다.
호스트 개체 아래의 변수는 IE 브라우저에서 삭제할 수 없습니다.
window.flower="monkey";
delete flower; //예외 발생
alert(flower) ;
ff에서 찾아보기
window.flower="monkey";
delete flower; //true
alert(flower) //undefine
멤버를 볼 수 있을 때 삭제 창에서 브라우저가 일관되지 않게 동작합니다
Window는 javascript의 호스트 객체입니다
호스트 객체는 JavaScript 실행 환경에 의해 정의될 수 있습니다
IE6-8 브라우저에서는 window.flower를 삭제할 수 없습니다. 브라우저는 "해당 개체가 이 작업을 지원하지 않습니다"라는 메시지를 표시합니다. 즉, window 아래의 멤버는 삭제할 수 없습니다.
함수 이름으로 선언된 함수는 삭제할 수 없습니다
function flower( ){}
delete flower //true
alert(flower; );//undefine
결과는 delete가 함수 이름
으로 선언된 함수를 삭제할 수 없다는 것을 보여줍니다. 프로토타입
의 Members에서 상속된 함수를 삭제할 수 없습니다.
function flower(){}
flower.prototype.name="monkey" ";
var a1=new flower();
a1.name="a1_monkey"
alert(a1.name);//"a1_monkey"
delete a1.name;//ture
alert(a1.name);//"monkey"
a1은 flower의 인스턴스입니다. 인스턴스를 통해 프로토타입과 상위 클래스의 멤버를 삭제하는 것은 불가능합니다~
이 속성을 삭제해야 합니다("여기서 이름을 예로 들어"). 프로토타입만 조작할 수 있습니다.
delete a1.constructor.prototype.name;
DontDelete 속성 삭제는 DontDelete 속성이 있는 멤버를 삭제할 수 없습니다.
그러면 DontDelete 속성을 가진 멤버는 무엇인가요?
예를 들어 var로 선언된 변수, 함수 이름으로 선언된 함수, Function 객체의 길이 등은 DontDelete 속성을 가진 멤버가 거의 없습니다.
delete return 값 false 또는 true
delete는 삭제할 수 없는 멤버를 삭제할 때만 false를 반환합니다
. 다른 경우에는 존재하지 않는 멤버를 삭제하거나 성공적으로 삭제하면 true가 반환됩니다.
true입니다. 반드시 삭제가 성공했다는 의미는 아닙니다.
예를 들어, 코드 실행 경고(delete a); // true
a는 존재하지 않는 선언되지 않은 변수입니다. delete는 여전히 true를 반환합니다.
브라우저 간 차이점
(function(){
delete 인수; // false , Mozilla에서는 true
typeofargs; // "object"
})()
var가 선언한 변수를 영리하게 eval을 사용하여 삭제
코드 복사 코드는 다음과 같습니다.
eval('var flower = 1');
alert(window.flower) //1
alert(flower)// 1
delete flower; Alert(flower); // "정의되지 않음"
var a=function(){};
eval('var a = function(){}')
delete a; >alert(a); // "정의되지 않음"
eval 뒤의 전역 변수에는 DontDelete 기능이 없으며 eval로 삭제할 수 있습니다.
마지막으로 마법 같은 것을 추가하세요~ 침대로 테스트할 때
window.flower=1;
delete flower 개체는 이 작업을 지원하지 않습니다
with(window){flower=1};를 사용한 다음 flower를 삭제할 수 있습니다(delete라는 것을 기억하세요). flower, window.flower 삭제 아님, IE에서는 허용하지 않습니다)
이렇게 하면 window.flower가 삭제됩니다 :)
JavaScript 삭제 연산자 적용 예시