여니의 프로그래밍 study/JavaScript

[Javascript] 객체를 원시형으로 변환하기

여니's 2021. 3. 25. 16:56

 

숫자형으로의 형변환은 연산이나 숫자 관련된 함수를 적용할 때 일어나고,

문자형으로의 형변환은 주로 객체를 출력할 때 일어난다.

 

위와 같은 형변환을 원하는 대로 조절 할 수 있게 하는 게바로

특수 객체 메서드 (toPrimitive)

 

객체 형 변환은 hint라는 값이 구분 기준이 된다.hint : 목표로 하는 자료형

 

구분 기준은 총 3종류

1. string >> hint가 스트링이 된다.

 

2. number

>> 수학 연산 적용 시

 

3. default >> 연산자가 기대하는 자료형이 확실하지 않을 때>> 이항 덧셈 연산자는 피연산자의 자료형에 따라서, 문자열을 합치는 과정이 일어날 수도 있고,숫자를 더해주는 연산과정이 일어날 수도 있다.따라서 +의 인수가 객체일 경우에는hint가 default가 된다.

 

 

> 외울 필요는 없다.커스텀 객체 만들 때 규칙만 따르면 된다.

 


Symbol.toPrimitive

Symbol.toPrimitive라는 내장 심볼이 존재하는 데,

이 심볼은 hint를 명명할 때 사용한다.

let user={
	name:'John',
    money:1000
   	
    [Symbol.toPrimitive](hint){
    	alert('hint: ${hint}');
        return hint=="string"?`{name:"${this.name}"}` : this.money;
	}
};

alert(user) // hint : string -> {name:'John'}
alert(+user) // hint: number -> 1000
alert(user+500); // hint:default -> 1500