IT관련 객체 지향 프로그래밍에서 사용하는 언어로서, 객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 다수의 객체가 함께 수행될 수 있게 한다.
객체지향언어에는 크게 두 가지의 틀을 가지고 있다
클래스 기반 언어는 객체의 형식이 정의된 클래스
라는 개념을 가진다.
반대로 프로토타입 기반 언어는 클래스라는 개념이 없다. 클래스 기반 언어의 상속 개념과 다르게, 객체 prototype의 위임 과정을 통해 상속의 과정이 구현된다.
일반적으로 우리가 C++언어를 작성하면, 해당 코드는 동기적, 순서대로 실행하지만, 자바스크립트는 비동기적이다. 작성된 순서대로 실행하지 않는다. 아래의 예시를 살펴보자.
function a() {
setTimeout(() => {console.log("hello 1")},1000);
}
function b() {
setTimeout(() => {console.log("hello 2")},500);
}
a();
b();
//hello 2
//hello 1
만약 해당 코드가 C++언어와 같이 동기적으로 실행한다면, 1000ms있다가 hello1이 실행되고, 500ms있다가 hello2가 실행된다. (hello1 -> hello2)
하지만 자바스크립트 엔진은 호출 스택이 1개인 단일 스레드이다. 그래서 hello2 -> hello1이 실행된다. 여기서 단일 스레드는, 한번에 단 한 개의 함수만 처리한다는 뜻이다.
참고