728x90
반응형

- 보통 자바스크립트에서 자료형을 검사할때 typeOf 를 사용한다.
   하지만, 생성자를 이용해서 숫자 객체를 생성하면 문제가 발생한다.


    <script>

        // 변수 선언

        var numberType = 273;               // 기본자료형

        var objectType = new Number(273);   // 객체형


        // 출력

        var outPut = '';

        outPut += 'numberType : ' + typeof (numberType) + '\n';

        outPut += 'objectType : ' + typeof(objectType);

        alert(outPut);

    </script>

- 결과


두 변수 모두 숫자이기는 하나 objectType 는 객체이므로 typeOf 으로 자료형을 검사하면 Object 로 나온다.

만약, typeOf 로 값을 숫자여부를 판별하여, 분기처리를 하게되면 정상적인 결과를 얻을 수 없다.

예를 들어,

if( tyoeOf (objetType) == 'number' ) {} 이렇게 해서 무언가 하고자 할 떄 정상적으로 처리할 수가 없게된다.


이러한 두 대상을 같은 자료형으로 취급하여 처리하고 싶을때는 constructor() 메서드를 사용해애한다.

( 기본자료형도 속성이나, 메서드를 사용하면 자동으로 객체로 변환된다. 그래서 Object 타입과 같은 속성, 메서드존재 )


EX) 같은 자료형으로 분류하기

    <script>

        // 변수 선언

        var numberType = 273;               // 기본자료형

        var objectType = new Number(273);   // 객체형


        // 출력

        var outPut = '';

        // Constructor 사용

        if (numberType.constructor == Number) {

            outPut += 'numberType : 숫자네요';

        }

        if (objectType.constructor == Number) {

            outPut += 'numberType : 숫자네요';

        }

alert(outPut);

    </script>

요렇게 '- ' 근데 하다보니 isNaN 써서 Flase 떨어지면 숫자 이걸로 하면 어떻게 될지 궁금해짐



        if (!isNaN(numberType)) {

            alert('numberType는 숫자입니다.');

        }

        if (!isNaN(objectType)) {

            alert('objectType는 숫자입니다.');

        }

이렇게 하니... 둘다 숫자라고 나옴.. 그럼 구지 constructor 쓰는 이유는 또 모지..? 어렵다 '- '

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,