3. 네이티브

jude·2022년 2월 1일
0

you don't know js

목록 보기
19/30
post-thumbnail

네이티브는 자바스크립트 내장함수다.

많이 쓰는 네이티브 내장함수들

String()
Number()
Boolean()
Array()
Object()
Function()
RegExp()
Date()
Error()
Symbol()

생성자 함수 방식으로 문자열 또는 숫자를 만들면 그 값은 객체 래퍼에 감싸져서 반환되기 때문에 typeof 값은 "object"가 된다.

let a = new String( 'abc' );
typeof a; // object

let b = new Number( 2 );
typeof b; // object

이런 객체 형태로 반환된 값을 문자열로 바꿔주는 것이 문자열의 함수 toString() 이다.

let a = 2;
a.toString(); // "2"
typeof a.toString(); // string

let b = new Number( 2 );
b.toString(); // "2" 
typeof b; // number - 불변 값이기 때문에 b는 그대로 number

이제 책의 예제를 살펴보자.

var a = new String( "abc" );

typeof a; // "object" - "String"이 아니다!

a instanceof String; // true

// 문자열의 toString이 아니다.
// Object가 String의 부모 클래스이기 때문에 String 클래스에서 toString을 덮어썼다고 보면 됨.
Object.prototype.toString.call( a ); // "[object String]"
console.log( a ); // String {"abc"}

콘솔을 찍어보면 String {"abc"} 라고 되어있고, 열어보면 아래와 같은 정보가 나온다.

{0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"} // 브라우저마다 조금씩 다르게 표현될 수 있다.

결론

요지는 new String( "abc" ) 처럼 문자열을 생성하면 문자가 아닌 객체로 반환된다는 것이다.

profile
UI 화면 만드는걸 좋아하는 UI개발자입니다. 프론트엔드 개발 공부 중입니다. 공부한 부분을 블로그로 간략히 정리하는 편입니다.

0개의 댓글