Class와 Object

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것중에서 자신의 속성을 갖고 있고 다른 것과 식별가능한 것

Class 선언

class Notebook {                            // 키워드와 class명
    constructor(name, price, company) {     // 생성자
        this.name = name                    // this와 속성(property)
        this.price = price
        this.company = company
    }
}
  • class 키워드와 class명
    class 선언 후 class명이 나옴 [class:class 선언],[Notebook:키워드]
  • 생성자 (constructor)
    객체가’생성’될 때 javascript 내부에서 호출되는 함수
  • this와 속성(property)
    this는 class를 사용해 만들어지는 객체 자기 자신을 의미
    뒤에 붙는 name,price,company 는 객체속성
    = 뒤에 붙는name,price,company 는 매개변수

Object 만들기

  • const 변수명 = new class명(생성자에서 정의한 매개변수)
const notebook1 = new Notebook('MacBook',2000000,'Apple')
  • new 라는 키워드 먼저 써주고 class명을 함수처럼 호출
  • 객체의 속성 하나하나에 접근해 데이터를 갖고와야 할 때 this.속성명 사용
const notebook1 = new Notebook('MacBook',2000000,'Apple')

console.log(notebook1)
console.log(notebook1.name)			// Macbook
console.log(notebook1.price)		// 2000000
console.log(notebook1.company)		// Apple

메소드 (method)

  • Class에는 데이터(값)를 나타내는 속성 뿐만 아니라 함수와 같이 특정 코드를 실행할 수 있는 method도 정의할 수 있다.
// Class 선언
class Product {
    constructor(name, price) {
        this.name = name
        this.price = price
    }


    printInfo() {
        console.log(`상품명:${this.name}, 가격:${this.price}원`)
    }
}

// 객체 생성 및 method 호출
const notebook = new Product ('Apple Macbook', 2000000)
notebook.printInfo()

> 상품명:Apple Macbook, 가격:2000000

객체 리터럴 (object Literal)

  • object Literal 은 class와 같으 템플릿없이 빠르게 객체를 만들 수 있는 방법
  • 2개 이상의 method, property가 있을때는 ‘ , ‘ 로 구별
const computer = {
    name: 'Apple Macbook',      // property
    price: 20000,               // property
    
    printInfo: function() {     // method
        console.log(`상품명: ${this.name}, 가격: ${this.price}`)
    }
}
computer.printInfo()

> 상품명: Apple Macbook, 가격: 20000