객체지향 프로그래밍을 이해하기 위해서는 클래스와 인스턴스의 이해가 필요합니다.
그렇기 때문에 객체지향 프로그래밍에 대해 본격적으로 공부 해보기 전에 클래스와 인스턴스에 대해서 정리하고 넘어가려고 합니다.
클래스
정의 : 객체를 만들기 위한 틀을 잡아주는 문법(ex.붕어빵 틀)
클래스를 만드는 방법은 두가지가 있습니다
두가지 방법 전부 다른 일반적인 함수와 구분하기 위해 클래스는 대문자로 시작하는 일반명사로 만든다
- 일반적인 함수를 정의하듯 만드는 법(ES5클래스 작성 문법)
function Computer (brand, name, version, color){
this.color = black;
.
.
.
}
- ES6에 도입된 문법
최근에 주로 사용되는 방식으로 class 생성자를 이용하여 정의한다
class Computer {
constructor(brand, name, version, color) {
this.color = black;
.
.
.
}
}
이 함수를 '생성자(constructor) 함수'라고 해요
생성자 함수란 클래스 기반으로 인스턴트 (객체)를 생성할 때 처음 호출되는 함수를 말합니다.
생성자 함수는 return값을 만들지 않습니다.
인스턴스
정의 : 클래스(틀)을 바탕으로 한 객체(ex. 붕어빵)
새로운 인스턴스를 만들기 위해서는 new 키워드를 사용 하면 됩니다.
DOM에서도 createElement 키워드를 이용해서 인스턴스를 생성할 수 있다
let div = document.creatElement('div')
인스턴스를 생성하고 나면 생성자 함수가 실행되며, 변수에 새로운 객체 즉, 인스턴스가 할당됩니다.
각각의 인스턴스는 클래스의 고유한 속성과 메서드를 갖게 됩니다.
* 속성은 위의 예시에 brand, name 등과 같은 컴퓨터의 '속성'을 나타내는 것
let mac = new Computer ('apple','mac air','m2','gray');
또는 클래스 예시처럼 this로 정의하여 인스턴스를 할당할 수 있습니다
this는 간단하게 인스턴스 객체를 의미하며 만들어진 인스턴스에 this를 이용해 해당 브랜드, 이름등을 부여하겠다는 의미
* 메서드는 속도, 용량등의 기능을 나타내는 객체에 딸린 함수
run() {
console.log(this.name + "가 부팅되었습니다")
}
ES6방식으로 생성한 클래스에서는 위의 방식으로 메서드를 정의할 수 있지만
ES5방식으로 생성한 클래스에서는 prototype을 이용해야 합니다
Computer.prototype.run = function () {
console.log(this.name + "가 부팅되었습니다")
}
클래스와 인스턴스에 대해 공부하면서 this 키워드를 처음 접하게 되었는데 , 이 부분도 공부해서 포스팅해야겠다.
'junior developer :) > JS_JavaScript' 카테고리의 다른 글
프로토타입과 클래스, 프로토타입 체인 (0) | 2022.09.22 |
---|---|
객체지향 프로그래밍 (OOP : Object-Oriented Programming) (0) | 2022.09.21 |
css Link를 <head>에 선언하고 js script를 <body>에 선언하는 이유(JS) (0) | 2022.09.20 |
함수 선언식 vs 함수 표현식 vs 화살표 함수 (JS) (0) | 2022.09.15 |
DOM 이란? / Tree 자료구조 (JS) (0) | 2022.09.13 |