holdanddeepdive/javascript-deep-dive

27장 배열

Opened this issue · 0 comments

배열

  • 자바스크립트에서 배열은 배열이 아니다

    • 자바스크립트는 동적 타이핑 언어-> 프로퍼티의 메모리 위치가 계속해서 바꾸기 때문에 동적 서치해야함 -> 동적탐색을 줄이기 위한 방법으로 v8은 히든클래스를 사용함
    • #7

    Array의 속성
    PAKCED(꽉찬배열) or HOLEY(중간이 비어있는 배열)
    SMI_ELEMENTS or DOUBLE_ELEMENTS
    처음 배정받은 Array의 속성을 유지하는 쪽으로 배열을 관리하는 것이 좋다.

  • new.target

  • 배열과 객체의 차이

    • 배열은 특수한 객체이다
      1. 프로퍼티 키로 인덱스를 가짐

      2. length 프로퍼티를 가짐

        • 이 프로퍼티는 임의로 조정가능함

        • length를 줄이면 실제로 배열의 길이가 잘림

        • length를 늘려도 메모리 공간을 더 할당하지는 않음

——————————————————

  • 뒤에 나오지만 예습했어요

symbol

  • 변경 불가한 유일한 값

  • 유일한 프로퍼티 키를 생성하는데에 사용

  • enum을 흉내내는데에 사용(Object.freeze메서드와 함께 사용)

  • 리터럴로 생성불가, symbol() 함수로만 생성 가능

이터러블

  • 이터러블 프로토콜을 준수한 객체

  • symbol.iterator를 key로 하는 메서드를 가질 것(구현 or 상속)

  • 이터러블은

    1. for…of 문으로 순회할 수 있음

    2. 스프레드 문법 사용 가능

    3.구조분해 할당 가능(배열 디스트럭쳐링 할당)