toString()
구분 | 데이터(값) |
data | 문자열, String, 인스턴스 |
파라미터 | 사용하지 않음. |
반환 | 변환한 값 |
data 위치의 값을 String 타입으로 변환.
var value = 123;
var result = vlaue.toString();
log(typeof result); //string
"123".toString();
String 타입을 String 타입으로 변환. 왜?
var obj = String; //obj에 String할당.
obj를 펼쳐보면 toString함수가 없음. prototype에 있음.
new instance = new String("123");
전개하면 _proto_ 에 String있음.
var oneProto = instance._proto; //proto가 String타입임.
var twoProto = instance._proto_._proto_; //proto가 오브젝트타입임.
구조적으로 toString()이 두개가 있음.
만약 _proto_에서 찾지 못하면 그 밑에 _proto_._proto_로 내려가게 되고 거기서도 못찾게 되면 undefined를 반환함.
String오브젝트에 toString()이 없으면 Object 오브젝트의 toString()이 호출됨.
"123"을 Object 타입으로 인식하여 변환하기 때문에 String 오브젝트에 toString()이 있는것.
_proto_;
toString();
_proto_;
toString();
그래서 대부분의 빌트인 오브젝트에 toString()과 valueOf()가 있음.
JS 함수 호출구조
우선 데이터 타입으로 오브젝트를 결정하고 오브젝트의 함수를 호출한다.
var value = 123;
vlaue.toString();// Number오브젝트의 toString()을 호출함.
"123".toString();// String오브젝트의 toString()을 호출함.
toString(123)
123을 파라미터에 작성.
var result = toString(123);
log(result); //[object Undefined] object 오브젝트의 toStrig()이 호출됨. 123을 오브젝트로 간주하여 object 형태를 문자열로 반환함.
'javascript' 카테고리의 다른 글
문자열 연결, 대소문자 변환 (0) | 2021.09.27 |
---|---|
인덱스로 문자열 처리 (0) | 2021.09.27 |
length 값 반환 논리 (0) | 2021.09.23 |
length 값 반환 논리 (0) | 2021.09.16 |
String length (0) | 2021.09.16 |