πŸ“JS Class 곡뢀 일지 - class의 ꡬ성

κΉ€μ˜μš°Β·2022λ…„ 11μ›” 22일
1
post-thumbnail

class ν‚€μ›Œλ“œλ₯Ό 톡해 λ§Œλ“  ν΄λž˜μŠ€λŠ” 기본적으둜

  1. ν”„λ‘œνΌν‹° (ν•„λ“œ)
  2. λ©”μ„œλ“œ

μ΄λ ‡κ²Œ 두 κ°€μ§€λ‘œ κ΅¬μ„±λœλ‹€.

각각에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

1. ν”„λ‘œνΌν‹° (ν•„λ“œ)

class User{
  name;
  email;
  
  constructor(name, email){
    this.name = name;
    this.email = email;
  }
}

const user1 = new User("μš°ν…Œμ½”", "woowacourse@gmail.com");

μœ„ μ˜ˆμ‹œλ₯Ό 보면 UserλΌλŠ” ν΄λž˜μŠ€κ°€ μžˆλ‹€. UserλŠ” name, email μ΄λ ‡κ²Œ 두 κ°€μ§€μ˜ λ³€μˆ˜λ₯Ό 가진닀. 이 두 λ³€μˆ˜λ₯Ό ν”„λ‘œνΌν‹°λΌκ³  λΆ€λ₯Έλ‹€. μ²˜μŒμ—λŠ” 이런 쀄 μ•Œμ•˜λ‹€.


λ‹€μŒ μ΄λ―Έμ§€λŠ” μš°ν…Œμ½” ν”„λ¦¬μ½”μŠ€ 2μ£Όμ°¨ 곡톡 ν”Όλ“œλ°± λ‚΄μš©μ˜ 일뢀이닀.

ν•„λ“œ...? 값을 μ €μž₯ν•˜λŠ” 녀석은 무쑰건 ν”„λ‘œνΌν‹°λΌ μƒκ°ν–ˆλŠ”λ° 처음 λ³΄λŠ” ν•„λ“œλΌλŠ” μΉœκ΅¬κ°€ μžˆμ—ˆλ‹€.

μœ„ μ΄λ―Έμ§€λŠ” κ΄€λ ¨ λ‚΄μš©μ„ 검색해보고, κ°€μž₯ 이해가 μ‰¬μš΄ 닡변을 μ°Ύμ•„μ˜¨ 것이닀. κ°„λ‹¨νžˆ μš”μ•½ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

β—ν΄λž˜μŠ€μ™€ ν”„λ‘œνΌν‹°λŠ” λ‹€μŒμ˜ 두 차이점을 보인닀.

  1. ν•„λ“œλŠ” 클래슀 λ ˆλ²¨μ—μ„œ 값을 μ €μž₯ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€.
    - ν•„λ“œλŠ” 클래슀 μŠ€μ½”ν”„μ—μ„œ λ³€μˆ˜μ˜ κ°œλ…μœΌλ‘œ 쓰인닀.
    - μΈμŠ€ν„΄μŠ€μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜κ³  μ‹Άλ‹€λ©΄ ν•„λ“œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

  2. ν”„λ‘œνΌν‹°λŠ” 데이터λ₯Ό μ €μž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.
    • ν”„λ‘œνΌν‹°λŠ” get, set λ©”μ„œλ“œμ˜ μŒμ΄λ‹€.
    • ν”„λ‘œνΌν‹°λŠ” 데이터λ₯Ό μ €μž₯ν•˜μ§€ μ•Šκ³ , ν•„λ“œμ— μ ‘κ·Όν•˜μ—¬ κ·Έ 값을 λ³€κ²½ν•  뿐이닀.

클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•΄μ„œ 값을 μ €μž₯ν•  λ•Œ μ‹€μ œλ‘œ κ·Έ 값을 μ €μž₯ν•˜κ³  μžˆλŠ” 녀석을 ν•„λ“œλΌκ³  λΆ€λ₯Έλ‹€λŠ” 점을 μƒˆλ‘œ μ•Œκ²Œ λ˜μ—ˆλ‹€.


2. λ©”μ„œλ“œ

class User{
  name;
  email;

  constructor(name, email){
    this.name = name;
    this.email = email;
  }
  
  printName(){
    console.log(this.name);
  }
  
  printEmail(){
    console.log(this.email);
  }
}

const user1 = new User("μš°ν…Œμ½”", "woowacourse@gmail.com");

user1.printName(); // μš°ν…Œμ½” 좜λ ₯
user1.printEmail(); // woowacourse@gmail.com 좜λ ₯

이전 ν”„λ‘œνΌν‹° 클래슀 μ˜ˆμ‹œμ— printName, printEmailμ΄λž€ ν•¨μˆ˜κ°€ ν΄λž˜μŠ€μ— μΆ”κ°€λ˜μ–΄ μžˆλ‹€. 각 ν•¨μˆ˜λ“€μ„ 보면 this둜 λ‚΄λΆ€ ν•„λ“œμ— μ ‘κ·Όν•΄ 이λ₯Ό 좜λ ₯ν•˜λŠ” 역할을 μˆ˜ν–‰ν•œλ‹€.

이처럼 클래슀 λ‚΄λΆ€μ—μ„œ μ–΄λ–€ λ‘œμ§μ„ μˆ˜ν–‰ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ©”μ„œλ“œλΌκ³  λΆ€λ₯Έλ‹€. λ‚œ λ©”μ†Œλ“œ 보단 λ©”μ„œλ“œκ°€ 더 μ’‹μ•„ λ©”μ„œλ“œλΌ λΆ€λ₯Έλ‹€πŸ˜πŸ˜

λ©”μ„œλ“œ 쀑 νŠΉμ΄ν•œ 녀석이 ν•˜λ‚˜ μžˆλ‹€. λ°”λ‘œ constructor이닀.

μš°λ¦¬κ°€ newλ₯Ό 톡해 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ jsλŠ” μžλ™μœΌλ‘œ 빈 ν•¨μˆ˜λ₯Ό μƒμ„±ν•œλ‹€. 그리고 κ·Έ ν•¨μˆ˜μ˜ 본문을 μ±„μ›Œλ„£μ„ λ•Œ constructor의 λ‚΄μš©μ„ μ±„μ›Œλ„£λŠ”λ‹€. κ·Έ ν›„ 클래슀 내에 μ •μ˜ν•œ ν”„λ‘œνΌν‹°, λ©”μ„œλ“œλ₯Ό prototype에 μ €μž₯ν•œλ‹€.

λ”°λΌμ„œ 클래슀의 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œ κ°€μž₯ λ¨Όμ € ν˜ΈμΆœλ˜λŠ” 녀석이 λ°”λ‘œ constructorλΌλŠ” 것이닀. 이 녀석은 μ΄λŸ¬ν•œ νŠΉμ„± λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€ μƒμ„±μ‹œ μ™ΈλΆ€ 값을 톡해 객체의 ν•„λ“œ 값을 μ΄ˆκΈ°ν™”ν•˜κ³ μž ν•  λ•Œ 쓰인닀.


(μΆ”κ°€) μΈμŠ€ν„΄μŠ€λž€?

μ•žμ„œ μ—¬λŸ¬ κ°œλ…μ„ μ„€λͺ…ν•  λ•Œ μΈμŠ€ν„΄μŠ€λΌλŠ” 말을 자주 μ‚¬μš©ν–ˆλŠ”λ° μΈμŠ€ν„΄μŠ€κ°€ 무엇인지 μ •ν™•νžˆ μ•Œκ³ μž 정보λ₯Ό μ°Ύμ•„λ³΄μ•˜λ‹€.

wikipediaμ—μ„œ 찾은 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μΈμŠ€ν„΄μŠ€μ˜ μ •μ˜μ΄λ‹€. μ •λ¦¬ν•΄λ³΄μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

μΈμŠ€ν„΄μŠ€λŠ” ν”„λ‘œκ·Έλž¨μ˜ λŸ°νƒ€μž„ 쀑에 μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  객체의 ꡬ체적인 λ°œμƒμ΄λ‹€.

λ”°λΌμ„œ 클래슀λ₯Ό 톡해 μΆ”μƒν™”λœ λ‚΄μš©μ„ ꡬ체적인 κ°’μœΌλ‘œ μ €μž₯ν•˜κ³  μžˆλŠ” 각 객체λ₯Ό μΈμŠ€ν„΄μŠ€λΌκ³  λΆ€λ₯Έλ‹€κ³  ν•  수 μžˆλ‹€. μ˜ˆμ‹œλ₯Ό 보자.

class User{
  name;
  email;
  
  constructor(name, email){
    this.name = name;
    this.email = email;
  }
}

const user1 = new User("μš°ν…Œμ½”", "woowacourse@gmail.com");

μ²˜μŒμ— ν”„λ‘œνΌν‹° κ°œλ…μ„ μ΄ν•΄ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν–ˆλ˜ μ˜ˆμ‹œμ΄λ‹€. μ—¬κΈ°μ„œ UserλŠ” 클래슀, user1은 User클래슀의 μΈμŠ€ν„΄μŠ€μ΄λ‹€.

Userμ—λŠ” name, emailλΌλŠ” ν•„λ“œκ°€ μ ν˜€μ Έ μžˆμ§€λ§Œ μ΄λŠ” μ‹€μ œ 값을 μ €μž₯ν•œ μƒνƒœκ°€ μ•„λ‹ˆλ‹€. λ‹€μ‹œ 말해 UserλŠ” μœ μ €λΌλŠ” κ°œλ…μ„ name, emailμ΄λΌλŠ” ν•„λ“œλ₯Ό κ°€μ§€λŠ” 객체둜 좔상화 ν•œ 것일 뿐이닀.

ν•˜μ§€λ§Œ newμ—°μ‚°μžλ₯Ό 톡해 μƒμ„±λœ user1은 User와 달리 μ‹€μ œλ‘œ 값을 가지고 μžˆλŠ” 객체이닀. user1은 μœ μ €λΌλŠ” κ°œλ…μ„ μΆ”μƒν™”ν•œ Userλ₯Ό ꡬ체적인 κ°’μœΌλ‘œ μ €μž₯ν•˜κ³  μžˆλŠ” 객체인것이닀.

λ‹€μ†Œ μ–΄λ ΅κ²Œ 느껴질 수 μžˆμ„ κ°œλ…μ΄λ‚˜ 천천히 읽어본닀면 μ˜μ™Έλ‘œ 어렡지 μ•Šκ²Œ 이해할 수 μžˆμ„ 것이닀.

profile
λΆˆνŽΈν•œ 일듀을 개발둜 ν’€μ–΄λ‚΄κ³  싢은 ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžμž…λ‹ˆλ‹€!

0개의 λŒ“κΈ€