TIL(20.02.26) Javascript(객체지향 프로그래밍)

이민택·2020년 2월 26일
0

TIL

목록 보기
11/44

객체 지향 프로그래밍

객체란 어떤 물체를 나타낼때 쓴다 세상에 존재하는 모든 것이 객체가 될 수 있다 그러면 객체 지향 프로그래밍이란 무엇일가? 객체지향 프로그래밍 (Object Oriented Programing) 은 프로그램으 개발할 때 객체 위주로 설계하여 프로그램을 작성하는 방식이다 이 방식으로 프로그램을 설계하면 유지보수가 용이하고 현실에 존재하는 것을 구현하기 편리하다.

클래스 정의

자바스크립트에서 클래스를 사용하는 방법은 두가지가 있다 하나는 es5까지 사용한 함수 선언과 비슷한 방식과 다른 하나는 es6에서 새롭게 추가된 class 키워드를 이용하는 방식이다

ES5

function PersoneEs5(name,age){
    this.name=name;
    this.age=age;


    PersoneEs5.prototype.meal=function(){
        console.log('식사를 합니다');
    }

    PersoneEs5.prototype.sleep=function(){
        console.log(name+'이 잠을 잡니다');
    }
}

ES6

class PersoneEs6{
    constructor(name,age){
        this.name=name;
        this.age=age;
    }


    meal=function(){
        console.log('식사를 합니다');
    }

    sleep=function(){
        console.log(this.name+'이 잠을 잡니다');
    }
}

속성,메소드

속성

위 코드를 보면 Es6 버전에서 사용하는 방식을 보면 constructor 내부에서 name,age를 초기화 하는 것을 볼 수 있는데 이를 속성이라고 한다 객체에 대한 정보를 담고 있는 곳이다

메소드

메소드는 일반적으로 객체의 행동을 정의하는 부분이다 위 코드에서는 meal과 sleep이 메소드라고 볼 수 있다 메소드를 정의할 때 prototype을 붙여서 정의하는 이유는 아래 프로토타입에서 메소드를 호출하는 방식을 보면 알 수 있다

인스턴스

인스턴스는 new연산자를 이용해서 생성이 가능하다 위 코드에서 선언한 person 클래스를 이용하여 선언하여 보겠다

let p1= new PersoneEs5('leemintaek',25);

p1.name;
p1.age;
p1.meal();
p1.sleep();

프로토타입

모든 함수,클래스에는 프로토타입이라는 특별한 속성이 있다 이 속성은 new연산자를 이용하여 객체를 생성하면 이 객체를 생성할 때 사용한 생성 클래스의 prototype에 접근할 수 있게 된다. 생성된 인스턴스는 클래스의 prototype을 _ _proto_ _에 저장하고 있다가 메소드를 호출할 때 인스턴스에 존재하지 않으면 이 _ _proto_ _ 속성을 타고가서 클래스에 정의 된 메서드를 호출한다 자바스크립트는 실제로 자바의 클래스와 같은 것이 존재하는 것이 아니라 함수에 여러 기능을 추가해서 클래스와 비슷한 기능을 가지도록 한 것이다.

profile
데이터에 소외된 계층을 위해 일을 하는 개발자를 꿈꾸는 학생입니다

0개의 댓글