Sets와 Maps'understanding ECMAScipt6'독서노트 7

3746 단어
매주 한 편의 글을 쓰는 Flag을 즐겁게 세웁시다.

Set


소개하다.


값(value)의 집합으로 원시적이든 인용적이든 중복될 수 없는 모든 종류의 유일한 값을 저장합니다

ES5 구현 클래스 세트

var set = Object.create(null);
set.foo = true;

if(set.foo){
    //do something
}

문제점:
  • 대상의 속성은 모두 String 형식이다. 예를 들어 5와'5'는 등가이다
  • 키 값이 Object 대상이면 toString()를 호출하여 [object object]
  • 로 변경합니다

    속성 및 메서드


    값을 추가할 때 내부적으로 Object를 사용합니다.is()는 동일한 값이 있는지 판단하고 같은 값이 있으면 무시합니다

    new Set()


    1 참조, 선택 사항, 매개 변수는 배열

    Set.prototype.add()


    1 참조, 필수 (없을 경우 수신undefined), Set 가입, 반환 값은 해당 Set

    Set.prototype.has()


    1 참조, 반환 값은true 또는 false

    Set.prototype.delete()


    1 참조, 삭제해야 할 값,true(삭제 성공) 또는false(삭제 실패)로 되돌아오기

    Set.prototype.clear()


    모든 값 삭제

    Set.prototype.forEach()


    수조의forEach()와 같이 2참, 1참은 함수이고 함수는 3참이 있습니다. 각각value,value,set입니다. 네, 잘못 보지 않았습니다. Set는value의 집합이기 때문에 키2참이 1참중 함수인this가 없습니다.

    Set.prototype.entries()


    Generate 함수, Generate 함수를 되돌려줍니다.next () 후 되돌아오는 값의value는 [value,value] 이다

    Set.prototype.values()


    Generate 함수, Generate 함수를 되돌려줍니다.next () 후 되돌아오는 값의value는 value 이다

    Set.prototype.size


    Set 길이로 돌아가기

    팁-수조제거

    //  ...
    const duplication = function(arr){
        return [...new Set(arr)]
    }
    
    

    Weak Sets


    Set을 사용할 때 주의해야 할 사항은 다음과 같습니다.
    Set 내 값 존재 = 객체 참조 존재 = set 존재 시 스팸 수거 불가
    so:Weak Set 나왔습니다.
    Weak Set을 사용할 때 주의해야 할 사항은 다음과 같습니다.
  • Weak Set은 데이터 참조만 저장하고 원본 유형은 저장할 수 없으며 원본 유형을 추가하면 오류가 발생
  • 참조가 Weak Set에만 저장된 경우 스팸 제거 메커니즘에서 재활용 가능
  • 특성

  • dd(),has(),delete() 방법 지원
  • 비iterable 구조,for-of 순환
  • 불가
  • 에서 값을 찾을 수 없음
  • forEach() 등 옮겨다니는 방법이 없음
  • size 속성이 없음
  • Maps


    소개하다.


    키 값이 {key:value}에 대한 집합입니다. 키는 원시적이든 인용적이든 중복될 수 없습니다.

    속성 및 메서드


    값을 추가할 때 내부적으로 Object를 사용합니다.is()는 동일한 값이 있는지 판단하고 같은 값이 있으면 무시합니다

    new Map()


    1 참조, 선택 사항, 매개변수는 배열입니다(예:
    new Map([ [key1,value1],[key2,value2]);
    

    Map.prototype.set()


    1 참조, 필수(없을 경우 수신undefined,undefined), 맵 가입, 반환 값은 맵
    let a = new Map();
    a.set(key,value);
    

    Map.prototype.get()


    1 참조, 매개 변수는 필요한 값의 키입니다. 키 값이 맞는value를 되돌려줍니다. 이 키가 없으면undefined를 되돌려줍니다.

    Map.prototype.has()


    1 참조, 매개 변수는 필요한 값의 키이고, 되돌아오는 값은true 또는false이다

    Map.prototype.delete()


    1 참조, 삭제할 값의 키,true(삭제 성공)나false(삭제 실패)로 되돌아오기

    Map.prototype.clear()


    모든 값 삭제

    Map.prototype.forEach()


    2참, 1참은 함수이고 함수는 3참이 있는데 각각value,key,Map2참은 1참중 함수인this이다

    Map.prototype.entries()


    Generate 함수, Generate 함수를 되돌려줍니다.next () 후 되돌아오는 값의value는 [value,key] 이다

    Map.prototype.values()


    Generate 함수, Generate 함수를 되돌려줍니다.next () 후 되돌아오는 값의value는 value 이다

    Map.prototype.keys()


    Generate 함수, Generate 함수를 되돌려줍니다.next () 후 되돌아오는 값의value는 key 이다

    Map.prototype.size


    Map 길이로 돌아가기

    Weak Maps


    Weak Map을 사용할 때 주의해야 할 사항은 다음과 같습니다.
  • Weak Map에 저장된 키 값이 맞는 키는 대상이어야 하며, 대상이 아니면 이상을 던져야 한다
  • Weak Map만 인용을 저장할 경우 쓰레기 정리 메커니즘에서 회수할 수 있음
  • 특성

  • set(),has(),delete() 방법 지원
  • 비iterable 구조,for-of 순환
  • 불가
  • 에서 값을 찾을 수 없음
  • clear() 방법 없음
  • forEach() 등 옮겨다니는 방법이 없음
  • size 속성이 없음
  • 장면 작업

  • DOM 요소를 Key 값으로 저장
  • key->Object,value->이 Object의 개인 데이터
  • 좋은 웹페이지 즐겨찾기