골때리는 자바스크립트의 세계 2탄

오늘은 쓰잘데기는 없지만 이런 기능도 하는구나 하는 팁을 내놓았습니다.

JS도 delete문이 있다는거. 네. 있죠. 아시죠? 네. 있습니다.

뭐.. 일단 delete는 해당 변수를 삭제하는 용도로 주로 쓰입니다.

C언어에서는 클래스를 삭제하는 등등 뭐 여러가지로 잘도 쓰이죠.

하지만 JS에서는 그닥 delete문은 쓰잘데기 없습니다.

이 문법 자체가 쓰잘대기 없기때문에 쓸데없는 팁이라 머릿말에 붙였습니다…

………….ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

뭐 어쨌든, 기본적인 사용예제입니다.

var a=document.getElementsByTagName(‘div’);

for(i=0;i<a.length;i++){

    a.style.backgroundColor=’green’;

}

delete a;

a를 통해 div 태그를 모조리 뽑아온 다음 모조리 배경색을 초록으로 바꾸고 그변수를 버립니다.

물론 그 이후 a를 출력시키면 undefined로 나오죠.

뭐.. 객체 자체를 삭제할 수는 있지만 객체 안의 멤버를 삭제할 수는 없습니다.

delete a.member;

이래봐야 결과값은 각설이처럼 죽지도 않고 또출력되네~ 입니다.

하지만 a의 동적 멤버, 즉, 프로토타입은 delete문으로 지울 수 있습니다.

delete Integer.prototype.toUnsigned;

물론 객체 자체를 삭제해야 하기 때문에 괄호를 붙이면 안되겠죠.

그렇다고 객체 자체가 삭제되지는 않으니 안심하세요.

어쨌든 이렇게 되면 잠시동안 프로토타입을 선언한 후 쓰다가 지울 수 있는 괴기한 스크립트를 만들 수 있겠습니다.

Object.prototype.extend=function(obj){

      for(var x in obj)

          this[x]=obj[x];

      return this;

}

var ob={a:’가’,b:’나’,c:function(){return ‘다’;},d:4};

ob=ob.extend({e:5,f:’라마바’,g:(function(ret){return ret;})(‘사아자차카타파하’)});

delete Object.prototype.extend;

사실.. 이 팁의 목적은 prototype 멤버를 delete로 삭제할 수 있다는 걸 알려주는것 뿐입니다.

쩝.. 어쨌든, JS의 꽃인 프로토타입. 클로저때문에 햇갈리시죠? 햇갈리죠..네..

아마 골때리는 자바스크립트 3탄의 희생양은 클로저가 될지도 모르겠군요.

License : Public Domain

composite / 2010년 12월 13일 / 미분류

답글 남기기

Your email address will not be published / Required fields are marked *