JavaScript에서 함수에 관한 고찰

Prototype 소스를 보던 중 신기한게 있어서 적는다.
노파심에 적지만, 이미 고수분들은 아는 사실일 가능성이 크므로 지루해 하지 않는 조건하에만 읽기 바란다.

우리가 일반적으로 함수를 선언할 때 다음과 같이 선언한다.

function Add(a, b) {
	return a + b;
}

그러면 당연하게도(?) Add형은 function이 된다.

그렇다면.. 이렇게 한다면?

function Add(a, b) {
	return a + b;
}

Add.myvalue = 10;

놀랍게도(?) Add라는 함수가 정상적인 작동을 하면서, myvalue까지 저장하고 있는 것을 볼 수 있다.
즉, function이 object와 같이 동작을 하는 것이다!
그렇다면 Function은 무엇인가?
Function은 보시다시피 앞이 대문자이다. 즉 객체라는것.

그렇다면 Function은 어떻게 사용할까?

var add;
add = Function('a', 'b', 'return a + b');

와 같이 사용할 수 있다. 이렇게 함으로 써, eval()을 사용하지 않고도 동적인 함수를 만들 수 있는데,

var add;
var operator;

operator = '+';

add = Function('a', 'b', 'return a' + operator + 'b');

같은 동적 함수생성이 가능하다.

이런건 eval()을 써도 같은 기능을 하는 것을 만들 수 있지만,
객체라는 차원에서 지원되는게 아닐까 한다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2007/07/18 19:42 2007/07/18 19:42
,
Response
No Trackback , No Comment
RSS :
http://b4you.net/blog/rss/response/121


블로그 이미지

빗소리를 먹는 사람.

- 장현준

Notices

Archives

Authors

  1. 장현준

Recent Trackbacks

  1. 듀얼클러치의 생각 rsvin28's me2DAY 2009

Calendar

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      

Site Stats

Total hits:
158013
Today:
83
Yesterday:
228