코드/JS

제이쿼리 여러 함수 플러그인 작성

Yeah-Panda 2013. 8. 23. 19:00

<script type="text/javascript">

$(document).ready(function()

{

$('#root').magic("init",'AAA','BBB', 'CCC');

});

</script>



/*-------------- .js * /


(function($)

{

var myMagic = 

{

init : function(params, params2, params3)

{

console.log('this is init = ', params, params2, params3)


},

addController : function(params)

{


},

addPager : function(params)

{


}

};


jQuery.fn.magic = function(magicName)

{

console.log(Array.prototype.slice.call(arguments, 1)) 

/*

  실제로 얘는 ['AAA', 'BBB', 'CCC'] 배열을 토해낸다 

  Array.prototype.slice.call(arguments, 0)) 0 은 arguments 첫 요소 " 함수 " 이름이 온다.

*/

if(myMagic[magicName])

{

myMagic[magicName].apply(this, Array.prototype.slice.call(arguments, 1));

/*

원래 대로라면 myMagic[magicName].apply(this, Array.prototype.slice.call(arguments, 1, 2));  2는 인덱스  (0~...) 뒤에 마지막 인덱스를 주지 않는 이유는 매개변수를 몇개든 임의로 줄수 있게 하기 위해서다.

그래야 함수 선언 할때 매개변수숫자만 추가해주면 참조 할수 잇게 된다


init : function ( params, params2, params3)    이런식으로 말이다

*/

}

}

})(jQuery);



myMagic[magicName]  요런 형식은 그냥 Object["속성이름"] 으로 참조되는 것과 같다.

플러그인에서 다른 기능을 하는 함수들을 하나의 Object 에 선언해놓고 함수 이름으로 참조하는 법이다.


call 과 apply 에 관련된 내용은


http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx


얘를 참조




'코드 > JS' 카테고리의 다른 글

jquery ready  (0) 2013.10.23
ie6에서 png 이미지 디스플레이  (0) 2013.10.10
(function($){...})(jQuery)  (0) 2013.07.12
jQuery.extend  (0) 2013.06.27
자바스크립트로 stylesheet 파일 로드하기  (0) 2013.01.15