ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바스크립트 비기너] Boolean 오브젝트, 자바스크립트 특징, JSON, Date, Math 오브젝트
    개인 공부/JavaScript 2021. 12. 2. 23:53

    Boolean 오브젝트

    • 빌트인 오브젝트
    • 값이 있으면 true로 인식한다.
    • false 인식 기준
      • undefined, null, NaN
      • 빈 문자열, 숫자 타입의 0

    new Boolean()


    toString()

    • 변환 대상의 true, false를 문자열로 변환한다.

    1. 자바스크립트 특징

    • 자바스크립트는 스크립팅(Scripting) 언어이다.
    • 스크립팅 언어 특징
      • 소스 파일의 코드를 사전에 컴파일하여 실행 파일을 만들지 않고 사용하는 시점에 컴파일하여 실행한다.
    • 컴파일 순서
      • 소스 파일의 위에서 아래로부터
      • function 키워드를 만나면 function 오브젝트를 생성한다.
      • 이때, 함수 안의 코드는 컴파일하지 않는다. 함수가 호출되었을 때, 위의 방법으로 컴파일한다.

    2. JS와 객체지향

    • 자바스크립트는 객체지향 언어이다.
      • ES5 스펙에 기술되어 있다.
    • 자바스크립트 OOP 구현
      • 다른 언어의 OOP 구현과 차이가 있다.
      • JS 특징이 반영된 구현

    3. 오브젝트에 프로퍼티 추가


    defineProperty()

    • 대상 오브젝트에 프로퍼티 추가 또는 프로퍼티 속성 변경
    • 프로퍼티마다 상태를 갖고 있다.
      • 변경/삭제/열거 가능 여부
      • 상태가 가능일 때만 처리할 수 있다.
      • 프로퍼티 추가시 상태가 결정된다.

    defineProperties()

    • 다수의 프로퍼티를 추가하거나 속성 변경
      • 함수 기능은 defineProperty()와 같다.

    4. 프로퍼티 디스크립터


    프로퍼티 디스크립터

    • 프로퍼티의 속성 이름과 속성 값을 정의한다.
    • 디스크립터 타입 분류
      • 데이터 프로퍼티 디스크립터
      • 액세스 프로퍼티 디스크립터
      • 공용 프로퍼티 디스크립터
      • 디스크립터 타입에 속한 속성만 같이 사용할 수 있다.

    디스크립터 타입 인식 기준

    • 먼저 value 또는 writable 작성을 체크한다.
    • 작성되어 있으면 데이터 프로퍼티 디스크립터 타입으로 인식한다.
    • 작성되어 있지 않으면 액세스 프로퍼티 디스크립터 타입으로 인식한다.
    • 데이터와 액세스 프로퍼티 디스크립터를 함께 작성할 수 없기 때문에 구분이 가능하다.

    value 속성

    • value 속성을 get/set 속성과 함께 작성할 수 없다.

    writable 속성

    • 프로퍼티 값 변경 가능, 불가
    • writable: true
      • 프로퍼티 변경 가능
    • writable: false
      • 디폴트 값: false
      • 프로퍼티 변경 불가
      • 에러가 발생하진 않지만 값이 변경되지 않는다.

    enumebrable 속성

    • for~in으로 열거 가능 여부
    • enumerable: true
      • 프로퍼티 열거 가능
    • enumerable: false
      • 디폴트 값: false
      • 프로퍼티 열거 불가

    configurable 속성

    • 프로퍼티 삭제 가능, 불가
    • configurable: true
      • 프로퍼티 삭제 가능
      • value 이외 속성 변경 가능
    • configurable: false
      • 디폴트 값: false
      • 프로퍼티 삭제 불가
      • value 이외 속성 변경 불가

    5. getter와 setter, get 속성, set 속성

    get 속성

    • getter: OOP 용어
    • obj.book.get()처럼 함수로 호출하면 에러가 발생한다!

    set 속성

    • setter: OOP 용어

    6. 프로퍼티 추출

    getPropertyOf()

    • 파라미터의 prototype에 연결된 프로퍼티를 반환한다.
    • setPrototypeOf()가 ES6에 있다!

    getOwnPropertyNames()

    • 오브젝트의 프로퍼티 이름을 배열로 반환한다.
    • 열거 가능 여부를 체크하지 않는다.
    • 자신이 만든 프로퍼티를 대상으로 한다.
    • 다른 오브젝트에서 받은 프로퍼티는 제외된다.

    keys()

    • 열거 가능 프로퍼티의 이름을 반환한다.

    7. 프로퍼티 디스크립터 함수

    getOwnPropertyDescriptor()

    • 프로퍼티 디스크립터의 속성 이름, 값을 반환한다.
      • 다른 오브젝트에서 받은 프로퍼티는 제외된다.

    preventExtensions()

    • 오브젝트에 프로퍼티 추가 금지 설정
    • 프로퍼티 삭제, 변경은 가능하다.
    • 추가 금지를 설정한 후에는 추가 가능으로 변경할 수 없다.

    isExtensible()

    • 오브젝트에 프로퍼티 추가 금지 여부를 반환한다.
      • true: 추가 가능, false: 추가 불가

    seal()

    • 오브젝트에 프로퍼티 추가, 삭제 금지를 설정한다.
    • 추가 금지는 오브젝트 단위로 설정하고 삭제 금지는 프로퍼티 단위로 설정한다.
    • 추가 금지를 하더라도 변경할 수 있다.

    freeze()

    • 오브젝트에 프로퍼티 추가, 삭제, 변경 금지를 설정한다.

    1. JSON 오브젝트 개요, JS 타입을 JSON 타입으로 변환

    JSON 오브젝트 개요

    • 빌트인 오브젝트이다.
    • new 연산자로 인스턴스를 생성할 수 없다.
    • JSON 주요 기능
      • 데이터 송수신의 변환 기준
      • 텍스트이므로 전송 속도가 빠르다.
      • json, txt 확장자도 사용 가능하다.
    • JS 데이터 타입 지원
      • 다른 언어도 사용하지만 완전하게 같지 않을 수 있다.

    stringfy()

    • JS 타입을 JSON 타입의 문자열로 변환한다.
      • JSON.stringfy()

    2. JSON 타입 파싱

    parse()

    • JSON 타입을 JS 타입으로 변환한다.
    • 작성 주의
      • "123.""123.0"으로 작성한다.
      • "0123"처럼 첫 자리에 0을 사용할 수 없다.
      • 대문자 NULL 대신 null을 사용해야 한다.
      • 10진수를 사용한다.
    • 두 번째 파라미터를 작성하면 파싱한 오브젝트를 하나씩 읽어가면서 두 번째 파라미터의 함수를 실행한다.

    3. Date 오브젝트 개요, 시간값 표시 기준, 시간의 문자열 형태

    Date 오브젝트 개요

    • 년월일, 시분초, 밀리초를 제공한다.
      • 시간값(Time Value)라고도 부른다.
    • UTC를 기준으로 한다.

    시간값 표시 기준

    • 월은 0부터 시작한다.
      • 0: 1월, 1: 2월...
    • 일은 1에서 31일까지 정수로 표시한다.
    • 요일은 0부터 시작한다.
      • 0: 일요일, 1: 월요일...

    4. Date 오브젝트 프로퍼티

    new Date()

    • Date 인스턴스를 생성한다.
    • 파라미터를 작성하지 않으면 UTC 기준 현재 시간을 넘겨준다.
    • 시간을 자동으로 넘긴다.

    Date 오브젝트 함수 분류

    • 시간을 반환하는 함수
      • getMonth(), getDate() 등
    • 시간을 설정하는 함수
      • setMonth(), setDate() 등
    • 주의사항
      • 클라이언트의 시간은 사용자가 변경할 수 있다.
      • 마감 시간처럼 시간이 중요할 때는 서버 시간을 사용한다.

    5. Math 오브젝트

    Math 오브젝트 개요

    • 수학 계산용 오브젝트
    • new 연산자로 인스턴스를 생성할 수 없다.
      • Math, JSON, 글로벌 오브젝트
    • 메소드가 아니라 함수이다.
      • Math.abs(값) 형태
    • ES6에서는 수학 함수가 많이 늘어났다. - 이로 인해 JS의 사용 범위가 더 넓어졌다. - 특히 머신러닝/딥러닝에서 유용하다.

    abs()

    • 음수를 양수로 변환한 절댓값을 반환한다.

    ceil()

    • 소수 이하 올림, 정숫값을 반환한다.

    max()

    • 파라미터 값 중에서 가장 큰 값을 반환한다.
    • 파라미터 값을 전부 숫자로 변환하여 비교한다.
      • NaN가 하나라도 있으면 NaN를 반환한다.

    min()

    • 파라미터 값 중에서 가장 작은 값을 반환한다.
    • 파라미터 값을 전부 숫자로 변환하여 비교한다.
      • NaN가 하나라도 있으면 NaN를 반환한다.

    pow()

    • 파라미터 x값의 y승을 반환한다.
    • y가 0일 때 x가 NaN라도 1을 반환한다.
    • y가 NaN이면 NaN을 반환한다.
    • 이렇게 경우의 수가 많기 때문에 사용하기 전에 테스트를 해야 한다.

    random()

    • 0에서 1 미만 사이의 난수를 반환한다.

    댓글

Designed by Tistory.