0)
기차놀이함수(?)의 가장 큰 단점이
오류가 났을 때, 어느 지점인지 파악하기 힘들다..인데요,

기차놀이를 하는 것 처럼(?), 장점도 있게 마련이라서요..

*참고*
5.8 체이닝 패턴 < JavaScript Patterns ISBN 976-89-6626-015-7

1)
기차놀이를 하기 위한(?) 함수..를  단순하게 만들어봤습니다.

..

2)

<script>
(function(){

  Array.prototype.chainFunction130624_1=function(f) {
    return f(this);
    };
 
  // useage : [].chainFunction130624_1(function(chainingArrayArgument){})
 
 
  [1,2,3].chainFunction130624_1(function(v){
    var i, il=v.length;
 
    for (i=0; i<il; i++) v[i]++;
 
    return v;
  }).chainFunction130624_1(function(v){
 
    document.write(v);
 
  });

})();


</script>


-- 새 창에 샘플 보여주기.. --

..

3)





..

4)
배열값에서 함수를 받아 해당 배열에 실행하도록 하는 함수죠..

[1,2,3] 배열의
각각 값에 1씩 더해 넣은 후
배열 값을 그냥 출력하는겁니다.

..

5)
그냥 함수명까지 정의하거나,
인스턴스 함수를 써도 괜찮을 분위기(?)이긴 합니다만,

인스턴스 함수를 정의하는 부분과, 
값을 표시하는 곳 까지의 갭이 너무 크다고 생각될 경우 쓸만하다고 생각되네요.

약간 덤(?)으로, 괄호가 조금 덜(?) 지저분해지는 효과도 있긴 합니다.
그 덕에, 나중에 읽기 쉬운 프로그램이 될 수도 있겠죠.

..

6)
함수를 아무렇게나 써도 가능하다는 얘기는 아닙니다..

예를들어, 저 함수가 2차 까지 이어질 수 있었던 이유는
1차에서 return v 로 해당 배열이 온전히(?) 넘어갔기 떄문이거든요..

2차 이후 3차, 4차까지 가고 싶다면
마지막에 return v 처럼, 배열을 넘기면 되겠죠.
(물론, 배열에 chainenFunction.. 이 가능하기 때문입니다. 숫자나 문자..등을 구현했다면 그쪽으로도 계속 가능하겠죠.)

..

7)
나중에, 함수 정의를 조금 더 짧게(?) 하려한다면,
.. 아무래도 함수명 정도가 되겠죠.

요런 식으로 한다면 조금이나마 압축이 될겁니다.
물론, var cf 는 함수 내에서 정의하거나, 글로벌함수로 알려두는게 가장 좋겠죠.


var cf='chainedFunction130624_1';

Array.prototype[cf]=function(f) {..} ;

[][cf](function(v){..}
)[cf](function(v){..}
);


..




wantHate killofki@.

Posted by killofki
,