prototype.js 의 Object
2012. 7. 24. 16:59ㆍ99. 정리전 - IT/11. Java
$ 메소드 |
$ 메소드는 document.getElementById 의 축약형이라고만 생각할수도 있지만 그건 오산이예요~
$ 메소드를 사용하지 않을시
<div id="box">박스예요 ^^</div>
해당 div 를 javascript 로 hide 시키고 싶을시
var target = document.getElementById('box');
target.style.display = 'none';
이렇게 써야 하죠 이걸 prototype.js 를 사용하여 $ 메소드를 쓴다면
$('box').hide();
간단 하죠!! 단지 document.getElementById 의 축약형이라면 hide 메소드는 도대체 어디서 왔을까요~~
그건 내부적으로 $ 메소드에서 target 이 되는 object 에 기본적으로 필요한 메소드를 연결 시켜놔서 입니다 ^^;;
- function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- /*
- 인자가 하나 보다 클때라 ^^
- var returnArray = $('box1', 'box2', 'box3');
- 이런 경우겠죠 이렇게 여러개의 인자를 한번에 지정해주면
- 인자를 length 만큼 $메소드를 각각 호출하고 그 값을 배열에 넣은후 그 배열을
- 리턴해 줍니다..
- */
- }
- if (Object.isString(element))
- element = document.getElementById(element);
- //넘어온 인자가 문자일 경우 document.getElementById 를 호출
- return Element.extend(element);
- /*
- 사실 이부분이 element(넘어온 인자)에 Element.method, Element.Methods.Simulated 등의
- 메소드를 상속해서 객체 자체에 메소드를 연결 시켜 줍니다..
- 이렇게 함으로써 $('box').hide() 를 사용할수 있었던 거죠...
- Element.extend 메소드는 Element 메소드를 다룰때 다루도록 하겠습니다.
- */
- }