Javascript 함수 질문
글쓴이: doodoo / 작성시간: 금, 2007/07/13 - 5:28오후
드디어 프로그래밍QnA에도 질문을 올릴때도 있군요 ^^;
자바스크립트를 보고 있습니다. 근데 객체 생성에 관련하여 이해할수 없는 함수가 있군요
럭키뷰 이고 이부분만 프리로 풀려 있어요 직접기능을 보고 싶으시면 http://luckyteam.co.uk 가보셔도 되고요
제가 궁금한것은..
function luckyView_createMethodReference(object, methodName) {
var args = arguments;
return function () {
object[methodName].apply(object, arguments, "sssss");
};
};
function luckyView(title, images, start, mapCont, baseuri) {
this.sx = 0;
this.sy = 0;
this.z = start;
this.baseuri = baseuri;
this.images = images;
this.scaleImagePlus = 0;
this.scaleImageMinus = 0;
this.map = 0;
this.mapCont = _el(mapCont);
this.mapImage = 0;
this.help = 0;
this.title = title;
this.lvisim = luckyView_createMethodReference(this, "visim");
this.lunzoom = luckyView_createMethodReference(this, "unzoom");
this.lzoom = luckyView_createMethodReference(this, "zoom");
this.lmap_move = luckyView_createMethodReference(this, "map_move")
};여기 중에 function luckyView(title, images, start, mapCont, baseuri) { 이 부분은
객체 생성자 처럼 보입니다. 맞나요?
그리고 function luckyView_createMethodReference(object, methodName) { 이 부분은
중간에
return function () {
object[methodName].apply(object, arguments, "sssss");
};이렇게 리턴한다고 되어 있습니다. 보통은 리턴은 return function_1(); 처럼 하는것
아닌가요?
Forums:


JavaScript의 객체
JavaScript의 객체 모델은 조금 재미있게 되어 있습니다. 클래스가 없고, 대신 함수로 유사 생성자를 만들어서 사용합니다. 함수 호출 표현식 앞에
new키워드를 붙이면,함수.prototype이라는 원형 객체를 복제한 것을this로 전달해줍니다.return function () { object[methodName].apply(object, arguments, "sssss"); };function(...) { ... }구문은 함수 리터럴입니다. JavaScript에서는 함수가 참조 및 전달 가능한 객체이기 때문에 저런 것이 가능합니다. 저렇게 함수를 반환하는 함수를 고차 함수(higher-order function)라고 하는데 함수형 언어에서는 흔히 쓰는 코드이구요.값으로서의 함수라는 개념이 이상하게 느껴지신다면, C의 함수 포인터나 C++에서의 함수자(functor) 같은 것을 생각하시면 될 듯합니다.
그러면
그러면 luckyView_createMethodReference 함수는 실제로 object[methodName].apply 함수를
실행하는것으로만 이해하면 될까요?
luckyView_createMethodReferen
luckyView_createMethodReference 함수는 실제로 object[methodName].apply 함수를 실행하지 않습니다.
object[methodName].apply 함수를 실행하는 함수를 리턴할 뿐입니다.
object[methodName].apply 함수를 실행하고 싶으면
처럼 해야합니다. 함수 객체는 여러가지 용도가 있겠지만 callback을 위해서 사용하는 경우가 많습니다.
function func(callback) { var s = prompt(""); callback(s);// callback.apply(s) 와 동일 } var methodRef1 = luckyView_createMethodReference(document, write); func(methodRef1); //프롬프트 창이 뜸. Hello 를 입력하면, document.write("Hello") 가 실행됨. var methodRef2 = luckyView_createMethodReference(window, open); func(methodRef2); //프롬프트 창이 뜸. abc.html 를 입력하면, window.open("abc.html") 가 실행됨.뭐 이런 식이지요.
아...조금
아...조금 햇갈리는군요
좀더 이것저것 좀더 알아봐야 하겠군요...ㅠㅠ
뜨아 이글 보니 더
뜨아 이글 보니 더 헷갈리네요...
http://www.ibm.com/developerworks/kr/library/j-cb12196/index.html?ca=drs-kr
이렇게 사용하시는 분들 있으세요?
그냥 기초 내용 부터
그냥 기초 내용 부터 다시 보시는 것이 좋을 것 같습니다.
이쪽에서 유명하신 Douglas Crockford의 강의 비디오가 있습니다.
http://video.yahoo.com/video/play?vid=cccd4aa02a3993ab06e56af731346f78.1710507
----------------------------------------
http://moim.at
http://mkhq.co.kr
----------------------------------------
http://moim.at
http://mkhq.co.kr
아...감사합니다... 시
아...감사합니다...
시작 부분만 잠깐 봤는데...영어네요..ㅠㅠ
열심히 해독은 잘 않되겠지만 ....봐야 하겠네요...
댓글 달기