31. RegExp
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
31.1 정규 표현식이란? 정규 표현식은 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어(formal language) 다. 정규 표현식은 자바스크립트의 고유 문법이 아니며, 대부분의 프로그래밍 언어와 코드 에디터에 내장되어 있다. 문자열을 대상으로 패턴 매칭 기능을 제공한다. 패턴 매칭 기능이란 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있는 기능을 말한다. 다만 정규표현식은 주석이나 공백을 허용하지 않고 여러 가지 기호를 혼합하여 사용하기 때문에 가독성이 좋지 않다는 문제가 있다. 31.2 정규 표현식의 생성 31.3 RegExp 메서드 RegExp.prototype.exec, RegExp.prototype.test, String.prototype.match,..
30. Date
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
날짜와 시간(연, 월, 일, 시, 분, 초, 밀리초(millisecond/ms. 천분의 1초))을 위한 메서드를 제공하는 빌트인 객체이면서 생성자 함수다. 30.1 Date 생성자 함수 Date는 생성자 함수다. Date 생성자 함수로 생성한 Date 객체는 내부적으로 날짜와 시간을 나타내는 정수값을 갖는다. 이 값은 1970년 1월 1일 00:00:00(UTC)을 기점으로 Date 객체가 나타내는 날짜와 시간까지의 밀리초를 나타낸다. 30.1.1 new Date() Date 생성자 함수를 new 연산자 없이 호출하면 Date 객체를 반환하지 않고 날짜와 시간 정보를 나타내는 문자열을 반환한다. 30.1.3 new Date(dateString) 날짜와 시간을 나타내는 문자열을 인수로 전달하면 지정된 날짜..
27. 배열
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
27.1 배열이란? 배열_array 은 여러 개의 값을 순차적으로 나열한 자료구조다. 배열이 가지고 있는 값을 요소_element 라고 부른다. 자바스크립트의 모든 값은 배열의 요소가 될 수 있다. 즉, 원시값은 물론 객체, 함수, 배열 등 자바스크립트에서 값으로 인정하는 모든 것은 배열의 요소가 될 수 있다. 자바스크립트에 배열이라는 타입은 존재하지 않는다. 배열은 객체 타입이다. 배열은 배열 리터럴, Array 생성자 함수, Array.of, Array.from 메서드로 생성할 수 있다. 배열의 생성자 함수는 Array이며, 배열의 프로토타입 객체는 Array.prototype이다. Array.prototype은 배열을 위한 빌트인 메서드를 제공한다. 배열은 객체지만 일반 객체와는 구별되는 독특한 특..
26. ES6 함수의 추가 기능
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
26.1 함수의 구분 26.2 메서드 ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미한다. ES6 사양에서 정의한 메서드(이하 ES6 메서드)는 인스턴스를 생성할 수 없는 non-constructor다. 따라서 ES6 메서드는 생성자 함수로서 호출할 수 없다. ES6 메서드는 인스턴스를 생성할 수 없으므로 prototype 프로퍼티가 없고 프로토타입도 생성하지 않는다. ES6 메서드는 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[HomeObject]]를 갖는다. super 참조는 내부 슬롯 [[HomeObject]]를 사용하여 수퍼클래스의 메서드를 참조하므로 내부 슬롯 [[HomeObject]]를 갖는 ES6 메서드는 super 키워드를 사용할 수 있다. ES6 메서드가 아닌 함수는..
25. 클래스
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
25.1 클래스는 프로토타입의 문법적 설탕인가? 사실 클래스는 함수이며 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 문법적 설탕_syntactic sugar 이라고 볼 수도 있다. 클래스는 생성자 함수보다 엄격하며 생성자 함수에서는 제공하지 않는 기능도 제공한다. 클래스는 생성자 함수 기반의 객체 생성 방식보다 견고하고 명료하다(그렇다고 클래스가 자바스크립트의 다른 객체 생성 방식보다 우월하다고 생각하지는 않는다). 특히 클래스의 extends와 super 키워드는 상속 관계 구현을 더욱 간결하고 명료하게 한다. 새로운 객체 생성 메커니즘으로 보는 것이 좀 더 합당하다. 25.2 클래스 정의 클래스를 표현식으로 정의할 수 있다는 것은 클래스가 값으로 사용할 수 있는 일급 객체..
24. 클로저
·
Tech Books & Lectures/Javascript_Modern JS Deep dive
A closure is the combination of a function and the lexical environment within which that function was declared 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 24.1 렉시컬 스코프 자바스크립트 엔진은 함수를 어디서 호출했는지가 아니라 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 이를 렉시컬 스코프(정적 스코프)라 한다. 렉시컬 환경은 자신의 외부 렉시컬 환경에 대한 참조_Outer Lexical Environment Reference 를 통해 상위 렉시컬 환경과 연결된다. 이것이 바로 스코프 체인이다. 렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값, 즉 상위 스코프에 대한 참조..