0)
연산..에
해당 변수의 타입이 다른 타입과 연산함에, 오류를 발생하는 것을 strongType 이라 하고,
(일반적인 프로그래밍 언어에서 발견할 수 있죠.)
타입에 관계 없이, 연산이 가능한 것을 weakType 이라고 알고있습니다.
(javascript 가 대표적인 예입니다.)
javascript 에서 사칙연산자의 이용에 직접관여할 수 있는 방법은 잘 모르겠고,
.. 조금이나마 접근해보고자
1)
function 을 이용해서 해당 변수들의 타입을 읽어내는 방법을 써봤습니다.
비교..라든지, 사칙연산..등에 상속조건(prototype을 이용..)을 찾는 있겠지만,
일단 그런 내용은 배재하고
해당 값의 타입만 비교해보기로 했습니다.
*참고*
JavaScript patterns ISBN 976-89-6626-015-7
배열인지 판별하는 방법 - 3.5 배열 리터럴
...
2)
<script>
(function() {
function typeget(v) { var ov;
if ((ov=typeof v)!='object') return ov;
return v.constructor; // when null? maybe error!..
}
function issametype(a, b) { return typeget(a)==typeget(b); }
function pre_add(a, b) { return a+b; } // init add function
function add(a, b) { // public add function for strong type
if (issametype(a, b)) { return pre_add(a, b); }
return null; // or show error
}
document.write(add(1, '2'));
document.write(add(1, 2));
document.write(add('1', '2'));
})();
</script>
...
2)
...
3)
맨 처음 나오는 null 은 해당 두 값의 타입이 다르다고 null 보낸 거구요,
그 다음 3 은 숫자 연산결과,
그 다음 12 는 문자 연산결과입니다.
pre_add 라는 함수는 덧셈연산 대신 넣어둔 함수입니다.
직접 넣어도 되긴 하지만, 나중에 해당 연산을 바꾸고 다시 처리해봐야할 경우를 생각한거죠.
.. 딱 요만큼입니다.
function 을 이용해 새로 object 를 만들고, 충돌시키는 시험도 좋아보이기는 한데,
이번에 처리해볼 내용은 아니니까요..
instantOf 를 써서, 해당 타입(?)에 끌어들이는 방법을 쓰지 않을까..라는 상상은 살짝 해봅니다.
연산자는.. .. 그냥 단순 함수가 되겠죠 = =;..
image http://instacod.es/63149
...
easyBow killofki@.
연산..에
해당 변수의 타입이 다른 타입과 연산함에, 오류를 발생하는 것을 strongType 이라 하고,
(일반적인 프로그래밍 언어에서 발견할 수 있죠.)
타입에 관계 없이, 연산이 가능한 것을 weakType 이라고 알고있습니다.
(javascript 가 대표적인 예입니다.)
javascript 에서 사칙연산자의 이용에 직접관여할 수 있는 방법은 잘 모르겠고,
.. 조금이나마 접근해보고자
1)
function 을 이용해서 해당 변수들의 타입을 읽어내는 방법을 써봤습니다.
비교..라든지, 사칙연산..등에 상속조건(prototype을 이용..)을 찾는 있겠지만,
일단 그런 내용은 배재하고
해당 값의 타입만 비교해보기로 했습니다.
*참고*
JavaScript patterns ISBN 976-89-6626-015-7
배열인지 판별하는 방법 - 3.5 배열 리터럴
...
2)
<script>
(function() {
function typeget(v) { var ov;
if ((ov=typeof v)!='object') return ov;
return v.constructor; // when null? maybe error!..
}
function issametype(a, b) { return typeget(a)==typeget(b); }
function pre_add(a, b) { return a+b; } // init add function
function add(a, b) { // public add function for strong type
if (issametype(a, b)) { return pre_add(a, b); }
return null; // or show error
}
document.write(add(1, '2'));
document.write(add(1, 2));
document.write(add('1', '2'));
})();
</script>
...
2)
...
3)
맨 처음 나오는 null 은 해당 두 값의 타입이 다르다고 null 보낸 거구요,
그 다음 3 은 숫자 연산결과,
그 다음 12 는 문자 연산결과입니다.
pre_add 라는 함수는 덧셈연산 대신 넣어둔 함수입니다.
직접 넣어도 되긴 하지만, 나중에 해당 연산을 바꾸고 다시 처리해봐야할 경우를 생각한거죠.
.. 딱 요만큼입니다.
function 을 이용해 새로 object 를 만들고, 충돌시키는 시험도 좋아보이기는 한데,
이번에 처리해볼 내용은 아니니까요..
instantOf 를 써서, 해당 타입(?)에 끌어들이는 방법을 쓰지 않을까..라는 상상은 살짝 해봅니다.
연산자는.. .. 그냥 단순 함수가 되겠죠 = =;..
...
easyBow killofki@.
'baseJavascript' 카테고리의 다른 글
chained Function] 기차놀이(?)용 함수랄까요.. (0) | 2013.11.25 |
---|---|
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 |