1)
이전 내용에 이어, Array 내용까지 이어가봅니다.
출력된 내용은,
String 과 Array 객체에 [print]() 가 실행되면서
처리되는 내용들입니다.
*참고* 이전 내용..
2012/11/30 - [baseJavascript] - String].. 객체에 접근하는 함수 선언 테스트입니다.
...
2)
<script>
// string prototype setting..
( function() {
// can do outer string... as language C 's header.. but(?), must within function sentence for compress..
var
prototype='prototype'
, print='print120901_2'
, replaceAppend='replaceAppend120901_2';
// end of can do outer string
function sp(v, w) { String[prototype][v]=w; }
function ap(v, w) { Array[prototype][v]=w; }
// String.prototype.w=function() { var ar=arguments, arl=ar.length, i; for (i=0; i<arl; i++) document.write(ar[i]); };
sp(print, function() { document.write(this); return this; } );
ap(print, function() { document.write(this.join('.')); return this; } );
sp(replaceAppend, ( function() {
// for single process.. if try multi process as .replaceAppend(.replaceAppend()) , maybe stop by var i..
// if want to multi process, move 'var ..' into return function..
var
regV=/ /g, i, ar, arl, ov;
return function() {
arl=(ar=arguments).length; ov=this;
for (i=0; i<arl; i+=2) { // reason of can not multi process : i=0
regV.compile(ar[i], 'g');
ov=ov.replace(regV, ar[i+1]);
}
return ov;
}; // setting function
} )() );
})();
// end of string prototype
(function() {
var
// prototype='prototype'
print='print120901_2'
, replaceAppend='replaceAppend120901_2';
var
// n=parseInt(prompt("몇개?", "3"))
n=parseInt('3')
, aa=[]
, i
, oo=[];
function printaa(v) {
return '{value}'[replaceAppend]('value', v.join(","))[print]();
}
function printaas(v) {
var i, ov=[];
for (i=0; i<v.length; i++) {
ov[i]=printaa(v[i]);
}
// return '{ '+ov.join(' , ')+' }<'+'br/>';
return ('{ value }<'+'br/>')[replaceAppend]('value', ov.join(' , '))[print]();
}
for (i=0; i<n; i++) aa[i]=i;
oo[0]=aa;
oo[1]=[3,4,5,6];
oo[2]=[7,8];
oo[3]=[[9],10];
printaas(oo);
printaa(oo);
oo[0][print]();
oo[1][print]();
}
)();
</script>
...
3)
...
4)
과정은
String 을 위해 function sp(), Array 를 위해 function ap() 에서
prototype 선언을 하도록 도와주고
(실제로는, .bind 라는 함수를 (선언해서?) prototype 에 연계하도록 많이 쓴다고 알고있습니다..
끌고오기도 복잡할 것 같아서 생각나는대로 따로 만들었죠..)
String, Append 에 각각 [print] 라는 함수를 추가하고, (document.write 로 넘기고, 넘겼던 값도 반환하도록 했죠)
String 에는 [replaceAppend] 라는 함수를 추가하고,
테스트용으로는 oo[0] 에 들어갈 aa[] 의 값 갯수를 조정할 수 있도록 했습니다만,
.. 일단 생략했구요 (팝업이 뜨니까요..)
이후 값들은 임의로 몇개 더 추가했습니다.
printaas 에 들어가면,
printaa 는 [print]() 에 넘기고(인쇄하고, 값도 넘기죠..)
printaas 도 [print]() 에 넘기죠. (<br/>을 포함하긴 해두요..)
.. 여기까지가 첫줄 표시된 내용입니다.
둘째줄부터 보면,
printaa 만으로(?) oo[] 를 찍은 내용이 먼저 나오는데요, 죄다 연결되어있죠.
이건 .join(',') 이 만난 Array 를 묶으면서
하위 Array 까지 죄다 묶어서 생기는 현상입니다.
.. 그 이후(?),
Array 의 [print] 함수로 직접(?) 출력하는 부분이 있죠.
.. 뭐, 결과는 보시는 것과 같습니다.
두번 출력하는 것이라 2 와 3 사이에 간극이 없는 것이 정상이죠.
...
5)
추가로 체크할 부분은,
[replaceAppend] 와 [print] 를 쓸 수 있도록(?)
대표값(블로그에 적는 내용이라, 날짜특징을 넣습니다..)을 다른 함수에 전달(?)했는데요,
.. 보통은, library 쪽에서 이름 받아서 쓰죠..?
그정도로 구현 할 수 있다면 될 것 같네요.
easyBow killofki@.
이전 내용에 이어, Array 내용까지 이어가봅니다.
출력된 내용은,
String 과 Array 객체에 [print]() 가 실행되면서
처리되는 내용들입니다.
*참고* 이전 내용..
2012/11/30 - [baseJavascript] - String].. 객체에 접근하는 함수 선언 테스트입니다.
...
2)
<script>
// string prototype setting..
( function() {
// can do outer string... as language C 's header.. but(?), must within function sentence for compress..
var
prototype='prototype'
, print='print120901_2'
, replaceAppend='replaceAppend120901_2';
// end of can do outer string
function sp(v, w) { String[prototype][v]=w; }
function ap(v, w) { Array[prototype][v]=w; }
// String.prototype.w=function() { var ar=arguments, arl=ar.length, i; for (i=0; i<arl; i++) document.write(ar[i]); };
sp(print, function() { document.write(this); return this; } );
ap(print, function() { document.write(this.join('.')); return this; } );
sp(replaceAppend, ( function() {
// for single process.. if try multi process as .replaceAppend(.replaceAppend()) , maybe stop by var i..
// if want to multi process, move 'var ..' into return function..
var
regV=/ /g, i, ar, arl, ov;
return function() {
arl=(ar=arguments).length; ov=this;
for (i=0; i<arl; i+=2) { // reason of can not multi process : i=0
regV.compile(ar[i], 'g');
ov=ov.replace(regV, ar[i+1]);
}
return ov;
}; // setting function
} )() );
})();
// end of string prototype
(function() {
var
// prototype='prototype'
print='print120901_2'
, replaceAppend='replaceAppend120901_2';
var
// n=parseInt(prompt("몇개?", "3"))
n=parseInt('3')
, aa=[]
, i
, oo=[];
function printaa(v) {
return '{value}'[replaceAppend]('value', v.join(","))[print]();
}
function printaas(v) {
var i, ov=[];
for (i=0; i<v.length; i++) {
ov[i]=printaa(v[i]);
}
// return '{ '+ov.join(' , ')+' }<'+'br/>';
return ('{ value }<'+'br/>')[replaceAppend]('value', ov.join(' , '))[print]();
}
for (i=0; i<n; i++) aa[i]=i;
oo[0]=aa;
oo[1]=[3,4,5,6];
oo[2]=[7,8];
oo[3]=[[9],10];
printaas(oo);
printaa(oo);
oo[0][print]();
oo[1][print]();
}
)();
</script>
...
3)
...
4)
과정은
String 을 위해 function sp(), Array 를 위해 function ap() 에서
prototype 선언을 하도록 도와주고
(실제로는, .bind 라는 함수를 (선언해서?) prototype 에 연계하도록 많이 쓴다고 알고있습니다..
끌고오기도 복잡할 것 같아서 생각나는대로 따로 만들었죠..)
String, Append 에 각각 [print] 라는 함수를 추가하고, (document.write 로 넘기고, 넘겼던 값도 반환하도록 했죠)
String 에는 [replaceAppend] 라는 함수를 추가하고,
테스트용으로는 oo[0] 에 들어갈 aa[] 의 값 갯수를 조정할 수 있도록 했습니다만,
.. 일단 생략했구요 (팝업이 뜨니까요..)
이후 값들은 임의로 몇개 더 추가했습니다.
printaas 에 들어가면,
printaa 는 [print]() 에 넘기고(인쇄하고, 값도 넘기죠..)
printaas 도 [print]() 에 넘기죠. (<br/>을 포함하긴 해두요..)
.. 여기까지가 첫줄 표시된 내용입니다.
둘째줄부터 보면,
printaa 만으로(?) oo[] 를 찍은 내용이 먼저 나오는데요, 죄다 연결되어있죠.
이건 .join(',') 이 만난 Array 를 묶으면서
하위 Array 까지 죄다 묶어서 생기는 현상입니다.
.. 그 이후(?),
Array 의 [print] 함수로 직접(?) 출력하는 부분이 있죠.
.. 뭐, 결과는 보시는 것과 같습니다.
두번 출력하는 것이라 2 와 3 사이에 간극이 없는 것이 정상이죠.
...
5)
추가로 체크할 부분은,
[replaceAppend] 와 [print] 를 쓸 수 있도록(?)
대표값(블로그에 적는 내용이라, 날짜특징을 넣습니다..)을 다른 함수에 전달(?)했는데요,
.. 보통은, library 쪽에서 이름 받아서 쓰죠..?
그정도로 구현 할 수 있다면 될 것 같네요.
easyBow killofki@.
'baseJavascript' 카테고리의 다른 글
chained Function] 기차놀이(?)용 함수랄까요.. (0) | 2013.11.25 |
---|---|
strongType] ..의 구현에 살짝 접근해보고 싶었습니다. (0) | 2012.12.16 |
String].. 객체에 접근하는 함수 선언 테스트입니다. (0) | 2012.11.30 |
Function.apply ] chr 함수를 더 짧게 만들어봤습니다. (0) | 2012.07.06 |
var] 이렇게 선언하면 안된다고 하네요.. (0) | 2012.06.06 |