객체지향언어Java, Python 등 객체지향언어에서 클래스는 매우 중요한 개념새로운 클래스에서 기존 클래스의 모든 프로퍼티와 메소드를 사용하는 상속을 할 수 있으니까상속을 통해서 추상화, 캡슐화를 시킬 수 있는게 객체 지향 프로그래밍의 특징자바스크립트 또한 객체지향 언어인데, 클래스를 사용하지 않음=> 대신 프로토타입을 이용한 클로닝과 객체특성을 확장해 나가는 방식을 통해 새로운 객체를 생성따라서 자바스크립트는 프로토타입 기반 언어라고 불린다 최근 ECMA6 표준에서 Class 문법이 추가되었으나 자바스크립트가 클래스 기반으로 바뀐것은 아니니까...Prototype자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있음=> 연결을 통해서 부모 객체의 프로퍼티 또는 메소드를 상속받아 ..
JavaScript
Closure함수와 함수가 선언된 어휘적(lexical) 환경의 조합어휘적 환경(Lexical Environmnet)?실행할 스코프 범위 안에 있는 변수와 함수를 프로퍼티로 저장하는 객체소스코드를 실행하면서 참조가 필요한 변수의 값을 해당 Lexical Environment라는 객체에서 식별자 이름을 키로 찾는다로컬 변수들을 프로퍼티로 갖는 객체인 환경 레코드(Environment Record)와 외부 어휘적 환경(Global Lexical Environment)에 대한 참조로 구성Closure 관련 예제function outer() { const x = 10; function inner() { console.log(x); } return inner;}const example = oute..
this란?자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수JavaScript에서의 this는 함수를 호출할 때, 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정단독으로 this를 사용하는 경우var x = this;console.log(x); // window이런 경우에 this는 전역객체를 가리킨다함수 호출 방식에 따른 this일반 함수 호출일반 함수를 호출하면 this는 전역객체를 가리킴=> 호출한 객체가 없는 경우 전역객체를 가리킴function myFunction() { return this;}console.log(myFunction()); // window메서드 호출메서드는... 본질적으로 함수인데 객체와 연관되어있는...메서드를 호출하면 기..
자바스크립트 엔진?자바스크립트는 기본적으로 인터프리터 언어=> 그러면 자바스크립트 소스코드를 바이트코드로 바꿔주는 인터프리터가 필요하잖아?자바스크립트 코드를 실행하는 프로그램 또는 인터프리터가 자바스크립트 엔진 브라우저마다 여러 엔진 존재ex) 스파이더몽키, Chakra, JavaScript Core, V8V8 엔진은 컴파일도 한다던데?기본적으로 JS는 인터프리터 언어로 분류되긴 하지만 해석 엔진에서 컴파일을 하기도 함인터프리터 언어로 분류되는 이유는 console에서 스크립트를 작성해 실행하는 과정에서 컴파일러가 필요하지 않기 때문하지만 대부분의 JS 엔진은 컴파일이 필요한 경우 컴파일을 진행 가장 익숙한 V8 엔진은 ignition이라는 인터프리터와 JITC, TurboFan을 동시에 사용Just-I..
변수숫자 또는 문자열과 같은 값들을 담을 수 있는 컨테이너단 상수와 다르게 변수 안의 값은 변경될 수 있다문자열과 숫자 뿐만 아니라 함수 또한 변수에 담을 수 있다변수의 선언JS는 반드시 데이터 타입을 지정해 주지 않아도 된다변수를 선언할 때var myName;같이 키워드 var과 함께 변수 명을 입력하면 변수가 생성된다 변수 선언 시var myName = "정윤";과 같이 등호와 부여할 값을 직접 입력하여 초기화도 할 수 있다만약 변수가 값을 포함하고 있지 않은 빈 컨테이너라면 "undefined"라는 값을 반환하며, 이와같이 초기화를 한 경우 해당 값인 "정윤"을 반환한다변수의 재지정myName = "시윤";변수는 값을 변경할 수 있기 때문에 위와 같이 값을 덮어쓸 수 있다값을 덮어쓴 후에 myNam..
동기, 비동기?이벤트를 처리 하는 방식에 따라 분류하나의 이벤트가 끝난 후 다른 이벤트를 처리하기 시작하는 방식을 동기적 방식이라고 한다(서버에 데이터를 요청한 후 응답을 받아야 다음동작 실행)발생된 이벤트의 종료를 기다리지 않고 다른 작업을 동시에 수행하는 방식을 비동기적 방식이라고 한다(서버에 요청을 보낸 후 응답과 관계없이 다음동작 실행) JavaScript는?자바스크립트는 기본적으로 싱글 스레드 언어이기 때문에 한 번에 한가지 작업만 수행할 수 있는 동기적 방식 언어작업이 오래걸리거나 응답이 늦어지는 경우 치명적-> 자바스크립트에 비동기 개념을 도입! 비동기 처리Q. 자바스크립트는 싱글 스레드 언어라서 한가지 작업만 수행할 수 있다며? A. 자바스크립트 언어 자체가 비동기 동작을 지원하는 것은 아..