소개 (Introduction)

ECMAScript 2015부터, symbolnumberstring 같은 기본 자료형입니다.

symbol 값들은 Symbol생성자를 호출해서 생성합니다.

let sym1 = Symbol();

let sym2 = Symbol("key"); // 선택적 문자열 키

심벌은 불변하며 유일합니다.

let sym2 = Symbol("key");
let sym3 = Symbol("key");

sym2 === sym3; // false, 심벌은 유일합니다.

문자열처럼, 심벌은 객체 프로퍼티의 키로 사용될 수 있습니다.

const sym = Symbol();

let obj = {
    [sym]: "value"
};

console.log(obj[sym]); // "value"

심벌은 계산된 프로퍼티 선언과 결합해 객체 프로퍼티와 클래스 멤버를 선언할 수도 있습니다.

const getClassNameSymbol = Symbol();

class C {
    [getClassNameSymbol](){
       return "C";
    }
}

let c = new C();
let className = c[getClassNameSymbol](); // "C"

잘 알려진 심벌들 (Well-known Symbols)

사용자-정의 심벌 이외에도, 잘 알려진 내장 심벌들이 있습니다. 내장된 심벌들은 내부 언어 동작을 나타내는 데 사용됩니다.

다음은 잘 알려진 심벌 목록입니다:

Symbol.hasInstance

생성자 객체가 어떤 객체를 생성자의 인스턴스로 인식하는지 확인하는 메서드입니다. instanceof 연산자로 호출됩니다.

Symbol.isConcatSpreadable

객체가 자신의 배열 요소를 Array.prototype.concat를 사용하여 직렬로 나타낼 수 있는지를 나타내는 불리언 값입니다.

Symbol.iterator

객체의 기본 반복자를 반환하는 메서드입니다. for-of 문으로 호출합니다.

Symbol.match

정규식을 문자열과 비교하는 정규식 메서드입니다. String.prototype.match 메서드로 호출합니다.

Symbol.replace

일치하는 부분 문자열을 대체하는 정규식 메서드입니다. String.prototype.replace 메서드로 호출합니다.

Symbol.search

정규식과 일치하는 문자열의 인덱스를 반환하는 정규식 메서드입니다. String.prototype.search 메서드로 호출합니다.

Symbol.species

파생된 객체를 만드는 생성자 함수 프로퍼티 값입니다.

Symbol.split

정규식과 일치하는 인덱스들에 위치한 문자열을 분할하는 정규식 메서드입니다. String.prototype.split 메서드로 호출합니다.

Symbol.toPrimitive

객체를 해당 기본 값으로 변환하는 메서드입니다. ToPrimitive 추상 연산으로 호출합니다.

Symbol.toStringTag

객체의 기본 문자열 설명을 만드는 데 사용되는 문자열 값입니다. 내장 메소드Object.prototype.toString로 호출합니다.

Symbol.unscopables

고유한 프로퍼티 이름들이 연관된 객체의 'with' 환경 바인딩에서 제외된 객체입니다.

results matching ""

    No results matching ""