[Javascript] String 생성자 함수

은비·2023년 8월 13일
1

JS_String

목록 보기
2/6
post-thumbnail

표준 빌트인 객체인 String은 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메서드를 제공한다.

  1. 표준 빌트인 객체인 String 객체는 생성자 함수 객체이다.

  2. new 연산자와 함께 호출하여 String 인스턴스를 생성할 수 있다.

  3. String 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[StringData]] 내부 슬롯에
    빈 문자열을 할당한 String 래퍼 객체를 생성한다.

const strObj = new String();
console.log(strObj); // String {length: 0, [[primitiveValue]]: ""}

/* 크롬 브라우저의 개발자 도구에서 실행해보면 [[PrimitiveValue]]라는 접근할 수 없는 
프로퍼티가 보인다. 이는 [[StringData]] 내부 슬롯을 가르킨다. 
ES5에서는 [[StringData]]를 [[PrimitiveValue]]라 불렀다. */
  1. String 생성자 함수의 인수로 문자열을 전달하면서 new 연산자와 함께 호출하면 [[StringData]]
    내부 슬롯에 인수로 전달받은 문자열을 할당한 String 래퍼 객체를 생성한다.
const strObj = new String("Kwon");
console.log(strObj); 
// String {0: "K", 1: "w", 2: "o", 3: "n", length: 4, [[PrimitiveValue]]: "Kwon"}

/* String 래퍼 객체는 배열과 마찬가지로 length 프로퍼티와 인덱스를 나타내는 숫자 형식의 
문자열 프로퍼티 키로, 각 문자를 프로퍼티 값으로 갖는 유사 배열 객체면서 이터러블이다.
따라서 배열과 유사하게 인덱스를 사용하여 문자에 접근할 수 있다. */

console.log(strObj[0]); // K
/* 문자열은 원시 값이므로 변경할 수 없다. 이때 에러가 발생하지 않는다. */
strObj[0] = "Lee";
console.log(strObj); // "Kwon"
  1. String 생성자 함수의 인수로 문자열이 아닌 값을 전달하면 인수를 문자열로 강제 변환한 후,
    [[StringData]] 내부 슬롯에 변환된 문자열을 할당한 String 래퍼 객체를 생성한다.
let strObj = new String(123);
console.log(strObj); 
// String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"}

strObj = new String(null);
console.log(strObj);
// String {0: "n", 1: "u", 2: "l", 3: "l", length: 4, [[PrimitiveValue]]: "null"}
  1. new 연산자를 사용하지 않고 String 생성자 함수를 호출하면 String 인스턴스가 아닌 문자열을 반환한다. 이를 이용하여 명시적으로 타입을 변환하기도 한다.
// 숫자 타입 => 문자열 타입 (명시적 타입 변환)
console.log(String(123)); // "123"
console.log(String(NaN)); // "NaN"
console.log(String(Infinity)); // "Infinity"

// 불리언 타입 => 문자열 타입 (명시적 타입 변환)
console.log(String(true)); // "true"
console.log(String(false)); // "false"

0개의 댓글