typeof를 이용한 자료형 구분에는 약간 문제가 존재한다.
<script>
// 변수를 선언합니다.
var numberFromLiteral = 273;
var numberFromObject = new Number(273);
// 자료형을 확인합니다.
if (typeof (numberFromLiteral) == 'number') {
alert('numberFromLiteral은 숫자입니다.');
}
if (typeof (numberFromObject) == 'number') {
alert('numberFromObject는 숫자입니다.');
}
</script>
두 변수 모두 숫자지만, 생성자 함수를 사용해서 만든 숫자는 객체이므로 경고창을 출력하지 않는다. 이 두 대상을 같은 자료형으로 취급하고 싶을 때는 constructor() 를 사용해야한다.
<script>
// 변수를 선언합니다.
var numberFromLiteral = 273;
var numberFromObject = new Number(273);
// 자료형을 확인합니다.
if (numberFromLiteral.constructor == Number) {
alert('numberFromLiteral은 숫자입니다.');
}
if (numberFromObject.constructor == Number) {
alert('numberFromObject는 숫자입니다.');
}
</script>
위처럼 생성자 함수가 number 생성자 함수인지 비교하면 쉽게 숫자인지 구분할 수 있다. 다른 자료형도 마찬가지이니 활용하도록 하자.
'Javascript' 카테고리의 다른 글
Array 객체 정렬 (0) | 2012.07.06 |
---|---|
메서드 체이닝 기술 (0) | 2012.07.05 |
ECMAScript 5 추가 속성 (0) | 2012.07.05 |
상속 (0) | 2012.07.05 |
배열과 객체 (0) | 2012.06.29 |