본문 바로가기

programming study/JavaScript

(186)
26장. ES6 함수의 추가 기능(3) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 26.4 Rest 파라미터 26.4.1 기본 문법 매개변수 이름 앞에 세개의 점을 붙여서 표현 Rest 파라미터는 함수에 전달된 목록을 배열로 전달 받음 일반 파라미터와 혼용 가능 반드시 마지막 파라미터여야 함 단 하나만 선언 가능 function eatChuru(...churus) { console.log(churus); // ['참치맛', '닭고기맛', '연어맛'] } 26.4.2 Rest 파라미터와 arguments 객체 arguments는 유사 배열 객체 순회 가능 함수 내부에서 지역변수처럼 사용 call, apply 메서드를 사용해 배열로 변환해야 함 Rest 파라미터는 배열로 변환하..
26장. ES6 함수의 추가 기능(2) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 26.3 화살표 함수 26.3.3 this 화살표 함수가 일반 함수와 구별되는 가장 큰 특징 일반함수에서 this 바인딩은 함수의 호출방식에 따라 동적으로 결정 일반 함수로서 호출되는 모든 함수의 내부 this는 전역 객체 strict mode에서는 undefined 콜백 함수로 사용되는 일반 함수에서 문제를 일으킴 화살표 함수는 함수 자체의 this를 가지지 않음 상위 스코프의 this를 그대로 참조(Lexical This) 화살표 함수의 this가 함수의 정의된 위치에따라 결정 call, bind 메서드를 사용해도 this 교체 불가 메서드를 화살표 함수로 정의하는 것은 피할 것 상위 스코..
26장. ES6 함수의 추가 기능(1) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 26.1 함수의 구분 ES6 이전의 모든 함수는 일반 함수 또는 생성자 함수로서 호출 가능 callable이면서 constructor 객체에 바인딩된 함수(일반적으로 메서드라 칭했던 것) 불필요한 프로토타입 객체를 생성하여 성능상에서 문제 ES6 이후로 함수를 사용 목적에 따라 세 가지 종류로 명확히 구분 일반 함수 메서드 화살표 함수 26.2 메서드 ES6 이후로 메서드 축약 표현으로 정의된 함수를 지칭 non-constructor 생성자 함수로서 호출 불가 인스턴스 생성 불가 prototype 프로퍼티가 없고 프로토타입도 생성하지 않음 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[Home..
25장. 클래스(6) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 25.8.6 상속 클래스의 인스턴스 생성 과정 1. 서브클래스의 super 호출 자바스크립트 엔진은 수퍼클래스와 서브클래스를 구분하기 위해 내부슬롯 [[ConstructorKind]]을 가짐 다른 클래스를 상속 받지 않는 클래스는 'base'가 설정 다른 클래스를 상속 받는 클래스는 'derived'로 설정 이를 통해 수퍼클래스와 서브클래스 동작 구분 서브클래스는 직접 인스턴스를 생성하지 않고 수퍼클래스에게 인스턴스 생성을 위임 반디스 서브클래스의 constructor에서 super를 호출해야 하는 이유 2. 수퍼클래스의 인스턴스 생성과 this 바인딩 수퍼클래스의 constructor 내부가..
25장. 클래스(5) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 25.8.4 서브클래스의 constructor constructor 생략 시 비어있는 constructor가 암묵적으로 정의 서브클래스의 경우, 아래와 같은 constructor가 암묵적 정의 constructor(...args) { super(...args); } 25.8.5 super 키워드 함수처럼 호출할 수 있고 this와 같이 식별자처럼 참조할 수 있는 특수 키워드 super 호출 수퍼클래스의 constructor를 호출 서브클래스에서 암묵적으로 constructor를 호출하면서 super 또한 호출 서브클래스에서 constructor를 생략하지 않는 경우 서브클래스의 construc..
25장. 클래스(4) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 25.8 상속에 의한 클래스 확장 25.8.1 클래스 상속과 생성자 함수 상속 클래스를 상속받아 새로운 클래스를 확장 클래스를 확장하는 문법인 extends 키워드가 기본적으로 제공 생성자함수는 제공하지 않음 25.8.2 extends 키워드 상속받을 키워드를 정의 수퍼클래스와 서브클래스 간의 상속 관계를 설정 클래스 또한 프로토타입을 통해 상속 관계를 구현 프로토타입 메서드, 정적 메서드 모두 상속 가능 수퍼클래스 : 부모 클래스 서브클래스 : 자식 클래스 수퍼클래스로부터 확장된 클래스 class siru extends Cat {} 25.8.3 동적 상속 extends 키워드 다음에는 [[C..
25장. 클래스(3) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 25.6 클래스의 인스턴스 생성 과정 new 연산자와 함께 클래스 호출 시 생성자 함수와 마찬가지로 클래스의 내부 메서드 [[Construct]]가 호출 클래스는 new 연산자 없이 호출할 수 있음 1. 인스턴스 생성과 this 바인딩 암묵적으로 빈 객체 생성 클래스가 생성한 인스턴스 클래스가 생성한 인스턴스의 프로토타입으로 prototype 프로퍼티가 가리키는 객체가 설정 인스턴스는 this에 바인딩 constructor 내부의 this는 클래스가 생성한 인스턴스를 가리킴 2. 인스턴스 초기화 constructor내부 코드가 실행 this에 바인딩되어 있는 인스턴스를 초기화 프로퍼티 추가 c..
25장. 클래스(2) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 25.3 클래스 호이스팅 클래스는 함수로 평가 런타임 이전에 평가되어 함수 객체 생성 이 함수 객체는 생성자로서 호출할 수 있음 즉, constructor 이때 프로토타입도 더불어 생성 클래스도 호이스팅이 발생함 단, 일시적 사각지대에 빠짐 25.4 인스턴스 생성 클래스는 new 연산자와 호출되어 인스턴스 생성 생성자 함수와 달리 반드시 new 연산자와 함께 호출해야 함 25.5 메서드 클래스 몸체에는 0개 이상의 메서드만 선언 가능 constructor(생성자) 프로토타입 메서드 정적 메서드 25.5.1 constructor 인스턴스를 생성하고 초기화하기 위한 특수한 메서드 클래스가 평가되어..