JS - Class, Methods / TIL - 4

주지홍·2022년 1월 1일
0

TIL

목록 보기
6/25
post-thumbnail

클래스 (Class)

클래스는 객체지향 프로그래밍의 핵심.

원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있다.

객체를 매번 만들어서 사용해도 좋지만,

큰 큐모의 객체 이거나 비슷한 모양의 객체를 계속 만들어야 한다면,

class라는 설계도를 통해 효율을 낼 수 있음.

let ray = {  
  name: 'Ray',  
  price: 2000000,   
  getName: function() {  
    return this.name;  
  },   
  getPrice: function() {  
    return this.price;  
  },   
  applyDiscount: function(discount) {  
    return this.price * discount;   
  } 
}

객체 내부에서, 해당 객체의 프로퍼티에 접근하려면 "this"라는 키워드를 사용.

인스턴스 - class를 통해 생성된 객체

class Car {
  constructor(name, price) {
    this.name = name;
    this.price = price;
    this.department = "선릉지점";
    this.salesAmount = 0;
  }
  applyDiscount(discount) {  
    return this.price * discount;   
  }  
  addSales() {
    this.salesAmount++;
  }
}
  • 객체(object)의 설계도인 클래스(class)는 문법이 비슷
  • constructor 라는 생성자 함수
  • class로 객체를 생성하는 과정을 '인스턴스화

벤츠라는 자동차를 등록해보자

  • 인스턴스는 Class 이름에 new 를 붙여서 생성합니다.
  • 클래스 이름 우측에 () 괄호를 열고 닫고, 내부에는 constructor 에서 필요한 정보를 인자로 넘겨줌.
  • Car클래스의 instance를 benz 라는 변수에 저장.
  • Car 클래스의 새로운 instance를 생성하려면 new 키워드가 필요.
  • new 키워드는 constructor() 메서드를 호출하고 새로운 instance를 return
  • 'Benz'이라는 String과 200000000 이라는 Number를 Car 생성자에 넘겨주었고, name, price 프로퍼티에 각자의 값이 할당.
const benz = new Car('Benz', 200000000);

console.log(benz);
console.log(benz.name);
console.log(benz.price);
console.log(benz.applyDiscount(0.5));

출력값

- Car {
  name: 'Benz',
  price: 200000000,
  department: '선릉지점',
  salesAmount: 0,
  __proto__: {
    constructor: ƒ Car(),
    applyDiscount: ƒ applyDiscount(),
    addSales: ƒ addSales()
  }
}
- 'Benz'
- 200000000
- 100000000

메서드 (Methods)

메서드는 함수.

그런데 객체가 프로퍼티 값으로 갖고 있는 것을 메서드라고 함.

Class의 method는 Object(객체)의 문법과 똑같음.

다만, 객체는 프로퍼티마다 comma(,)로 구분해줘야 했지만, 클래스는 그렇지 않다.

문제 1 : MyMath 라는 class를 생성해주세요.

constructor 에서는 숫자 2개를 인자로 받아 프로퍼티로 저장합니다.4개의 메서드를 구현해주세요.

getNumber : 두 개의 숫자가 무엇인지 배열로 반환하는 메서드 → ex) [1, 2]

add : 두 개의 숫자를 더하는 메서드

substract : 두 개의 숫자를 빼는 메서드

multiply : 두 개의 숫자를 곱하는 메서드

class MyMath {
  constructor(num1, num2) {
    this.num1 = num1;
    this.num2 = num2;
  }
  getNumber() {
    let arr = [];
    arr.push(this.num1);
    arr.push(this.num2);
    return arr;
  }
  add() {
    return this.num1 + this.num2;
  }
  substract() {
    return this.num1 - this.num2;
  }
  multiply() {
    return this.num1 * this.num2;
  }
}
profile
오늘도 내일도 끊임없는 싸움

0개의 댓글