λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/Javascript & NodeJS

[Javascript] Class

by vodkassi 2021. 5. 13.
728x90

✨ Class λž€?

객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν…œν”Œλ¦Ώμ΄λ‹€. ES6λΆ€ν„°λŠ” class ν‚€μ›Œλ“œλ‘œ 생성할 수 μžˆλ‹€.

 

class Student{
  constructor(name, age, major){ // constructor(μƒμ„±μž) ν•¨μˆ˜, 그리고 instance 의 properties(attributes)
      //instance 속성 μ •μ˜
      this.name = name;
      this.age = age;
      this.major = major; // this = μƒμ„±λ˜λŠ” μΈμŠ€ν„΄μŠ€
  }
}

 

Class 의 νŠΉμ§•:

 

- ν•¨μˆ˜ν˜• Class λŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€λ§Œ, μ„ μ–Έν˜• Class λŠ” ν˜Έμ΄μŠ€νŒ…μ΄ μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€.

- 클래슀 μ•ˆμ—λŠ” ν•˜λ‚˜μ˜ constructor λ©”μ„œλ“œλ§Œ μ‘΄μž¬ν•  수 있으며, μ—¬λŸ¬ 개의 constructor λ©”μ„œλ“œκ°€ μžˆμ„ 경우 SyntaxError κ°€ λ°œμƒν•œλ‹€.

- extends ν‚€μ›Œλ“œλ₯Ό 톡해 클래슀 상속을, super ν‚€μ›Œλ“œλ₯Ό 톡해 속성 상속을 ν•  수 μžˆλ‹€.

 

✨ Instance 와  Method λž€?

 

InstanceλŠ” 클래슀의 κ³ μœ ν•œ 속성과 λ©”μ„œλ“œλ₯Ό κ°–λŠ” 객체이닀. new ν‚€μ›Œλ“œλ‘œ 생성할 수 μžˆλ‹€.

 

let firstStudent = new Student('Meryl', 65, 'Art')
// this = firstStudent
// firstStudent.name = 'Meryl'

 

Method λŠ” μ΄λŸ¬ν•œ 객체의 속성인 ν•¨μˆ˜μ΄λ‹€.

Instance에 속성을 λΆ€μ—¬ν•˜λ €λ©΄ κΌ­ constructor ν•¨μˆ˜λ₯Ό 써야 ν•œλ‹€.

 

class Student{
  newStudent(name, age, major){ // constructor(μƒμ„±μž) ν•¨μˆ˜
      //instance κ°€ 생성될 λ•Œ μ‹€ν–‰λ˜λŠ” μ½”λ“œ 
      this.name = name;
      this.age = age;
      this.major = major; // this = μƒμ„±λ˜λŠ” μΈμŠ€ν„΄μŠ€
  }
}

let testStudent = new Student('lol', 15, 'game')
// typeof testStudent === 'object'
// testStudent.name === 'undefined'

 

 

참고자료

 

MDN Class

λŒ“κΈ€