공지

2006년 7월 10일 월요일

이상한 나라의 자바스크립트

요즘 한장 DOJO 프레임웤 [각주]http://dojotoolkit.org/[/각주]을 보고 있다........

그래도 남의 코드 보고 베끼는 것은 자신있다고 생각하고 있었는데 아래 같은 코드를 보고 이해가 안되는 ~~~상황 발생...

dojo.render = (function(){
function vscaffold(prefs, names){
var tmp = {
  capable: false,
  support: {
  builtin: false,
  plugin: false
  },
  prefixes: prefs
};
for(var prop in names){
  tmp[prop] = false;
}
return tmp;
}

return {
name: "",
ver: dojo.version,
os: { win: false, linux: false, osx: false },
html: vscaffold(["html"], ["ie", "opera", "khtml", "safari", "moz"]),
svg: vscaffold(["svg"], ["corel", "adobe", "batik"]),
vml: vscaffold(["vml"], ["ie"]),
swf: vscaffold(["Swf", "Flash", "Mm"], ["mm"]),
swt: vscaffold(["Swt"], ["ibm"])
};
})();
잘 정리해서 써보면
dojo.render = ( function(){
나불나불
})();// <== 요것이 머냐? 이해가 안된다.
언듯 보면 render 란 놈을 함수로 만드는 코드 처럼 보인다.
그런데 맨아래 '()' 이넘과 함수 정의를 감싸는 '()' 가 도무지 이해가 안되는 상황... ㅠㅠ
다시 아는 그대로 정리를 해보니

dojo.render = ( 익명함수 ) ();

이런 식이다... ㅠㅠ

결국 render에 익명함수의 실행 결과를 넣으란 이야기....
위의 전문을 보아 하니 대략 render는 객체[각주] 자바스크립트에서 a={  } 는 객체를 의미/참고로 a=[] 는 배열 [/각주]이고 위의 코드는 임시 생성자 인거로 결론을 내렸다.


dojo.render = ( function(){
각종 초기화;
return { 객체 생성부 이 구조가 render에 들어감 };
})()/*앞의 익명 함수를 실행한 결과임*/;

댓글 없음:

댓글 쓰기