JavaScript Deep Dive 요약 (3)

JungHanMa·2023년 2월 15일
0

Javascript

목록 보기
4/9
post-thumbnail

16장 프로퍼티 어트리뷰트

JS 엔진은 프로퍼티를 생성할 때, 프로퍼티의 상태를 나타내는 어트리뷰트를 기본값으로 자동정의한다.

데이터프로퍼티

  1. [[ value ]] : 프로퍼티 키를 통해 값에 접근하면 반환되는 값이다. 없으면 프로퍼티를 동적으로 생성, 저장
  2. [[ wirtable ]] : 값의 변경 가능 여부를 불리언으로 나타낸다.
  3. [[ enumerable ]] : 값의 열거기능 여부를 불리언으로 나타낸다. fase시 열거불가 (Object.keys 등등..)
  4. [[ configurable ]] : 프로퍼티의 재정의 여부를 불리언으로 나타낸다.

접근자프로퍼티

  1. [[ get ]] : 데이터 프로퍼티의 값을 읽을때 호출되는 접근자함수. geter의 함수가 호출
  2. [[ set ]] : 데이터의 프로퍼티의 값을 저장할때 호출되는 접근자함수. setter 함수가 호출
  3. [[ enumerable ]] : 데이터 프로퍼티 enumerable와 동일
  4. [[ configurable ]] : 데이터 프로퍼티 configurable 동일

객체변경방지

Object.defineProperty, Object.definePropertys 메서드를 이용하여 프로퍼티의 어트리뷰트를 재정의 할 수 있음.

JS엔진에서 제공하는 객체변경방지 메서드3가지
1. Object.preventExtensions : 객체 확장금지 : 프로퍼티 추가 금지
2. Object.seal : 객체 밀봉 : 추가, 삭제 금지, 어트리뷰트 재정의 금지
3. Object.treeze : 객체 동결 : 읽기만 가능

=> 위의 메서드는 얕은 변경만 방지할 수 있다. 중첩변경 방지를 위해서는 불변 객체를 사용해야 한다.


17장  생성자 함수

new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다.


장점 : 인스턴스를 생성하기 위한 템플릿 (클래스)처럼 사용가능 하다.
단점 : 객체 리터럴에 비해, 직관적이고, 간편하지 못함.


생성자 함수 인스턴스 생성과정 :
1. 인스턴스 생성과 this 바인딩 (JS엔진이 암묵적 생성)
2. 인스턴스 초기화 : 런타임 시점에,인수로 전달받은 초기값을 인스턴스 프로퍼티에 할당하여 초기화
3. 인스턴스 반환 : 바인딩된 this가 암묵적으로 반환됨. (return => 생략)


18장  함수와 일급 객체

일급 객체의 정의

  1. 무명의 리터럴로 생성할 수있다. 즉, 런타임에 생성이 가능하다.
  2. 변수나 자료구조에 저장할 수 있다.
  3. 함수의 매개변수에 전달할 수 있다.
  4. 함수의 반환값으로 사용할 수 있다.

함수와 객체의 차이

  1. 함수는 호출이 가능, 객체는 불가능
  2. 함수는 객체보다 공통 프로퍼티가아닌 고유프로퍼티가 존재(arguments)
  • arguments : arguments 객체는 함수 호출 시 전달된 인수들의 정보를 담고 있는 순회가능한 유사배열 객체이다.
  • caller : 함수 자신을 호출한 함수를 가르킨다.
  • length: 함수를 정의할때, 선언한 매개변수의 개수
  • name : 함수의 이름

물론 고유 프로퍼티말고 접근제어자를 상속받은 것도잇음.

__proto__ 접근제어자 프로퍼티 : 모든 객체 [ [ Prototype ] ] 이라는 내부 슬롯이 가르키는 프로토타입에 접근 하기 위해 사용하는 접근자 프로퍼티다.

profile
Frontend Junior

0개의 댓글