0)
random 함수...등에 사용되는 저장형태의 변수가
object 설정이 아닌
기존 함수 내에서 사용하는 변수를 쓸 수 있을까...라는 생각을 하고 실험(?)을 해봤다.
...
1)
<script>
var linkValue=0;
function console() { var ar=arguments, arl=ar.length, i; for (i=0; i<arl; i++) document.write(ar[i]); document.write('<'+'br/>'); }
function valueConsole(v, w) { console(v, ' : ', w.getValue()); }
function setFunctionLink(v) { // set function to object v
var linkValue;
function putValue(w) { linkValue=w; }
function getValue() { return linkValue; }
v.putValue=putValue;
v.getValue=getValue;
console('preValue : ', linkValue);
}
var a={}, b={}, c={}, d={};
setFunctionLink(a);
console(' - setFunctionLink(a);');
a.putValue(1);
console(' - a.putValue(1);');
valueConsole('aValue', a);
console('');
setFunctionLink(b);
console(' - setFunctionLink(b);');
b.putValue(2);
console(' - b.putValue(2);');
valueConsole('aValue', a);
valueConsole('bValue', b);
console('');
new setFunctionLink(c);
console(' - new setFunctionLink(c);');
c.putValue(3);
console(' - c.putValue(3);');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
console('');
linkValue=4;
console(' - linkValue=4; // global');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
console('');
d.putValue=a.putValue;
console(' - d.putValue=a.putValue;');
d.getValue=a.getValue;
console(' - d.getValue=a.getValue;');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
valueConsole('dValue', d);
console('');
d.putValue(5);
console(' - d.putValue(5);');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
valueConsole('dValue', d);
console('');
</script>
...
preValue : undefined
- setFunctionLink(a);
- a.putValue(1);
aValue : 1
preValue : undefined
- setFunctionLink(b);
- b.putValue(2);
aValue : 1
bValue : 2
preValue : undefined
- new setFunctionLink(c);
- c.putValue(3);
aValue : 1
bValue : 2
cValue : 3
- linkValue=4; // global
aValue : 1
bValue : 2
cValue : 3
- d.putValue=a.putValue;
- d.getValue=a.getValue;
aValue : 1
bValue : 2
cValue : 3
dValue : 1
- d.putValue(5);
aValue : 5
bValue : 2
cValue : 3
dValue : 5
...
2)
결과는... 예상과는 조금(?) 달랐다.
함수를 부르는 과정에서 함수 앞 new 와는 관계 없이
var 가 변수를 새로 만들었기 때문에
같은 함수를 이용해서 호출을 했다고 하더라도
돌려주는 값은 각기 달랐다. (a, b, c)
해당 값이 외부의 값과도 연동되지 않았다. ( linkValue=0; , linkValue=4; )
그래서, d { } 에서 사용한 것 처럼 ( d.putValue=a.putValue; , d.getValue=a.getValue; )
선언된 함수를 이용해서 변수위치를 전달하는 방법 밖에 없는 것 같다.
*주의*
javascript 의 함수사용은 함수를 매번 해석하고 처리하기 때문에 나타나는 결과임.
다른 언어에서는 함수형태의 object 가 따로 있기 때문에 결과가 다를 수 있음.
...
3)
이렇게 된다면... 문제(?)될 부분이 하나 있는데,
함수내에서 커다란 변수를 제작(?)해서 사용(?)하는 경우,
메모리가 overflow 될 가능성도 가지게 된다는 것.
3-1)
물론, overflow 될 가능성에
함수가 물고갔기 때문이라는(?) 가능성을 배제했기 때문에 실험을 더 해야겠지만...
...
4)
object 를 만들어 사용하자는 것이
그냥 편하게 쓰기위해서인줄 알았더니
함수내 변수 사용량을 줄이기 위한 최소한의 방법으로도 보인다.
4-1)
결국은 외부변수로 최소화시키는 것이 정답이려나...
...
smallLet killofki@.
random 함수...등에 사용되는 저장형태의 변수가
object 설정이 아닌
기존 함수 내에서 사용하는 변수를 쓸 수 있을까...라는 생각을 하고 실험(?)을 해봤다.
...
1)
<script>
var linkValue=0;
function console() { var ar=arguments, arl=ar.length, i; for (i=0; i<arl; i++) document.write(ar[i]); document.write('<'+'br/>'); }
function valueConsole(v, w) { console(v, ' : ', w.getValue()); }
function setFunctionLink(v) { // set function to object v
var linkValue;
function putValue(w) { linkValue=w; }
function getValue() { return linkValue; }
v.putValue=putValue;
v.getValue=getValue;
console('preValue : ', linkValue);
}
var a={}, b={}, c={}, d={};
setFunctionLink(a);
console(' - setFunctionLink(a);');
a.putValue(1);
console(' - a.putValue(1);');
valueConsole('aValue', a);
console('');
setFunctionLink(b);
console(' - setFunctionLink(b);');
b.putValue(2);
console(' - b.putValue(2);');
valueConsole('aValue', a);
valueConsole('bValue', b);
console('');
new setFunctionLink(c);
console(' - new setFunctionLink(c);');
c.putValue(3);
console(' - c.putValue(3);');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
console('');
linkValue=4;
console(' - linkValue=4; // global');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
console('');
d.putValue=a.putValue;
console(' - d.putValue=a.putValue;');
d.getValue=a.getValue;
console(' - d.getValue=a.getValue;');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
valueConsole('dValue', d);
console('');
d.putValue(5);
console(' - d.putValue(5);');
valueConsole('aValue', a);
valueConsole('bValue', b);
valueConsole('cValue', c);
valueConsole('dValue', d);
console('');
</script>
...
preValue : undefined
- setFunctionLink(a);
- a.putValue(1);
aValue : 1
preValue : undefined
- setFunctionLink(b);
- b.putValue(2);
aValue : 1
bValue : 2
preValue : undefined
- new setFunctionLink(c);
- c.putValue(3);
aValue : 1
bValue : 2
cValue : 3
- linkValue=4; // global
aValue : 1
bValue : 2
cValue : 3
- d.putValue=a.putValue;
- d.getValue=a.getValue;
aValue : 1
bValue : 2
cValue : 3
dValue : 1
- d.putValue(5);
aValue : 5
bValue : 2
cValue : 3
dValue : 5
...
2)
결과는... 예상과는 조금(?) 달랐다.
함수를 부르는 과정에서 함수 앞 new 와는 관계 없이
var 가 변수를 새로 만들었기 때문에
같은 함수를 이용해서 호출을 했다고 하더라도
돌려주는 값은 각기 달랐다. (a, b, c)
해당 값이 외부의 값과도 연동되지 않았다. ( linkValue=0; , linkValue=4; )
그래서, d { } 에서 사용한 것 처럼 ( d.putValue=a.putValue; , d.getValue=a.getValue; )
선언된 함수를 이용해서 변수위치를 전달하는 방법 밖에 없는 것 같다.
*주의*
javascript 의 함수사용은 함수를 매번 해석하고 처리하기 때문에 나타나는 결과임.
다른 언어에서는 함수형태의 object 가 따로 있기 때문에 결과가 다를 수 있음.
...
3)
이렇게 된다면... 문제(?)될 부분이 하나 있는데,
함수내에서 커다란 변수를 제작(?)해서 사용(?)하는 경우,
메모리가 overflow 될 가능성도 가지게 된다는 것.
3-1)
물론, overflow 될 가능성에
함수가 물고갔기 때문이라는(?) 가능성을 배제했기 때문에 실험을 더 해야겠지만...
...
4)
object 를 만들어 사용하자는 것이
그냥 편하게 쓰기위해서인줄 알았더니
함수내 변수 사용량을 줄이기 위한 최소한의 방법으로도 보인다.
4-1)
결국은 외부변수로 최소화시키는 것이 정답이려나...
...
smallLet killofki@.
'baseJavascript' 카테고리의 다른 글
c언어] 잠깐 ++(plus 기호 두개) 에 대한 것이 생각나서.. (0) | 2011.09.15 |
---|---|
스트링항목 배열] 항목을 정렬해서 출력하기 (1) | 2011.06.13 |
object 구축] object 형식의 전송은 사용자기준 서술의 자유도... (0) | 2011.03.13 |
memory] array[10000]=1 형식으로 쥐어준 메모리 사용량 확인 테스트... (0) | 2011.01.31 |
window.open] 빈 창 열기... OTL... 이렇게 쉬웠(?)을줄이야... (0) | 2010.08.25 |