πŸ“Œ React 곡뢀 μ „ 볡슡

choseyΒ·2022λ…„ 11μ›” 17일
0

React

λͺ©λ‘ 보기
1/4

ClassλŠ” μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜λŠ” 방법 쀑 ν•˜λ‚˜
-2022.11.22 ES7 클래슀 상속 문법 μ˜ˆμ‹œ 사진 μΆ”κ°€


JavaScript의 ClassλŠ” 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ ν…œν”Œλ¦ΏμœΌλ‘œ, 데이터와 이λ₯Ό μ‘°μž‘ν•˜λŠ” μ½”λ“œλ₯Ό ν•˜λ‚˜λ‘œ μΆ”μƒν™”ν•œλ‹€.

λ˜ν•œ ν΄λž˜μŠ€λŠ” class ν‚€μ›Œλ“œλ‘œ μ •μ˜λ˜λ©°, property와 methodλ₯Ό κ°€μ§ˆ 수 있고, class 선언은 ν”„λ‘œν† νƒ€μž… 기반 상속을 μ‚¬μš©ν•˜μ—¬, 주어진 μ΄λ¦„μ˜ μƒˆλ‘œμš΄ 클래슀λ₯Ό λ§Œλ“ λ‹€.


Property와 Method

propertyλŠ” ν΄λž˜μŠ€μ™€ κ°μ²΄μ—μ„œ μ •μ˜λœ λ³€μˆ˜, methodλŠ” ν•¨μˆ˜λΌκ³  생각할 수 μžˆλ‹€.

이 λ‘˜μ€ Class body둜 뢈리며, new ν‚€μ›Œλ“œλ‘œ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ”λ° μ‹€μ œλ‘œ ν΄λž˜μŠ€λŠ” μƒμ„±μž ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” 쑰금 더 νŽΈν•œ 방법이닀.

μ—¬λ‹΄μœΌλ‘œ method λŠ” κ°’μœΌλ‘œ ν•¨μˆ˜λ₯Ό μ €μž₯ν•˜λŠ” property λ‘œλ„ 생각할 수 μžˆλ‹€.

πŸ’‘ μƒμ„±μž ν•¨μˆ˜ = constructor() { … }

Constructor, μƒμ„±μž ν•¨μˆ˜

Class의 constructor() λ©”μ†Œλ“œλŠ” 클래슀의 μΈμŠ€ν„΄μŠ€ 객체λ₯Ό μƒμ„±ν•˜κ³  μ΄ˆκΈ°ν™”ν•œλ‹€.

클래슀 객체λ₯Ό 생성할 λ•Œ λ§ˆλ‹€ 싀행됨


❗상속

ν΄λž˜μŠ€λŠ” 상속이 κ°€λŠ₯ν•œλ°, μžμ‹ ν΄λž˜μŠ€λŠ” μƒμ†ν•˜κ³ μžν•˜λŠ” λΆ€λͺ¨ 클래슀의 property 와 method λ₯Ό 상속받아 μžμ‹ μ΄ μ‚¬μš©ν•  수 μžˆλ‹€.

ꡬ문

class ChildClass extends ParentClass { ... }
MDN, Class extends

이 λ•Œ, μ€‘μš”ν•œ 것은 μžμ‹ ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•˜λ €λ©΄, super() λ©”μ†Œλ“œλ₯Ό λ¨Όμ € ν˜ΈμΆœν•΄μ•Όν•˜λŠ”λ°, μ•„λž˜ 사진은 extends ν‚€μ›Œλ“œλ‘œ 상속을 μ •μ˜ν•˜κΈ°λ§Œν•˜κ³  myGender() λ©”μ†Œλ“œλ₯Ό μ‹€ν–‰ν–ˆμ„ λ•Œ λ‚˜νƒ€λ‚˜λŠ” 였λ₯˜λ‹€.

ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor
λ²ˆμ—­ν•˜λ©΄
μ°Έμ‘° 였λ₯˜ : 'this'에 μ•‘μ„ΈμŠ€ν•˜κ±°λ‚˜ νŒŒμƒ μƒμ„±μžμ—μ„œ λ°˜ν™˜ν•˜κΈ° 전에 νŒŒμƒ 클래슀의 super μƒμ„±μžλ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ μžμ‹ 클래슀의 μƒμ„±μž ν•¨μˆ˜ μ•ˆμ— super() λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•΄μ•Όν•œλ‹€.

이 λ•Œ, super() λŠ” λ©”μ†Œλ“œμ΄μž ν‚€μ›Œλ“œλ‘œ, λΆ€λͺ¨ 클래슀의 μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€.

μžμ‹ 클래슀인 Person이 λΆ€λͺ¨ 클래슀인 Human의 myGender() λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜κΈ°μœ„ν•΄ μžμ‹ μ˜ μƒμ„±μž ν•¨μˆ˜ νŒŒλΌλ―Έν„°λ‘œ genderλ₯Ό μΆ”κ°€ν•˜κ³ , μ•„λž˜ 호좜된 super() λ©”μ†Œλ“œμ— μ œκ³΅ν•œλ‹€.

μƒμ†λœ Method μ‚¬μš© μ˜ˆμ‹œ

μƒμ†λœ Property μ‚¬μš© μ˜ˆμ‹œ

κ·ΈλŸ¬λ‚˜ ES 7 λ¬Έλ²•μ—μ„œλŠ” 쑰금 달라진닀

ES 7 μ—μ„œλŠ” μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€μ•Šμ•„λ„ ν΄λž˜μŠ€μ— λ°”λ‘œ propertyλ₯Ό ν• λ‹Ήν•  수 μžˆλ‹€.

그게 무슨 말이냐면, μ•žμ—μ„œ 클래슀의 property λŠ” ν΄λž˜μŠ€μ™€ 객체의 λ³€μˆ˜κ°™μ€ 것이고, method λŠ” ν΄λž˜μŠ€μ™€ 객체의 ν•¨μˆ˜κ°™μ€ 것이라고 μ–ΈκΈ‰ν–ˆλŠ”λ°, μ•„λž˜λŠ” κΈ°μ‘΄ 문법과 ES 7 문법λ₯Ό λΉ„κ΅ν•œ μ½”λ“œ

Property

// ES 6
constructor(){
	this.property = "value"
}

// ES 7
property = "value"

Method

// ES 6
method() { ... }

// ES 7
method = () => { ... }

λ‹€μŒμ€ ES 7 λ¬Έλ²•μœΌλ‘œ μž‘μ„±λ„λ‹ˆ 클래슀 상속 μ˜ˆμ‹œ


β“Β κ·Έλž˜μ„œ Methodλ₯Ό ν™”μ‚΄ν‘œ ν•¨μˆ˜ ꡬ문으둜 μ„ μ–Έν•˜λŠ” μ΄μœ λŠ”?

μš”μ•½ν•˜μžλ©΄ this ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠκΈ° μœ„ν•¨

κΈ°μ‘΄ λ¬Έλ²•μ—μ„œλŠ” 클래슀 μƒμ†μœΌλ‘œ μΈν•œ this 바인딩 λ¬Έμ œκ°€ 자주 λ°œμƒν•˜λŠ”λ° Arrow function을 톡해 이λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€.

profile
chosey

0개의 λŒ“κΈ€