본문 바로가기

JavaScript

(98)
[Deep dive] 28장 Number 28.1 Number 생성자 함수 - 표준 빌트인 객체인 Number 객체는 생성자 함수 객체 - Number 생성자 함수에 인수를 전달하지 않고 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 0을 할당한 Number 래퍼 객체를 생성 - Number 생성자 함수에 인수로 숫자를 전달하면서 new 연산자와 함께 호출하면 [[NumberData]] 내부 슬롯에 인수로 전달받은 숫자를 할당한 Number 래퍼 객체를 생성 const numObj = new Number(); console.log(numObj);//[Number: 0] const numObj2 = new Number(10); console.log(numObj2); //[Number: 10] - Number 생성자 함수의 ..
[Deep dive] 27장 배열(3) 27.9 배열 고차 함수 고차함수(HOF) - 함수를 인수로 전달받거나 함수를 반환하는 함수 - 외부 상태의 변경이나 가변 데이터를 피하고 불변셩(immutability)을 지향하는 함수형 프로그래밍에 기반을 둠 27.9.1 Array.prototype.sort - 배열의 요소를 정렬 - 원본 배열을 직접 변경하며 정렬된 배열을 반환 - 기본적으로 오름차순으로 요소 정렬 - 내림차순으로 요소를 정렬하려면 sort 메서드를 사용하여 오름차순으로 정렬한 후 reverse 메서드를 사용하여 요소의 순서를 뒤집음 const fruits = ['Banana','Orange','Apple']; //오름차순 정렬 fruits.sort(); //원본 배열을 직접 변경 console.log(fruits); //[ 'Ap..
[Deep dive] 27장 배열(2) 27.8 배열 메서드 - Array 생성자 함수는 정적 메서드를 제공하며, 배열 객체의 프로토타입인 Array.prototype은 프로토타입 메서드를 제공 - 원본 배열을 직접 변경하는 메서드 (mutator method) - 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드 (accessor method) 27.8.1 Array.isArray - Array 생성자 함수의 정적 메서드 - 전달한 인수가 배열이면 true, 배열이 아니면 false 반환 27.8.2 Array.prototype.indexOf - 원본 배열에서 인수로 전달된 요소를 검색하여 인덱스 반환 - 중복되는 요소가 여러 개 있다면 첫 번째로 검색된 요소의 인덱스 반환 - 요소가 존재하지 않으면 -1 반환 - 배열..
[Deep dive] 27장 배열(1) 27.1 배열이란? 배열(array) - 여러 개의 값을 순차적으로 나열한 자료구조 - 요소(element) : 배열이 가지고 있는 요소 - 인덱스(index) : 배열의 요소가 가지는 배열에서 자신의 위치를 나타내는 0 이상의 정수 - length 프로퍼티 : 배열의 길이 - 배열은 객체 타입 - 배열의 생성자 함수는 Array이며, 배열의 프로토타입 객체는 Array.prototype - 베열은 일반 객체와 달리 "값의 순서"와 "length 프로퍼티"를 가짐 27.2 자바스크립트 배열은 배열이 아니다 밀집 배열(dense array) - 배열의 요소는 하나의 데이터 타입으로 통일되어 있으며 서로 연속적으로 인접해 있음 - 인덱스를 통해 단 한번의 연산으로 임의의 요소에 접근 가능 희소 배열(spar..
[Deep dive] 26장 ES6 함수의 추가 기능 26.1 함수의 구분 - ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있음 - ES6 이전의 모든 함수는 callable 이면서 constructor다 - ES6 이전에 일반적으로 메서드라고 부르던 객체에 바인딩된 함수도 callable이면서 constructor - ES6에서는 함수를 사용 목적에 따라 세 가지 종류로 명확히 구분 ES6함수의 구분 constructor prototype super arguments 일반 함수 o o x o 메서드 x x o x 화살표 함수 x x x x 26.2 메서드 - ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미 - ES6 사양에서 정의한 메서드는 인스턴스를 생성할 수 없는 non - cons..
[Deep dive] 25장 클래스 (2) 25.7 프로퍼티 25.7.1 인스턴스 프로퍼티 - 인스턴스 프로퍼티는 constructor 내부에서 정의해야 함 - constructor 내부에서 this에 추가한 프로퍼티는 언제나 클래스가 생성한 인스턴스의 프로퍼티가 됨 - 인스턴스 프로퍼티는 언제나 public 하다 class Person { constructor(name) { //인스턴스 프로퍼티 this.name = name; //name 프로퍼티는 public하다 } } const me = new Person('Lee'); //name은 public하다 console.log(me.name); //Lee 25.7.2 접근자 프로퍼티 - 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 사용하는 접근자 함수 (accessor function)로 구성..
[Deep dive] 25장 클래스 (1) 25.1 클래스는 프로토타입의 문법적 설탕인가? - 자바스크립트는 프로토타입 기반(prototype base) 객체지향 언어 - 생성자 함수와 프로토타입을 통해 객체지향 언어의 상속 구현 가능 - ES6에서 도입된 클래스는 새로운 객체 생성 메커니즘 25.2 클래스 정의 - 클래스는 class 키워드를 사용하여 정의 //클래스 선언문 class Person {} - 클래스는 함수와 마찬가지로 이름을 가질 수 도 있고, 갖지 않을 수도 있다 //익명 클래스 표현식 const Person = class {}; //기명 클래스 표현식 const Person = class MyClass {}; - 클래스는 값으로 사용할 수 있는 일급 객체 - 클래스 몸체에는 0개 이상의 메서드만 정의 가능 1) construc..
[Deep dive] 24장 클로저 클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다. 24.1 렉시컬 스코프 - 렉시컬 환경의 "외부 렉시컬 환경에 대한 참조"에 저장할 참조값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정 24.2 함수 객체의 내부 슬롯 [[Environment]] - 함수 정의가 평가되어 함수 객체를 생성할 때 자신이 정의된 환경(위치)에 의해 결정된 상위 스코프의 참조를 객체 자신의 내부 슬롯 [[Environmnet]]에 저장 - 자신의 내부 슬롯 [[Environment]]에 저장된 상위 스코프의 참조는 현재 실행 중인 실행 컨텍스트의 렉시컬 환경을 가리킴 - 함수 객체의 내부 슬롯 [[Environment]]에 저장된 현재 실행 중인 실행 컨텍스트의..