ES6 의 Symbol 데이터 형식 에 대한 이해

5942 단어 JavaScript
Symbol 는 기본 데이터 형식 으로 ES6 에 도 입 된 새로운 데이터 형식 이다.
목적 은 속성 명의 충돌 을 방지 하기 위해 대상 중의 모든 속성 명 이 유일무이한 것 을 보장 하 는 것 이다.
let s1 = Symbol('foo');
let s2 = Symbol('foo');

s1 === s2 // false

Symbol 형식 은 Symbol 인 스 턴 스 에 대한 설명 을 나타 내 는 문자열 매개 변 수 를 가 질 수 있 습 니 다.그래서 같은 묘사 의 두 Symbol 유형의 실례 도 같 지 않다.
대상 에서 어떻게 사용 합 니까?
let s = Symbol();

//      
let a = {};
a[mySymbol] = 'Hello!';

//      
let a = {
  [mySymbol]: 'Hello!'
};

//      
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });

//            
a[mySymbol] // "Hello!"

Symbol 타 입 을 속성 명 으로 사용 하려 면 [] 을 사용 해 야 합 니 다.사용 하지 않 으 면 변수 이름과 같은 문자열 을 속성 명 으로 표시 합 니 다.
Symbol 이 속성 명 으로 대상 을 옮 겨 다 닐 때 이 속성 은 for...in, for...of 순환 에 나타 나 지 않 고 Object.keys(), Object.getOwnPropertyNames(), JSON.stringify() 되 돌아 오지 않 습 니 다.
그러나 이것 은 개인 속성 도 아 닙 니 다. Object.getOwnPropertySymbols() 방법 이 있 습 니 다. 지정 한 대상 의 모든 Symbol 속성 명 을 얻 을 수 있 습 니 다.이 방법 은 하나의 배열 을 되 돌려 줍 니 다. 구성원 은 현재 대상 의 모든 속성 명 으로 사용 되 는 Symbol 값 입 니 다.
같은 Symbol 값 을 어떻게 사용 합 니까?
Symbol.for("bar") === Symbol.for("bar")
// true
Symbol.for() 방법 을 사용 하면 같은 매개 변수 가 만 든 변 수 는 같은 값 입 니 다.이 방법 으로 만 든 Symbol 변 수 는 인 자 를 전역 에 등록 하기 때 문 입 니 다.Symbol() 생 성 된 변수의 매개 변 수 는 전역 에 등록 되 지 않 습 니 다.
let s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"

let s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined

Symbol.keyFor() 을 사용 하면 전역 에 등 록 된 인자 의 이름 을 변수 로 찾 을 수 있 습 니 다.
Symbol 내 장 된 속성 값Symbol.hasInstance: 다른 대상 이 instanceof 연산 자 를 사용 할 때 이 속성 명 이 가리 키 는 내부 방법 을 사용 합 니 다.Symbol.isConcatSpreadable Symbol.species Symbol.match Symbol.replace Symbol.search Symbol.split Symbol.iterator Symbol.toPrimitive Symbol.toStringTag Symbol.unscopables

좋은 웹페이지 즐겨찾기