읽기 노트 : ES6에 대한 심층적 이해 (6)

6 장 기호 및 기호 속성

섹션 1 심볼 생성

  1.1 기호는 ES6의 개인 속성을 나타냅니다.

  1.2 문법 만들기 :

 let firstName = Symbol();
 let person = {};
 
 person[firstName] = "zxx";
 console.log(person[firstName]); //"zxx"

 

섹션 2 Symbol 사용 방법

  계산 가능한 속성 이름이 사용되는 모든 곳에서 기호를 사용할 수 있습니다 . 예를 들면 다음과 같습니다.

  let firstName = Symbol("first name");
  
  //使用一个可计算对象字面量属性
  let person = {
      [firstName]: "zxx"
  };
  
  //将属性设置为只读
  Object.defineProperty(person, firstName, {writable: false});
 
 console.log( person[firstName] ); // "zxx"

 

섹션 3 심볼 공유 시스템

   3.1 심볼 공유 시스템을 만드는 이유는 무엇입니까?

    때때로 우리는 서로 다른 코드에서 동일한 Symbol을 공유하고자 할 수 있습니다 .ES6는 언제든지 액세스 할 수있는 전역 Symbol 레지스트리를 제공하며 전역 범위와 유사한 공유 환경입니다. 공유 할 수있는 심볼을 만들려면 Symbol.for () 메서드를 사용하십시오. 주어진 매개 변수, 즉 생성 할 기호 문자열의 식별자 만 허용합니다. 예를 들면 다음과 같습니다.

 let uid = Symbol.for("uid");
 let object = {};
 Object[uid] = "12345";
 
 console.log( Object[uid] ); //"12345"
 console.log( uid ); //  "Symbol(uid)"

 

섹션 4 기호 및 유형 강제

  JavaScript에서는 Symbol과 논리적으로 동등한 값이 없으므로 Symbol을 사용하기에 매우 유연하지 않습니다. 특히 Symbol을 문자열 및 숫자 유형으로 강제 변환 할 수 없습니다.

 

섹션 5 기호 속성 검색

  ES6에서는 모든 Symbol의 자체 속성을 포함하는 배열을 반환하는 Object.getOwnPropertySymbols () 메서드가 추가되었습니다. 예를 들면 다음과 같습니다.

 let uid = Symbol.for("uid");
 let object = {
     [uid]: "12345"
 };
 let symbols = Object.getOwnPropertySymbols(object);
 
 console.log( symbols.length ); // 1
 console.log( symbols[0] ); // "Symbols(uid)"
 console.log( object[symbols[0]] ); // "12345"

 

섹션 6은 잘 알려진 Symbol을 통해 내부 작업을 노출합니다.

  6.1 ES6는 ES5를 확장하여 "JS의 일부 '마법'부분을 노출하고 이와 유사하게 이러한 개발자가 당시 시뮬레이션 할 수 없었던 기능을 정의합니다."새 표준에서는 주로 프로토 타입 체인에서 정의합니다. 언어의 더 많은 내부 논리를 노출하는 속성.

  6.2 일부 특정 메소드는 API와 유사하며 사용시 p.113-p.127을 참조 할 수 있습니다.

 

(이 섹션의 끝)

추천

출처blog.csdn.net/ZxxSteven/article/details/100576725