자바스크립트는 동적인 언어이고, 프로토타입을 기반으로한 객체지향 언어이기 때문이다.
class 기반의 언어(C++)는 객체의 형식이 정의된 class라는 개념을 가지고 그것을 이용해 객체를 찍어낸다.
반면 프로토타입 기반 언어는 class의 개념이 없으며, 객체 prototype의 위임 과정을 통해 상속이 된다고 한다.
따라서, class 기반 언어는 class를 이용해 새로운 객체를 뽑아내고, 프로토타입 기반 언어는 객체끼리의 chaining을 통해 동적으로 표현된다. 그리고 이 객체의 내용을 동적으로 수정도 할 수 있다.
자바스크립트는 동기적인 특성을 가졌고 작성 순서대로 실행
일반적으로 C++언어를 작성했을 때, 코드는 동기적으로 실행이 된다고 한다.
하지만 자바스크립트 엔진은 단일 스레드이기 때문에 한번 동작할 때 하나의 함수만을 처리한다.
이를 이해하기 위해서 나는 "코어자바스크립트(위키북스)"의 2장 실행 컨텍스트에 대해 살펴보았고 이를 이해할 수 있었다. 아래 유튜브 동영상 링크를 참고해도 좋을 것 같다.
(코딩애플 - 개발자 90%가 모르는 자바스크립트 동작원리
https://www.youtube.com/watch?v=v67LloZ1ieI)
결국, 자바스크립트 엔진 동작원리(Stack, Queue, event loop) 의해서 코드가 순서대로 실행되지 않을 수도 있고, 비동기적 형태를 가지게 된다고 한다.
JavaScript
Java
코딩월드뉴스
http://www.codingworldnews.com/news/articleView.html?idxno=2554
블로그 EmptyZero님