- 보통 자바스크립트에서 자료형을 검사할때 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 쓰는 이유는 또 모지..? 어렵다 '- '
'공부 > JAVASCRIPT' 카테고리의 다른 글
JAVASCRIPT_[ Array.filter() ] (0) | 2014.09.01 |
---|---|
JAVASCRIPT_[ Array.forEach() ] (0) | 2014.09.01 |
JAVASCRIPT_[ 프로토타입(Prototype) ] (0) | 2014.08.21 |
JAVASCRIPT_[ in, with 키워드 ] (0) | 2014.08.21 |
JAVASCRIPT_[ 자바스크립트 인코딩, 디코더 내장함수 ] (0) | 2014.08.21 |