1) 개요
Object 메소드에는 어떠한 타입을 문자열로 변환해주는 toString()가 있는데 Object가 JS에서 모든 타입의 조상이란 걸 생각하면 모든 타입은 어떤 형태로든 toString()이라는 메서드가 있다는 의미가 된다.
2) object의 toString()
실질적으로 object.prototype.toString()은 property 상관없이 [object Object] 문자열만 반환되므로 의미 없음. 그보다 문자열과 더하기 연산을 하면 문자열이 앞에 있든 뒤에 있든 문자열 아닌 타입이 문자열로 변환(toString())한다는 것에 의의가 있음.
var o = new Object();
console.log('--> ' + o); // --> [object Object]
예를 들어, 위 예제는 "--> "라는 문자열에 o라는 객체를 더했는데 두 변수의 타입이 다르므로 에러가 나거나 자동 형변환이 되어야 할 것이다. 이 경우에는 o 객체가 문자열로 자동 변환되는데, 이 때 객체의 toString()이 자동으로 호출된다.
3) Array의 toString()
배열 각 원소를 쉼표로 구분하여 연결한 것을 반환하는데 그닥 쓸모 없어 보인다.
var arr = [1, 2, 3];
arr.toString(); // 1,2,3 반환
4) Number의 toString() - 숫자를 문자열로 반환
(1) 매개변수
숫자 타입의 toString()은 다른 타입과 다르게 인수를 전달할 수 있다. 10을 기본값(십진법)으로 하며 n을 인수로 받아 n진법으로 숫자를 문자열로 반환한다. 예를 들어 toString(2)로 할 경우 숫자를 2진법로 나타내어 문자열 형태로 반환한다.
let a = (100).toString(2);
document.write(a); // 1100100 << 2진수
console.log(typeof a); // string
(2)숫자 객체 사용법
숫자를 객체로하여 메소드를 호출하면 에러가 발생한다. 자바스크립트 파서는 정수 숫자 뒤에 점이 있으면 소숫점 이하의 수가 표현될 것이라고 기대한다. 그런데 갑자기 숫자가 아닌 toString()이라는 문자열이 나타나니 문법적으로 맞지 않다고 오류를 발생시키는 것이다.
100.toString(); // Uncaught SyntaxError
이럴 때는 두 가지 방법이 있는데, 하나는 점을 두 번 사용해서 첫 번째 점으로는 소숫점을 표현하며 두 번째 점으로 메서드를 표현하는 방법이고, 다른 하나는 숫자를 괄호로 묶어서 숫자의 영역을 명확히 하는 방법이 있다. 물론, 변수라면 두 방법 모두 필요없다.
100..toString(); // 100
(100).toString(); // 100
5) Date의 toString()
Date() 공부하다 여기까지 왔다. date를 객체로 toString() 호출하면 시간이 문자열로 반환된다
let a = new Date();
console.log(a.toString());// "Wed Mar 15 2023 20:43:01 GMT+0900 (한국 표준시)"
console.log(typeof toString(a)); //"string"
6)참고 URL
'[Javascript]' 카테고리의 다른 글
[Javascript] JS로 HTML 요소 생성 및 추가하기 (0) | 2023.03.16 |
---|---|
[Javascript] Date() 관련 메소드 정리 (0) | 2023.03.15 |
[Javascript] prototype 관련 Note (0) | 2023.03.15 |
[Javascript] Number, Array, Object의 new 연산자 탐구 (1) | 2023.03.15 |
[Javascript] 객체 모델 BOM, DOM (2) | 2023.03.09 |