Javascript

자바스크립트(10) 클래스와 객체 -2

DoosanBaek 2022. 8. 24. 00:33

자바스크립트 강의 

 

개발일지

학습 진행 내용

 

메소드 (method)

클래스에는 데이터(값)를 나타내는 속성을 정의 할 수 있다.

그리고 함수와 같이 특정 코드를 실행할 수 있는 메소드도 정의 할 수 있다.

👉 객체를 생성한 후, 만들어진 객체의 메소드를 호출하면 된다.

 

// 클래스 선언
class Product {
	constructor(name, price) {
		this.name = name
		this.price = price
	}

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

// 객체 생성 및 메소드 호출
const notebook = new Product('Apple Macbook', 2000000)
notebook.printInfo() // 상품명: Apple Macbook, 가격: 2000000원

 

객체 리터럴(Object Literal)

자바스크립트에서는 객체 리터럴을 활용해서 바로 객체를 만들 수도 있다.

객체 리터럴은 클래스와 같은 템플릿 없이 빠르게 객체를 만들 수 있는 방법이라고 생각하면 됨.

2개 이상의 속성과 메소드가 있을 때는 쉼표로 구별해주고, 가독성을 위해서 줄바꿈도 해주는 게 좋다.

 

const 변수명 = {

속성명: 데이터,

메소드명: function () { 메소드 호출시 실행할 코드들 }

}

const computer = {
	name: 'Apple Macbook',
	price: 20000,
	printInfo: function () {
		console.log(`상품명: ${this.name}, 가격: ${this.price}원`)
	}
}

computer.printInfo()

해당 코드는

  • computer -> 변수명
  • printInfo -> 메소드명
  • name, price -> 속성

 

👉 즉, name, price라는 속성과 printInfo 라는 메소드를 가지고 있는 객체를 만들어서

computer라는 변수에 할당하는 코드다.

 

해당 객체의 printInfo 메소드를 바로 호출까지 해보았다.

(결과적으로는 클래스를 활용해 객체를 만든 것과 동일하다;)

 

그렇다면 왜 굳이 복잡하게 클래스를 정의했을까.

 

👉 바로 재사용성 때문이다.

(한번 클래스를 만들어두면 같은 속성과 메소드를 갖고 있는 객체를 훨씬 더 간결한 코드로 만들 수 있다.)

 

 

연습) 나만의 의류 쇼핑몰을 만들려고 한다. 옷의 종류는 많지만 기본적으로 색깔, 사이즈, 가격의 속성을 갖고 있다. 그리고 이 옷들의 세 속성을 바로 확인할 수 있게 출력해주는 메소드가 필요하다. 클래스와 객체를 활용해 작성해보기

 

class Cloth {
	constructor(color, size, price) {
		this.color = color
		this.size = size
		this.price = price
	}

	printInfo() {
		console.log(`색깔: ${this.color}, 사이즈: ${this.size}, 가격: ${this.price}`)
	}
}

const shirts = new Cloth('white', 'M', '50000')
const coat = new Cloth('navy', 'L', '200000'

shrits.printInfo()
coat.printInfo()