
현재 문서는 학습 진도에 따라 계속 업데이트 해나갈 예정입니다!
Mdn 문서를 살펴보겠습니다
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/call
객체 지향 프로그래밍 (Object-oriented Programming)
- 객체지향 프로그래밍은 실제 세계에 기반한 모델을 만들기 위해 추상화를 사용하는 프로그래밍 패러다임이다.
- 객체지향 프로그래밍은 함수들의 집합 혹은 단순한 컴퓨터의 명령어들의 목록 이라는 기존의 프로그래밍에 대한 전통적인 관점에 반하여, 관계성있는 객체들의 집합이라는 관점으로 접근하는 소프트웨어 디자인으로 볼 수 있다.
- 객체지향 프로그래밍은 보다 유연하고 유지보수성이 높은 프로그래밍을 하도록 의도되었고, 대규모 소프트웨어 공학에서 널리 알려져 있다.
객체지향 프로그래밍이란 하나의 모델이 되는 청사진(blueprint)를 만들고 그 청사진을 바탕으로 한 객체(object)를 만드는 프로그래밍 패턴입니다.
자바스크립트에서는 이 청사진을 class라고 부르고, 해당 객체를 instance라고 부릅니다.
// 1. ES5에서 class는 함수로 정의할 수 있습니다.
function Car(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color; // -> constructor
}
// 2. ES6에서는 class 키워드를 이용해서 정의할 수 있습니다
class Car() {
constructor(brand, name, color) {
this.brand = brand; // property
this.name = name;
this.color = color;
}
}
let avante = new Car('hyundai', 'avante', 'black')
let mini = new Car('bmw', 'mini', 'red')
let beetles = new Car('volkswagen', 'beetles', 'black')
//ES5
function Car(brand, name, color){ /* 생략 */ }
Car.prototype.refuel = function() {
// 연료 공급을 구현하는 코드
}
Car.prototype.drive = function() {
// 운전을 구현하는 코드
}
//ES6
class Car() {
constructor(brand, name, color) { /* 생략 */ }
refuel() {
}
drive() {
}
}
class : 객체의 특성을 정의
prototype : 모델의 청사진을 만들 때 쓰는 원형 객체 (original form) 입니다.
constructor : 인스턴스가 초기화될 때 실행하는 생성자 함수
this : 함수가 실행될 때, 해당 scope마다 생성되는 고유한 실행 context (execution context). new 키워드로 인스턴스를 생성했을 때에는, 해당 인스턴스가 바로 this의 값이 됨.