모던자바스크립트(7Day)

Gil Hwan·2022년 5월 15일

모던자바스크립트

목록 보기
7/9
post-thumbnail

생성자 함수

Object 생성자 함수

new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다.

  • 생성자 함수란 (constructor) new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스라 한다.
  • const person = new Object(); // 빈 객체의생성

this
객체 자신의 프로퍼티나 메서드를 참조하기 위한 자기 참조 변수다.
this가 가리키는 값. 즉, this바인딩은 함수 호출 방식에 따라 동적으로 결정

바인딩
식별자와 값을 연결하는 과정을 의미한다. 예를 들어, 변수 선언은 변수 이름과 확보된 메모리 공간의 주소를 바인딩하는 것이다.
this바인딩은 this와 this가 가리킬 객체를 바인딩하는 것

생성자 함수의 인스턴스 생성과정

1. 인스턴스 생성과 this 바인딩
2. 인스턴스 초기화
3. 인스턴스 반환

일급객체

  • 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능
  • 변수나 자료구조(객체, 배열 등)에 저장할 수 있다.
  • 함수의 매개변수에 전달할 수 있다.
  • 함수의 반환값으로 사용할 수 있다.

함수 객체의 프로퍼티

함수는 객체다. 따라서 함수도 프로퍼티를 가질수 있다.

length 프로퍼티

선언한 매개변수의 개수를 가리킨다.
⛔️ argument 객체의 lenght 프로퍼티는 인자의 개수
🅾️ 함수 객체의 lenght 프로퍼티는 매개변수의 개수

prototype 프로퍼티

생성자 함수로 호출할 수 있는 함수 객체, 즉 constructor만이 소유하는 프로퍼티.

// 함수 객체는 prototype 프로퍼티를 소유한다.
(function () {} ).hasOwnProperty('prototype') // ➡️ true

// 일반 객체는 prototype 프로퍼티를 소유하지 않는다.
({}).hasOwnProperty('prototype'); // ➡️ false

프로토타입

자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패더라임 프로그래밍 언어다.

📝 클래스 class

ES6에서 클래스가 도입되었다. 클래스도 함수이며,

객체지향 프로그래밍

객체지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다.

객체지향 프로그래밍은 실세계의 실체를 인식하거나 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작한다. 실체는 특성이나 성질을 나타내는 속성을 가지고 있다.

//이름과 주소 속성을 갖는 객체

const person = { name: 'Lee', adddress: 'Seoul'};

상속과 프로토타입

상속(inheritance)은 객체지향 프로그래밍의 핵심 개념으로, 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말한다.
자바스크립트는 프로포토타입을 기반으로 상속을 구현한다.

프로토타입 객체

모든 객체는 [[Prototype]] 이라는 내부 슬롯을 가지며, 이 내부 슬롯의 값은 프로토타입의 참조다. 즉, 객체가 생성될 때 객체 생성 방식에 따라 프로토타입이 결정되고 [[Prototype]]에 저장된다.

profile
기억에 남는 컨텐츠를 만들고 싶습니다.

0개의 댓글