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@.
'baseJavascript' 카테고리의 다른 글
strongType] ..의 구현에 살짝 접근해보고 싶었습니다. (0) | 2012.12.16 |
---|---|
String, Array] Array 객체까지 prototype 추가 테스트입니다. (0) | 2012.11.30 |
String].. 객체에 접근하는 함수 선언 테스트입니다. (0) | 2012.11.30 |
Function.apply ] chr 함수를 더 짧게 만들어봤습니다. (0) | 2012.07.06 |
var] 이렇게 선언하면 안된다고 하네요.. (0) | 2012.06.06 |