자바스크립트에선 한번 생성된 문자열은 변경할 수 없다 —> index로 조회는 가능null vs undefinednull개발자가 명시적으로 값이 비어있음을 나타날 때undefined값이 할당되지 않은 변수undefined type의 변수는 변수 자체의 값 또한 und
자바스크립트의 거의 모든 것은 객체이다자바스크립트에서 객체는 이름(key) : 값(value) 형태의 프로퍼티들을 저장하는 컨테이너이다나중에객체의 프로퍼티에 접근하는 2가지 방법\[] 표기법. 표기법객체의 모든 프로퍼티에 대해 루프를 수행할 때 유용하다출처: 송형주,
Number, String, Boolean, undefined, null을 제외한 모든 값은 객체다배열, 함수 등도 객체이며 이들은 참조 타입이라 불린다동등 연산자(==)를 사용해 두 객체를 비교할 때는 객체의 프로퍼티값이 아닌 참조값을 비교한다call-by-value
부모 객체, 상속과 비슷한 개념자바스크립트의 모든 객체는 자신의 프로토타입을 가리키는 Prototype라는 숨겨진 프로퍼티를 가진다.모든 객체의 프로토타입은 객체를 생성할 때 결정된다.Chrome에서는 \_\_proto\_\_출처: 송형주, 고현준 저, 『인사이드 자바
배열도 객체다객체가 프로퍼티 명으로 접근 했다면 배열의 요소에 접근할 땐 인덱스로 접근한다동적으로 추가 가능배열은 length라는 프로퍼티를 가지고 있다length는 원소 개수를 의미하지만, 실제 원소 개수와 항상 같은것은 아니다그저 배열의 크기를 반환할 뿐, 실제 원
자바스크립트에서 가장 중요한 개념은 '함수'다자바스크립트에서 함수를 정의하는 3가지 방법함수 선언문함수 표현식Function() 생성자 함수함수도 일반 객체처럼 값으로 취급된다실제로 함수 선언문이나 함수 표현식 방법 모두 함수 리터럴 방식으로 함수를 생성한다함수 리터럴
자바스크립트에선 함수도 객체다함수의 기본 기능인 코드 실행 뿐만 아니라, 프롵퍼티들을 가질수 있는 등 객체의 성질도 가진다함수가 객체이므로, 함수도 일반 객체처럼 취급될 수 있다그러므로 다음 동작들이 가능하다리터럴에 의해 생성변수나 배열의 요소, 객체의 프로퍼티 등에
익명 함수의 대표적인 용도가 콜백 함수이다개발자는 명시적으로 함수를 호출하는 것이 아닌 단지 함수를 등록하기만 하고, 어떤 이벤트가 발생했거ㄷ나 특정 시점에 도달했을 때 시스템에서 호출되는 함수특정 함수의 인자로 넘겨서 코드 내부에서 호출되는 함수함수를 정의함과 동시에
자바스크립트에서는 함수를 호출할 때 함수 형식에 맞춰 인자를 넘기지 않더라도 에러가 발생하지 않는다정의된 함수의 인자보다 적게 함수를 호출했을 경우, 넘겨지지 않은 인자에는 undefined가 할당된다정의된 함수의 인자보다 많게 함수를 호출했을 경우, 초과된 인자는 무
자바스크립트는 프로토타입 기반의 객체지향 프로그래밍을 지원한다자바스크립트에는 클래스 개념이 없고 객체 리터럴이나 생성자 함수를 통해 객체를 생성한다이렇게 생성된 객체의 부모 객체가 바로 '프로토타입' 객체이며 상속 개념과 마찬가지로 자식 객체는 부모 객체가 가진 프로퍼
대부분의 프로그래밍 언어에선 콜스택(함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 스택)의 방식을 사용한다자바스크립트도 콜 스택의 범주를 크게 벗어나지 않는다실행 컨텍스트는 콜 스택에 들어가는 실행 정보 하나와 비슷하다ECMA에선 실행 컨텍스트를 "실행
주요 개념활성 객체와 변수 객체스코프 체인실행 컨텍스트가 생성되면 자바스크립트 엔진은 해당 컨텍스트에서 실행에 필요한 여러 가지 정보를 담을 객체를 생성하는데, 이를 활성 객체라고 한다이 객체에 앞으로 매개변수나 사용자가 정의한 변수 및 객체를 저장하고, 새로 만들어진
여기서부터는 활성 객체와 변수 객체를 변수 객체라는 표현으로 통일한다이 절에서는 5.2 실행 컨텍스트 생성 과정에서 설명한 스코프 체인이 어떻게 만들어지는지 살펴본다자바스크립트 코드를 이해하려면 스코프 체인의 이해는 필수적이다이를 알아야 변수에 대한 인식 메커니즘을 알
innerFunc()의 \[scope]는 outerFunc 실행 컨텍스트의 스코프 체인인 outerFunc 변수 객체 - 전역 변수 객체을 참조한다innerFunc()는 outerFunc()가 끝난 후(outerFunc 실행 컨텍스트가 종료된 뒤) 실행된다그렇다면 ou
자바스크립트는 여러 가지 특성으로 객체지향 언어의 특성을 구현해낼 수 있다클래스 기반의 언어 vs 프로토타입 기반의 언어출처: 송형주, 고현준 저, 『인사이드 자바스크립트』, 한빛미디어(2014)
C++이나 Java의 경우 class라는 키워드를 사용하여 클래스를 만들지만 자바스크립트에는 class 키워드가 없다자바스크립트는 거의 모든 것이 객체이고, 특히 함수 객체로 많은 것을 구현해낸다클래스, 생성자, 메소드 모두 함수로 구현이 가능하다이 형태는 기존의 객체
자바스크립트에서는 클래스를 기반으로 하는 전통적인 상속을 지원하지 않는다하지만 자바스크립트 특성 중 객체 프로토타입 체인을 이용하여 상속을 구현해 낼 수 있다상속의 구현 방식은 클래스 기반 전통적인 상속 방식을 흉내내는 것과 클래스 개념 없이 객체의 프로토타입으로 상속
캡슐화는 객체지향 프로그래밍에서 상당히 중요하다캡슐화란 기본적으로 관련된 여러 가지 정보를 하나의 틀 안에 담는 것을 의미한다멤버 변수와 메서드가 서로 관련된 정보, 클래스가 이것을 담는 하나의 큰 틀이다여기서 중요한 것이 정보의 공개 여부인데, 정보은닉(Informa
기존 클래스와 같은 기능을 하는 자바스크립트 함수를 만들어보자함수의 이름은 subClass로 하며 다음 세 가지를 활용하여 구현한다함수의 프로토타입 체인extend 함수인스턴스를 생성할 때 생성자 호출(여기서는 생성자를 \_init 함수로 정한다)subClass는 상속
함수형 프로그래밍은 프로그래밍의 여러 가지 패러다임 중 하나이다이 장에서는 자바스크립트에서 사용되는 함수형 프로그래밍 방식의 여러 가지 기본적인 함수를 설명하겠다자바스크립트로 함수형 프로그래밍에서 제시하는 방법론 중 일부는 구현 가능하지만 순수함 함수형 프로그래밍 언어
함수형 프로그래밍은 함수의 조합으로 작업을 수행함을 의미한다중요한 것은 이 작업이 이루어지는 동안 작업에 필요한 데이터와 상태는 변하징 않는다아래 코드는 함수형 프로그래밍을 표현하는 수도 코드이다여기서 pure_value는 작업에 필요한 데이터고 작업이 수행되는 동안
자바스크립트는 다음을 지원하기 때문에 함수형 프로그래밍이 가능하다일급 객체로서의 함수클로저자바스크립트에서 함수는 일급 객체이므로 함수의 인자로 함수를 넘기고, 결과로 함수를 반환할 수도 있다변수 str 값이 영향을 받지 않게 하려고 클로저를 사용하였다get_encryp
이 장에서는 자바스크립트에서 함수형 프로그래밍을 사용한 여러 가지 함수를 소개한다이를 통해 자바스크립트를 이용한 함수형 프로그래밍의 감을 잡아 나가자Function.prototype.apply 함수로 함수 호출을 수행할 수 있다왜 이름이 우리에게 익숙한 "call"이