javascript 팁이 있는 곳입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 109

0

조회 수 : 6926 신고 : 0

작성자 : 이병준
포인트 : 0 | 레벨 : 0
미리보기 :  
자, 오늘 알아보는 골때리는 녀석은 바로... 이번에도 프로토타입입니다.
내장 객체들. Date, String, Function, Number...등등
이들은 객체 자체도, 그리고 그 안에 프로토타입도 모두 "원시 객체"죠.
저놈과, 그리고 저 프로토타입을 텍스트로 뜯으면 이렇게 나오죠.
function(){
    [native code]
}
이거 뭔 개소리야?

어쨌든, 이녀석들이 어떻게 되있는지는 알 바는 아니지만,
하지만 이 원시객체도 복사해서 쓸 수 있는 기적을 우리에게 선사해 줬습니다.

먼저, 함수를 만들때부터 보도록 하겠습니다.

함수를 만들다 보면 여러개의 인자를 받아서 처리해야 하는 경우가 생기겠죠.
뭐 예를들어 add(1,2,3,4,5,...,100); 이런 함수가 있다고 칩시다.
1부터 100까지 인자로 작성하는 병맛은 없겠지만, 가정입니다.ㅋㅋ
그러면 이렇게들 작성하겠죠.
var a=0;
for(var i=0;i<arguments.length;i++){
  a+=arguments[i];
}
return a;
네. 정석입니다. 뭐 희한하게 코드를 작성해도 되지만, 정석은 정석입니다.

하지만 이런 경우로 작성하다 보면 아마 대부분 이렇게들 생각할 겁니다.

"아하, arguments 지역변수는 배열이었구나..."

이렇게 하면서 arguments instanceof Array 해봤더니 false.
굳이 그거 안해도 arguments.concat(new Array(101,102)); 해봤더니 에러.
정작 length 속성은 있는데.. 이게 다... 뭐야 이거.
배열인지 꼽사리객체인지 이거 영.. 이렇게 실망하셨던 분들 많으실 겁니다.

하지만 요즘 그런걸로 머리아파할 필요 없잖아요.
우리 마음속에 라이브러리가 있잖아요~
라이브러리로 한줄 코드하는 시대에 사는게 우리가 행복한겁니다~
YMCA~

prototype 에는 Object.extend 함수로,
jQuery에는 $.extend 함수를 통해 객체를 확장합시다.

Object.extend(arguments,Array.prototype);

이렇게 하면 Array의 동적 멤버들을 arguments로 옮겨지게 됩니다.
이렇게 하면 arguments는 배열의 역할을... 수행할 수 있을까?

아래에 제가 콜백함수로 댓글을 단 거 보셨습니까?
여기 그 증명이 있습니다.

function callback(a, b) {
    alert(a + b);
}
function caller(func) {
    this.called = 'you';
    if (func.apply === Function.prototype.apply) {
        arguments.shift = Array.prototype.shift;
        arguments.shift().apply(this, arguments);
    }
}
caller(callback, 1, 2);

어자피 shift 함수만 쓸거니까 이 경우는 shift 멤버에 배열 shift 동적 함수를 넣었습니다.
예. 이건 분명히 원시 객체죠. 제가 아까 말했지만 원시객체는 복사 됩니다.
이미 많은 분들이 알고 있겠죠? 많이들 원시객체들 맘대로 조종 가능하다는거.
그래봤자 해당 페이지 또는 그 자바스크립트 파일 내에 한정된다는 거지만.

배열 shift 함수는 배열의 첫 자리 객체를 빼서 밀고 그 첫자리 객체를 반환하는 함수입니다.
만약 shift 함수의 리턴값을 못받았다면 그때부터는 배열 첫자리에 있던 객체는 영영 안녕~ 이렇게 되는거죠.
어쨌든, 이 객체에 shift 함수를 실행하니까.. 되네요?
이거 뭐.. 너 배열이었어?

결국 arguments 변수는 배열이긴 합니다. 배열 역할은 하지만...
배열아닌 배열... 헐... 뭐지...

자, 결론적으로 말하자면 원시 객체를 활용해서 부족한 객체를 2% 채울 수 있다는
이 엄청나지도 않은 별거 아닌 사실이 골때리기 때문에 이렇게 팁으로 올렸습니다.

다음 골때리는 자스는 어떻게 해면 골때릴까 연구하는 쪽으로 해보도록 하겠습니다.
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

첫번째 댓글을 남겨주세요!

List of Articles
번호 제목 글쓴이 날짜 추천 수sort 조회 수
109 best of best 레이어를 이용한 움직이는 공지 title: [ani]깜빡이는 표정빽짱구 2004-03-08 34 6650
108 best of best 클릭하면 메뉴가 나타나고, 다시 클릭하면 닫히는 소스 [1] title: [ani]깜빡이는 표정빽짱구 2004-10-31 33 5887
107 hit best of best 이미지가 서서히 변하는 롤오버 효과 title: [ani]깜빡이는 표정빽짱구 2006-08-30 32 14362
106 best of best 제자리에서 페이딩되면서 바뀌며보여주는 뉴스티커 title: [ani]깜빡이는 표정빽짱구 2006-01-07 32 8458
105 best of best 원클릭으로 클립보드에 저장하기 title: [ani]깜빡이는 표정빽짱구 2004-10-27 30 7497
104 hit best of best 따라다니는 톱버튼 (파이어폭스,익스지원) title: [ani]깜빡이는 표정빽짱구 2006-03-30 29 12901
103 best of best 타이틀을 랜덤으로 바꾸기 title: [ani]깜빡이는 표정빽짱구 2006-03-28 29 9810
102 hit best of best 아이프레임 크기 자동조절 [1] title: [ani]깜빡이는 표정빽짱구 2006-05-02 28 12024
101 best of best 통통 티는 탑버튼 만들기 title: [ani]깜빡이는 표정빽짱구 2005-03-19 23 6047
100 hit best of best 자동으로 년도,월,일,요일,시간 나오게 하기 title: [ani]깜빡이는 표정빽짱구 2006-03-28 22 10948
99 best of best 텍스트 타이핑효과 title: [ani]깜빡이는 표정빽짱구 2004-04-22 22 5989
98 best of best 메트릭스 효과 문자 title: [ani]깜빡이는 표정빽짱구 2004-04-21 22 4921
97 best of best 스크롤되는 배너 title: [ani]깜빡이는 표정빽짱구 2005-03-26 21 9659
96 best of best 따라다니는 탑버튼 title: [ani]깜빡이는 표정빽짱구 2004-02-28 21 6185
95 best of best 위에서 아래로 떨어지는 메뉴 title: [ani]깜빡이는 표정빽짱구 2004-10-31 20 6103
94 best of best 출렁거리며 내려오는 공지창 title: [ani]깜빡이는 표정빽짱구 2004-04-19 20 5014
93 best of best 상태표시줄 바꿔보자2 title: [ani]깜빡이는 표정빽짱구 2004-02-07 20 4778
92 손님이 원하는색을 입력받아 배경화면으로 적용하기! title: [ani]깜빡이는 표정빽짱구 2004-02-29 19 4744
91 링크주소 가리기소스 title: [ani]깜빡이는 표정빽짱구 2004-07-21 18 7150
90 떨어지는 낙역또는 눈 title: [ani]깜빡이는 표정빽짱구 2005-11-28 17 5453