6. 클래스의 인스턴스 생성 과정new 연산자와 함께 클래스를 호출하며 클래스의 내부 메서드 [[Construct]](constructor)가 호출된다. 1. 인스턴스 생성과 this 바인딩new 연산자와 함깨 클래스를 호출하며 constructor의 내부 코드가 실행되기 전에 암묵적으로 빈 객체를 생성하며 이 빈 객체가 클래스가 생성한 인스턴스이다. 이때 클래스가 생성한 인스턴스의 프로토타입으로 클래스의 prototype 프로퍼티가 가리키는 객체가 설정되며 인스턴스는 this에 바인딩된다. 따라서 constructor 내부의 this는 클래스가 생성한 인스턴스를 가리킨다. 2. 인스턴스 초기화 constructor의 내부 코드가 실행되어 this에 바인딩되어 있는 인스턴스에 프로퍼티를 추가하고 cons..
프로토타입
19.7 프로토타입 체인 자바스크립트는 객체의 프로퍼티(메서드 포함)에 접근할 때 해당 객체에 접근하려는 프로퍼티가 없다면 [[Prototype]] 내부 슬릇의 참조를 따라 자신의 부모 역할을 하는 프로토타입의 프로퍼티를 순차적으로 검색한다. 이를 프로토타입 체인이라 한다. 그렇다면 아래의 코드를 확인하자 function Person(name) { this.name = name; } // 프로토타입 메서드 Person.prototype.sayHello = function () { console.log(`Hi! My name is ${this.name}`); }; const me = new Person('Juhyeon'); // hasOwnProperty는 Object.prototype의 메서드다. con..
Javascript는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 언어다. Javascript는 객체기반의 프로그래밍 언어이며, Javascript를 이루고 있는 거의 모든 것이 객체다. 원시 타입의 값을 제외한 나머지 값들(함수, 배열, 정규 표현식등)은 모두 객체다. 19.1 객체지향 프로그래밍 객체지향 프로그래밍은 프로그램을 여러 개의 독립적 단위인 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 의미한다. 객체지향 프로그래밍은 실체를 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작한다. 실체를 인식하거나 구별할 수 있는 속성을 갖는다. 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라 한다. // 실체의 특성을..
1. 일급 객체 일급 객체란 다음 조건을 만족하는 객체를 의미한다. 무명의 리터럴로 생성할 수 있다. => 런타임에 생성이 가능 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 사용할 수 있다. 함수의 반환값으로 사용할 수 있다. // 1, 2번 조건 const increase = (num) => { return ++num; }; const decrease = (num) => { return --num; }; // 2번 조건 const auxs = { yes: () => { console.log('yes') }, increase, decrease } // 3, 4번 조건 const makeCounter = (increase) => { let num = 0; return () => ..