본문 바로가기
javascript

함수호출구조(?)

by rami_ 2021. 9. 23.

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