class Dog{
String name;
Dog(String name){
this.name = name;
}
void bark() {
System.out.printLn(this.name + "woof!");
}
}
public class Main {
public static void main(String[] args) {
Dog pet = new Dog('SigorJab');
pet.bark();
OOP(Object Oriented Programming)
데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 그 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 기법
1. 캡슐화 : 변수와 함수를 한 개의 단위로 묶는 것. 정보보안
2. 상속화 : 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
3. 추상화 : 객체들의 공통적인 특징을 도출하는 것
제어 흐름에 따른 주도권이 어디에 있는가
Sync : 작업 실행 시 해당 작업이 완료될 때까지 기다림.
- 설계가 간단하고 직관적, 결과반환을 대기해야함
Async : 작업이 실행되는 동안 다른 작업 수행 가능. 작업이 완료되는 것부터 결과반환
- 자원을 효율적으로 사용 가능, 설계가 복잡함]
제어권이 누구에게 있는가
블로킹 : 함수 실행 시 제어권을 넘겨주고 작업이 끝날때 돌려받음
논블로킹 : 함수 실행시 제어권을 유지함
비동기 작업을 효율적으로 관리하기 위한 메커니즘
자바스크립트는 기본적으로 단일 스레드로 동작하기 때문에 시간이 오래걸리는 작업이 실행중일 때 프로그램이 멈추는 것을 방지하기위해 도입됨.
위의 작업을 더 이상 가능한 작업이 없을때까지 반복
Async Await는 ES8에서 도입된 Promise를 더욱 쉽게 사용하기 위한 문법.
Try Catch문으로 에러 처리를 해야함
map : 원본 배열을 변경하지 않고 새로운 배열을 생성
forEach : 원본 배열을 변경함
var
자기 자신을 반환하는 함수를 연결하여 호출하는 것
코드가 간략해지는 장점이 있으나, 에러를 찾기 어려움
일반함수
화살표함수
자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수. 호출 방식에 따라 특정 개체를 바인딩
1. 생성자 함수 내부에서 this는 생성자 함수가 생성할 인스턴스에 바인딩
2. Call, Apply, Bind 메서드에서는 첫번째 인자로 전달된 객체에 바인딩
3. 객체 내부의 메서드에 호출된 경우, 해당 객체에 바인딩
4. 위를 제외한 경우에서 전역 객체에 바인딩
5. 화살표 함수에서는 화살표 함수가 선언된 상위 스코프의 this에 바인딩
선언형 : function 키워드를 사용해 정의함. 호이스팅되기 떄문에 코드가 실행되기 전에 로드 가능함, 선언하기 전에도 호출 가능함
표현식 : 변수에 함수를 할당하는 식으로 정의함. 선언된 이후에만 호출이 가능하고 함수가 할당된 변수가 접근 가능한 스코프 내에서만 호출 가능함
변수 및 함수의 선언이 스코프 내의 최상단으로 끌어올려지는 현상. JS 엔진이 코드 실행 이전에 변수와 함수의 메모리 공간을 미리 할당해주기 때문에 가능
이벤트 버블링 : 발생한 요소에서 상위요소로 이벤트가 전파됨
이벤트 캡쳐링 : 발생한 요소에서 하위요소로 이벤트가 전파됨
이벤트 전파 : DOM트리 상의 특정 Element에서 이벤트가 발생하여 다른 ELement로 전파되는것. Capturing > Target > Bubbling
이벤트 위임 : 이벤트를 하위요소에 추가하지 않고, 상위 요소에서 하위 이벤트를 제어
함수가 속한 Lexical scope를 기억하여, 함수가 Lexical Scope 밖에서 실행될 때에도 그 스코프에 접근할 수 있는 함수
캡슐화, 정보은닉을 위해 활용
함수가 선언된 위치에 따라 상위 스코프가 결정되는 개념. = 정적 스코프
변수 식별자, 변수에 바인딩 된 값, 스코프 체인을 포함하는 자료구조. 함수를 호출할 때마다 새로운 렉시컬 환경이 생성되며, 실행 컨텍스트에 대한 정보를 가지고 있음. 함수가 종료되는 해당 환경도 제거됨
코드가 실행될때 생성되는 환경을 나타내는 추상적인 개념. 변수 객체, 스코프 체인, this 등이 포함되며 스택구조로 관리됨 와뇰되면 제거됨
스코프 체인 : 스코프를 연쇄적으로 찾아나가는 방식. 변수를 참조할 때, 참조하는 스코프부터 상위 스코프 방향으로 이동하며 선언된 변수를 검색함