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 를 써서, 해당 타입(?)에 끌어들이는 방법을 쓰지 않을까..라는 상상은 살짝 해봅니다.
연산자는.. .. 그냥 단순 함수가 되겠죠 = =;..



...

easyBow killofki@.

Posted by killofki
,