ES6 학습 노트--Symbol
1. 개요
ES5의 객체 등록 정보 이름은 모두 문자열입니다. 이 경우 등록 정보 이름 충돌이 발생하기 쉽습니다.예를 들어 다른 사람이 제공한 대상을 사용했지만 이 대상에 새로운 방법(mixin 모드)을 추가하고 싶다면 새로운 방법의 이름이 기존 방법과 충돌할 수 있다.만약 하나의 메커니즘이 있다면 모든 속성의 이름이 유일무이하게 보장되었으면 좋겠다. 이렇게 하면 근본적으로 속성명의 충돌을 방지할 수 있다. 이것이 바로 ES6가 Symbol을 도입한 이유이다.
ES6는 고유한 값을 나타내는 새로운 원시 데이터 유형 Symbol을 도입했습니다.JavaScript 언어의 일곱 번째 데이터 형식입니다. 첫 번째 6가지는 undefined, null, 부울 값 (Boolean), 문자열 (String), 수치 (Number), 대상 (Object) 입니다.
일반 Symbol 값은 Symbol 함수를 통해 생성됩니다.이제 객체의 속성 이름에는 두 가지 유형이 있을 수 있습니다. 하나는 원래 있던 문자열이고, 다른 하나는 새로 추가된 Symbol 유형입니다.Symbol 유형에 속하는 모든 속성 이름은 고유하므로 다른 속성 이름과 충돌하지 않습니다.
let s = Symbol();
typeof s // "symbol"
위 코드에서 변수 s는 유일무이한 값이다.typeof 연산자 결과 변수 s가 문자열과 같은 다른 유형이 아닌 Symbol 데이터 유형임을 나타냅니다.//
var s1 = Symbol();
var s2 = Symbol();
s1 === s2 // false
//
var s1 = Symbol('foo');
var s2 = Symbol('foo');
s1 === s2 // false
위의 코드에서 Symbol 함수의 매개 변수는 현재 Symbol 값에 대한 설명일 뿐이므로 같은 매개 변수의 Symbol 함수의 반환 값은 같지 않습니다.2. 속성 이름으로 Symbol
각 Symbol 값은 서로 다르기 때문에 Symbol 값은 식별자로서 대상의 속성 이름에 사용하면 같은 이름의 속성이 나타나지 않는다는 것을 보장할 수 있다.이것은 한 대상이 여러 모듈로 구성된 상황에 매우 유용하다. 어떤 키가 부주의로 고쳐지거나 덮어씌워지지 않도록 방지할 수 있다. 다음은 몇 가지 흔히 볼 수 있는 사용 방법을 적는다.
var mySymbol = Symbol();
//
var a = {};
a[mySymbol] = 'Hello!';
//
var a = {
[mySymbol]: 'Hello!'
};
//
var a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });
// Object.defineProperty, Symbol 。
//
a[mySymbol] // "Hello!"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.