[javascript] 클래스와 인스턴스

2022. 7. 22. 16:52Study/JavaScript

    객체지향(OOP, Object-oriented programming)

    오늘 다룰 주제는 클래스와 인스턴스이다. C언어를 배울 때 접했던 개념을 다시 보게 되어 반가웠다. 그 당시에는 객체에 대한 사전지식 없이 단어 그대로만 받아들이고 있었는데, 객체에 대해 이해하고 보니 폭을 더 넓힐 수 있었다.

    객체

    객체 지향에서 다루는 객체란? 키-값쌍의 이뤄져있다. 객체를 구성하는 값은 어떤 것이라도 가능하다. 프로퍼티(property)와 메소드(method)라고 부른다.

    const oheun = {
    name : Kim Oheun,
    age : 24,
    university : ...
    }

    클래스

    클래스는 틀이다. 우리가 생각하는 고등학생은 어떤 존재일까? 이름이 있고, n살인, nn고등학교에 다니고, 집에서 몇 분 정도 걸리고 등을 생각해 볼 수 있다.

    클래스를 만드는 class 키워드를 통해 정의해보자. constructor 함수의 경우, 인스턴스가 만들어질 때 실행되는 함수이다. 다음과 같이 입력 후 실행시키면 어떤 일이 일어날까?

    class Student {
        constructor(name, age, highschool, distance){
        }
    }
    
    let kim = new Student('kim', '19', '수원', '30');
    

    음 나오지 않는다. 이유를 찾아보자면 인스턴스를 생성할 때 constructor 함수가 아무 것도 실행시키지 않기 때문이다.

    this

    this 메소드는 지금 동작하고 있는 코드를 가지고 있는 객체를 가리킨다. 다음과 같이 this 메소드를 사용하여 constructor 함수를 실행한다면 아래와 같이 새로운 인스턴스가 생성됨을 알 수 있다.

    class Student {
        constructor(name, age, highschool, distance){
        // 인스턴스가 만들어질 때 실행되는 코드
            this.name = name;
            this.age = age;
            this.highschool = highschool;
            this.distance = distance;
        }
    }
    
    let kim = new Student('kim', '19', '수원', '30');
    

    인스턴스

    그렇다면 위에서 여러 번 언급된 인스턴스란 무엇일까? 인스턴스는 클래스의 고유한 속성과 메소드를 갖는 새로운 객체이다. constructor함수에서 this는 인스턴스 객체를 의미하므로 학생의 속성으로 설정한 name, age, highschool, distance를 인스턴스에 부여한다는 의미이다.

            this.name = name;
            this.age = age;
            this.highschool = highschool;
            this.distance = distance;

    참고 자료

    맨 위로
    // //