SEB_FE_45(코드스테이츠)/section 2.

TIL] Unit 2. 객체지향프로그래밍(클래스와 인스턴스)

YTReeee 2023. 5. 11. 14:43

SEB_FE_45

Section2. Unit 2. 클래스와 인스턴스 in 객체지향 프로그래밍 


클래스(class)란?

자바스크립트에서 클래스는 ES6에서 도입되었다. 자바스크립트는 프로토타입의 객체지향 프로그래밍 언어이다.

클래스란 특정 객체를 생성하기 위해 변수와 매서드를 정의하는 틀(template)이며, 이는 같은 종류의 집단(객체, object)에 속하는 속성(변수)과 행위(매서드)를 정의하는 것이다.

클래스는 같은 종류의 집단(객체) 생성에 사용되는 패턴 혹은 청사진(blueprint)이다.

인스턴스(instance)?

인스턴스는 클래스(청사진, blueprint)를 바탕으로 한 객체(오브젝트, object)를 의미한다.

모든 인스턴스는 오직 클래스에서 정의된 범위 내에서만 작동하며 런타임에 그 구조를 변경할 수 없다.

이러한 특성으로 인해 정확성, 안정성, 예측성 측면에서 클래스 기반 언어가 프로토타입 기반 언어보다 좀 더 나은 결과를 보장한다.

객체 지향 프로그래밍에서 빠지지 않고 등장하는 키워드로 this가 있다. 이는 한마디로 인스턴스 객체를 의미한다.

new 키워드와 생성자 함수

인스턴스를 만들때 사용하며, 즉시 생성자 함수를 실행시켜, 변수에 클래스의 설계(구조)를 가진 새로운 객체(인스턴스)가 할당된다.

함수는 new 키워드의 사용 여부에 따라 일반 함수로 호출되거나 인스턴스(객체) 생성을 위한 생성자 함수로 호출된다.

단, 클래스는 인스턴스를 생성하는 것이 유일한 존재 이유이기 때문에 반드시 new 키워드와 함게 함수를 호출해야 한다.

ES5 클래스 작성문법과 ES6 클래스 작성문법

ES5 클래스 작성문법

 ES6 클래스 작성문법

function Student (school, year,  class){
    this.school = school;
    this.year = year;
    this.class = class;
}

Student.prototype.role = function(){
    console.log('반장입니다.')
}

let daniel = new Student('Seoul-high-school', 2, 3);
daniel.school // 'Seoul-high-school'
daniel.role // '반장입니다.'
class Student {
    constructor (school, year,  class) {
        this.school = school;
        this.year = year;
        this.class = class;
    }

    role() {
        console.log('반장입니다.')
    }
}

let daniel = new Student('Seoul-high-school', 2, 3);
daniel.school // 'Seoul-high-school'
daniel.role // '반장입니다.'

출처 : 1) poiemaweb.com / 2) https://ko.wikipedia.org/wiki/클래스_(컴퓨터_프로그래밍)