[JavaScript] Class 클래스 (1)

Lpla

·

2021. 1. 26. 21:45

반응형

기존 프로토타입 상속 문법

function Hello (name) {
  this.name = name;
}

Hello.prototype.sayHello = function () {
  console.log(this.name + "님 안녕하세요.");
}

const h1 = new Hello('lpla');
const h2 = new Hello('coffee');

h1.sayHello();
h2.sayHello();

// 결과
// lpla님 안녕하세요.
// coffee님 안녕하세요.

 

ES6 클래스 상속 문법

class Hello {
  constructor(name) {
    this.name = name;
  }

  sayHello() {
    console.log(this.name + "님 안녕하세요.");
  }
}

const h1 = new Hello("lpla");
const h2 = new Hello("coffee");

h1.sayHello();
h2.sayHello();

// 결과
// lpla님 안녕하세요.
// coffee님 안녕하세요.

 

자바스크립트는 프로토타입 기반 객체 지향 언어이고 모든 객체는 프로토타입으로부터 프로퍼티와 메서드를 상속 받는다.

ES6 에서 도입된 클래스 역시 다르지 않다.

클래스 문법을 해석하면 아래와 같다.

 

// 1. Hello 라는 함수를 만든다.
class Hello {
  constructor(name) {
    this.name = name;
  }

  sayHello() {
    console.log(this.name + "님 안녕하세요.");
  }
}
// 2. 타입 확인 결과 Hello 는 함수이다.
console.log(typeof Hello);
// function
// 3. Hello 는 Hello 생성자 메서드와 같다.
console.log(Hello === Hello.prototype.constructor);
// true
// 4. 클래스 내부 메서드는 Hello.prototype 에 저장된다.
console.log(Hello.prototype.sayHello);
// console.log(this.name + "님 안녕하세요.");
// 5. Hello 의 프로토타입에는 2개의 메서드가 존재한다.
console.log(Object.getOwnPropertyNames(Hello.prototype));
// (2) ["constructor", "sayHello"]
반응형