JavaScript

자바스크립트 내장객체 Number

bang2001 2013. 8. 4. 14:00

<HTML>

<HEAD>
<TITLE> :::: 자바스크립트 내장객체 Number :::: </TITLE>

<script language="JavaScript">

var ret1, ret2, ret3;

ret1 = "10";
ret2 = "12.4";
ret3 = "abc";

var number1 = new Number(ret1);

document.write("<h3>[1] "+number1+"<p />");
document.write("[2] "+Number(ret2)+"<p />");
document.write("[3] "+Number(ret3)+"</h3>");


</script>

</HEAD>

<BODY>
  
</BODY>
</HTML>

------------------------------------------------------------------------------------------



------------------------------------------------------------------------------------------

위의 코드는 Number 객체를 이용한 예제입니다. Number 객체는 보시다 싶이 문자열로 이루어진
숫자를 숫자로 변환하는 객체입니다. 따로 메소드는 존재하지 않고 이렇게 변환하는 기능만 가집니다.
이러한 부분에서 보면 내장 메소드인 parseInt() 와 parseFloat() 의 기능과 같다고 볼 수 있습니다.

이 Number 객체는 new연산자를 사용하여 객체를 생성하고 인자로 변환할 값을 넣을 수 있고,
혹은 new 예약어 없이 바로 Number() 안에 변환하고자 하는 값을 넣을 수 있습니다.

이것이 가능한 이유는 자바스크립트에서는 객체를 함수를 이용하여 설계하고 new예약어를 통해서
객체를 생성하기 때문에 가능한 것 입니다.

즉 new 예약어를 사용한 것은 객체를 생성하였고 그 객체안에 아마 return예약어가 있을텐데
그 예약어에 의해서 객체생성과 동시에 값이 출력된 것이라고 볼수 있습니다. 그리고 new예약어를
사용하지 않은것은 객체가 아닌 함수로써 사용한 것과 같습니다.

하지만 typeof 예약어를 통해서 new예약어를 사용한 것과 사용하지 않은것에 대해서 데이터형이 객체인지 아닌지에 대한 판별을 할 수 없습니다. Number객체를 생성하면서 반환값이 발생하고 그 값의 형태에 따라서 typeof 의 반환되는 값이 정해지기 때문입니다. 그래서 문자열을 인자로 받은 Number이나 혹은 숫자를 인자로 받은 Number이나 모두 typeof 예약어를 사용하면 "number" 라는 값을 출력하게 됩니다.