본문 바로가기

복습/Javascript

[Javascript] 객체지향 자바스크립트 [기본개념 및 환경설정]


이 책을 기준으로 작성했습니다




# ECMAScript (European Computer Manufacturers Association) 

 핵심 언어로 변수, 함수, 루프 등을 포함한다. 이 부분은 브라우저와 독립적이며, 다른 여러 환경에서 사용될 수 있다.


# ECMAScript5 (ES5)

  • 새로운 객체와 속성

  • 엄격모드 도입 (strict mode)

  엄격모드(strict mode)란?

    - 좀 더 엄격하게 문법검사를 하겠다.

    - 옵트인(opt-in)이며 필수는 아님.

    - "use strict"; 함수당 한번, 또는 전체 프로그램에서 한번.

    - 자바스크립트 문자열로, 문자열을 변수에 할당되지 않은 상태로 둠으로써 ES5를 지원하지 않는 구형 브라우저는 이를 무시하므로 이전버전과 호환되고 구형 브라우저를 손상시키지 않음.


# ECMAScript6 (ES6)

  • 모든 ES6 모듈과 클래스는 엄격모드(strict mode)가 디폴트(default)

    왜? ES6에서 작성한 대부분의 코드는 모듈에 있기 때문

          모듈(module)?

  모듈은 구현 세부 사항을 캡슐화하고 공개 API를 노출해 다른 코드에서 쉽게 로드하고 사용할 수 있도록 재사용 가능한 코드 조각이다.


  • 엄격모드가 디폴트이지만 다른구조에서는 암시적으로 엄격모드가 적용되지 않음. 예) 화살표, 제너레이터함수

  • 클래스(class) 와 프라미스(promise), 제너레이터(generator) 추가

  • ES6가 모든브라우저와 서버 프레임워크에 완벽히 지원되지않는다.

트랜스파일러(transpiler) : 소스를 소스로 컴파일하는 컴파일러 예) 바벨(Babel)

        트랜스파일러를 통해 ES6로 작성한 구문을 ES5구문으로 컴파일/변환하여 ES6 기능을 지원하지 않는 브라우저에서 실행




# 바벨(Babel) : transpiler




mac nvm설치 : https://gist.github.com/falsy/8aa42ae311a9adb50e2ca7d8702c9af1


# nvm 설치 후 terminal에서 아래 명렁어를 통해 nvm 명령어 추가

 $ source ~/.nvm/nvm.sh

이 명령어를 입력하면 nvm 명령어를 사용 가능



# 객체지향 프로그래밍 (OOP  Object-Oriented Programming)

  • 객체와 메서드, 속성

  • 클래스

  • 캡슐화 (Encapsulation)

  • 집합 (Aggregation)

  • 재사용성 (Reusability) / 상속 (Inheritance)다형성 (Polymorphism)

  • 다형성 (Polymorphism)


# 자바스크립트에서의 OOP 및 특징

  • 클래스 

자바스크립트에는 클래스가 없다. 자바스크립트는 모든것을 객체를 기반으로 한다.

예) Person클래스의 Bob객체 가 아니라 Bob의 아빠라고 불리는 객체를 가지고 Bob이라는 새로운객체의 프로토타입으로 재사용.


  • 캡슐화

정보은닉 → 어떻게 동작하는지 내부적으로 알 필요가 없다.

메서드와 속성의 가시성 → public, protected, private


  • 집합

    여러 객체를 새로운 하나의 객체로 결합하는것 (=컴포지션(Composition))


    • 상속

    상속을 통해 코드의 재사용성을 높임

    재정의 (overriding)가능


    • 다형성

    서로 다른 객체에서 동일한 메서드를 호출하고 각각의 고유한 방식으로 응답하도록 하는 기능

    예) A.say(), B.say() 객체가 다르므로 다른 응답을 함



    # Node.js를 통해 자바스크립트 콘솔 실행


    $ source ~/.nvm/nvm.sh

    $ node

    .exit 을 입력하면 종료.