낮에 delete function 에 대해 궁금한 사항을 올린 적이 있는데...
시험을 해봤다... (귀차니즘 타파!)

...

<script>
var a=new Array(), b, c;

b=a[0]=function() { alert(0); }
c=a[1]=function() { alert(1); }

delete a[0];

if (b) b();
if (c) c();
</script>

...

해보니... function 자체가 "복사되는" 형태로 스며들었기 때문에
b 와 c 모두 실행이 되었다.

결국... function 선언은 object 를 만들고,
b 와 c 는 object 통째로 복사하는 형태가 된 것.

그리고, delete 는 element 항목...을 삭제하는 역할.
*참고* var ... 로 선언한 경우, ... 글쎄... document[...] 의 형태라고 봐야하나...

...

혹시나...싶어서 거꾸로도 해봤다.

...

<script>
var a=new Array(), b, c;

b=a[0]=function() { alert(0); }
c=a[1]=function() { alert(1); }

delete b;

if (a[0]) a[0]();
if (a[1]) a[1]();
</script>

...

역시 결과는 마찬가지...
물론, b 로 받아서 a[0] 에게 넘겨준 형태는 아니지만,
각각이 하나를 통째로 받아들이는 형태가 된 것은 확실하다.

... 그건 그렇고...
function 내부에 있는 것을 바꾸려 한다면... object 를 다시 공부해야하나...?

NowMark killofki@.


Posted by killofki
,