목록IT 지식 기록/JavaScript 정리 (30)
쑤쑤_CS 기록장
#1. 객체지향 프로그래밍 개요 객체지향 프로그래밍 : 실세계에 존재하고 인지하고 있는 객체(Object)를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화(abstraction)를 통해 모델링하려는 프로그래밍 패러다임 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인 #2. 클래스 기반 vs. 프로토타입 기반 #2.1 클래스 기반 언어 Java C++ C# Python PHP Ruby Object-C 클래스란 같은 종류의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user define data type) 객체 생성에 사용되는 패턴 혹은 청사진(blueprint)일 ..
#1. 클로저(closure)의 개념 클로저(closure) : 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 특성 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다. “함수”란 반환된 내부함수를 의미하고 “그 함수가 선언될 때의 렉시컬 환경(Lexical environment)”란 내부 함수가 선언됐을 때의 스코프를 의미한다. 클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수를 말한다. 클로저는 자신이 생성될 때의 환경(Lexical environment)을 기억하는 함수다. 스..
#1. 실행 컨텍스트 실행 컨텍스트 (Execution Context) : scope, hoisting, this, function, closure 등의 동작원리를 담고 있는 자바스크립트의 핵심원리 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념 실행 가능한 코드가 실행되기 위해 필요한 환경 실행 가능한 코드 전역 코드 : 전역 영역에 존재하는 코드 Eval 코드 : eval 함수로 실행되는 코드 함수 코드 : 함수 내에 존재하는 코드 실행에 필요한 여러가지 정보 변수 : 전역변수, 지역변수, 매개변수, 객체의 프로퍼티 함수 선언 변수의 유표범위(Scope) this 실행에 필요한 정보를 형상화하고 구분하기 위해 자바스크립트 엔젠은 실행 컨텐스트를 물리적 객체의 형태로 관리한다. var x = 'x..
TABLE OF CONTENTS 함수 호출 방식과 this 바인딩 1. 함수 호출 2. 메소드 호출 3. 생성자 함수 호출 3.1 생성자 함수 동작 방식 3.2 객체 리터럴 방식과 생성자 함수 방식의 차이 3.3 생성자 함수에 new 연산자를 붙이지 않고 호출할 경우 4. apply/ call/ bind 호출 함수 호출 방식과 this 바인딩 함수 호추 방식에 의해 this에 바인딩할 어떤 객체가 동적으로 결정된다. 함수를 선언할 때 this에 바인딩할 객체가 정적으로 결정되는것이 아니고, 함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩할 객체가 동적으로 결정된다. 함수를 호출하는 방식 1. 함수 호출 2. 메소드 호출 3. 생성자 함수 호출 4. apply / call / bind..
1. strict mode란? 전역 스코프에도 변수 x의 선언이 존재하지 않기 때문에 ReferenceError를 throw할 것 같지만 자바스크립트 엔진은 암묵적으로 전역 객체에 프로퍼티 x를 동적 생성한다. 결국 식별자 x는 전역 변수가 된다. 이렇게 전역 변수가 된 변수를 암묵적 전역 변수(implicit global)라 한다. 개발자의 의도와는 상관없이 자바스크립트 엔진이 생성한 암묵적 전역 변수는 오류를 발생시키는 원인이 될 가능성이 크다. 따라서 반드시 var, let, const 키워드를 사용하여 변수를 선언한 다음 변수를 사용해야 한다. strict mode 자바스크립트 언어의 문법을 보다 엄격히 적용 기존에는 무시되던 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제..
#1. 스코프란? 스코프 : Scope. 유효범위 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바스크립트는 이 규칙대로 식별자를 찾는다. 스코프가 없다면 같은 식별자 이름은 충돌을 일으키므로 프로그램 전체에서 하나밖에 사용할 수 없다. #2. 스코프의 구분 1. 자바스크립트에서 스코프를 구분해보면 다음과 같이 2가지로 나눌 수 있다. - 전역 스코프 (Global scope) : 코드 어디에서든지 참조할 수 있다. - 지역 스코프 (Local scope or Function-level scope) : 함수 코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조할 수 있다. 2. 모든 변..
#1. 프로토타입 객체 자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어이다. 클래스 기반 객체지향 프로그래밍 언어는 객체 생성 이전에 클래스를 정의하고 이를 통해 객체(인스턴스)를 생성한다. 하지만 프로토타입 기반 객체지향 프로그래밍 언어는 클래스 없이(Class-less)도 객체를 생성할 수 있다. 자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모 객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다. 이러한 부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다. Prototype 객체는 생성자 함수에 의해 생성된 각각의 객체에 공유 프로퍼티를 제공하기 위해 ..
TABLE OF CONTENTS 1. typeof 2. Object.prototype.toString 3. instanceof 4. 유사 배열 객체 자바스크립트는 동적 타입(dynamic typed) 언어이므로 변수에 어떤 값이 할당될 지 예측하기 어렵다. 코드만 보면 개발자의 의도와 다르게 어떤 타입의 인수를 전달해야 하는지, 어떤 타입의 값을 반환해야 하는지 명확하지 않다. 따라서 다르게 호출될 수 있으며 이는 자바스크립트 문법 상 어떠한 문제도 없다. 이러한 상황이 발생한 이유는 변수나 반환값의 타입을 사전에 지정하지 않는 자바스크립트의 동적 타이핑(Dynamic Typing)에 의한 것이다. 이와 같은 이유로 자바스크립트는 타입 체크가 필요하다. #1. typeof 타입 연산자(Type Opera..