- 보통 자바스크립트에서 자료형을 검사할때 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- RadioButton 선택여부 확인하기 (0) | 2015.02.03 |
---|---|
javascript 숫자 4단위 한글로 변환 (0) | 2014.09.16 |
HTML에서 input박스에 글자 입력시 Byte체크 (0) | 2014.09.16 |
입력된 글자의 Byte 를 보여주는 스크립트 (0) | 2014.09.16 |
jQuery - 요소가 존재하는지 여부 확인 (0) | 2014.09.05 |
jQuery API: Manipulation, Events, Effects, Internals, Utilities (0) | 2014.08.19 |
javascript indexOf 함수, lastIndexOf 함수, 문자열, array 특정 위치값 가져오기 (0) | 2014.08.19 |
자바스크립트 for문으로 변수 생성 (0) | 2014.08.08 |