front-end/JavaScript

[JavaScript] 17. ν”„λ‘œν† νƒ€μž…(1)

gaan 2023. 5. 1. 10:36

πŸ“– λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ ꡐ재) 19μž₯. ν”„λ‘œν† νƒ€μž…

01. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” ν”„λ‘œν† νƒ€μž… 기반 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ΄λ―€λ‘œ, λ¨Όμ € 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•΄ μ•Œμ•„λ³Ό ν•„μš”κ°€ μžˆλ‹€.

객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ€ μ—¬λŸ¬ 개의 독립적 λ‹¨μœ„, 객체의 μ§‘ν•©μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ ν‘œν˜„ν•œλ‹€.

 

속성 : 객체의 νŠΉμ§•μ΄λ‚˜ μ„±μ§ˆμ„ λ‚˜νƒ€λ‚΄λ©°, 이λ₯Ό 톡해 κ΅¬λ³„ν•˜κ³  인식

-> ν•„μš”ν•œ μ†μ„±λ§Œ κ°„μΆ”λ € ν‘œν˜„ν•˜λŠ” 것을 좔상화라고 ν•œλ‹€.

// 이름과 μ£Όμ†Œ 속성을 κ°–λŠ” 객체
const person = {
    name: 'Lee',
    address: 'Seoul'
};

console.log(person); // {name: "Lee", address: "Seoul"}

 

κ°μ²΄λŠ” μƒνƒœ 데이터와 λ™μž‘μ„ ν•˜λ‚˜μ˜ 논리적인 λ‹¨μœ„λ‘œ 묢은 볡합적인 자료ꡬ쑰라고 ν•  수 μžˆλŠ”λ°,

μ—¬κΈ°μ„œ μƒνƒœ λ°μ΄ν„°λŠ” ν”„λ‘œνΌν‹°, λ™μž‘μ€ λ©”μ„œλ“œλΌκ³  λΆ€λ₯Έλ‹€.

const circle = {
    radius: 5, // λ°˜μ§€λ¦„(μƒνƒœ 데이터 = ν”„λ‘œνΌν‹°)

    // μ›μ˜ 지름: 2r (λ™μž‘ = λ©”μ„œλ“œ)
    getDiameter() {
        return 2 * this.radius;
    }
};

console.log(circle.getDiameter()); // 10

02. 상속과 ν”„λ‘œν† νƒ€μž…

ν”„λ‘œν† νƒ€μž…μ˜ λͺ©μ μ€ μ½”λ“œμ˜ λΆˆν•„μš”ν•œ 쀑볡을 μ œκ±°ν•˜κΈ° μœ„ν•¨μ΄λ‹€.

상속을 톡해 μƒμ„±μž ν•¨μˆ˜κ°€ 생성할 λͺ¨λ“  μΈμŠ€ν„΄μŠ€λŠ” μƒμœ„(λΆ€λͺ¨) 객체인 ν”„λ‘œν† νƒ€μž…μ˜ μžμ‚°μ„ κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

 

πŸ’‘ ν”„λ‘œν† νƒ€μž…μ˜ 생성 배경을 λ¨Όμ € μ•Œμ•„λ³΄μž.

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

λ™μΌν•œ ν”„λ‘œνΌν‹°(λ©”μ„œλ“œ 포함) ꡬ쑰λ₯Ό κ°–λŠ” 객체λ₯Ό μ—¬λŸ¬ 개 생성할 λ•Œ μœ μš©ν•˜λ‹€.

πŸ’₯ 문제점

μƒμ„±μž ν•¨μˆ˜κ°€ μƒμ„±ν•˜λŠ” κ°μ²΄μ—μ„œμ˜ λ©”μ„œλ“œλŠ”, λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ λ™μΌν•œ λ‚΄μš©μ˜ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•  λ•Œ ν•˜λ‚˜λ§Œ μƒμ„±ν•΄μ„œ κ³΅μœ ν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ λ°”λžŒμ§ν•˜μ§€λ§Œ κ·Έλ ‡μ§€ X

μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 λ•Œλ§ˆλ‹€ λ©”μ„œλ“œλ₯Ό 쀑볡 생성

 

➑️ μ΄λŸ¬ν•œ λΆˆν•„μš”ν•œ 쀑볡을 μ œκ±°ν•˜κΈ° μœ„ν•΄, ν”„λ‘œν† νƒ€μž…μ„ 기반으둜 상속을 κ΅¬ν˜„ν•œλ‹€.


03. ν”„λ‘œν† νƒ€μž… 객체

ν”„λ‘œν† νƒ€μž… κ°μ²΄λŠ” 객체 κ°„ 상속을 κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€.

➑️ ν”„λ‘œν† νƒ€μž…μ„ 상속받은 ν•˜μœ„(μžμ‹) κ°μ²΄λŠ” μƒμœ„(λΆ€λͺ¨) 객체의 ν”„λ‘œνΌν‹°(λ©”μ„œλ“œ 포함)λ₯Ό μžμ‹ μ˜ ν”„λ‘œνΌν‹°μ²˜λŸΌ 자유둭게 μ‚¬μš©ν•  수 μžˆλ‹€.

1) __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°

__proto__ λŠ” μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ‹€.

__proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λŠ” μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…μ— κ°„μ ‘μ μœΌλ‘œ μ ‘κ·Όν•˜κΈ° μœ„ν•œ ν”„λ‘œνΌν‹°λ‹€.

즉, [[Prototype]] λ‚΄λΆ€ μŠ¬λ‘―μ— 직접 μ ‘κ·Όν•˜μ§€ λͺ»ν•˜κ³ , __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 κ°„μ ‘μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλ‹€λŠ” 것이닀. 

 

1. __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 ν”„λ‘œν¬νƒ€μž…μ— μ ‘κ·Όν•˜λ©΄ -> __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°μ˜ getter ν•¨μˆ˜μΈ [[Get]]이 호좜

2. __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 μƒˆλ‘œμš΄ ν”„λ‘œν† νƒ€μž…μ„ ν• λ‹Ήν•˜λ©΄ -> __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°μ˜ setter ν•¨μˆ˜μΈ [[Set]]이 호좜

 

__proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λŠ” 상속을 톡해 μ‚¬μš©λœλ‹€.

❓ 객체의 ν”„λ‘œνΌν‹°μ— μ ‘κ·Όν•˜λ €κ³  ν•  λ•Œ, ν•΄λ‹Ή 객체에 μ ‘κ·Όν•˜λ €λŠ” ν”„λ‘œνΌν‹°κ°€ μ—†λ‹€λ©΄

➑️ __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°κ°€ κ°€λ¦¬ν‚€λŠ” μ°Έμ‘°λ₯Ό 따라 μžμ‹ μ˜ λΆ€λͺ¨ 역할을 ν•˜λŠ” ν”„λ‘œν† νƒ€μž…μ˜ ν”„λ‘œνΌν‹°λ₯Ό 순차적으둜 κ²€μƒ‰ν•œλ‹€.

μ΄λŸ¬ν•œ ν”„λ‘œν† νƒ€μž…μ˜ 체인의 쒅점은 μ΅œμƒμœ„ 객체인 Object.prototype이며, 이 객체의 ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλŠ” λͺ¨λ“  객체에 μƒμ†λœλ‹€.

 

__proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 ν”„λ‘œν† νƒ€μž…μ— μ ‘κ·Όν•˜λŠ” 이유

μƒν˜Έ 참쑰에 μ˜ν•΄ ν”„λ‘œν† νƒ€μž… 체인이 μƒμ„±λ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œμ΄λ‹€.

 

πŸ’₯ μ„œλ‘œκ°€ μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…μ΄ λ˜λŠ” 비정상적인 ν”„λ‘œν† νƒ€μž… 체인이 λ§Œλ“€μ–΄μ§ˆ 경우, ν”„λ‘œνΌν‹°λ₯Ό 검색할 λ•Œ λ¬΄ν•œ 루프에 λΉ μ§€κ²Œ λœλ‹€.

➑️ __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό 톡해 ν”„λ‘œν† νƒ€μž…μ— μ ‘κ·Όν•˜κ³  κ΅μ²΄ν•˜λ„λ‘ κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” 것이닀.

 

__proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό μ½”λ“œ 내에 직접 μ‚¬μš©ν•˜λŠ” 것은 ꢌμž₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

λͺ¨λ“  객체가 __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 것이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

 

❓ 그럼 μ–΄λ–»κ²Œ ❓

ν”„λ‘œν† νƒ€μž…μ˜ μ°Έμ‘° 취득 : __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹° λŒ€μ‹ , Object.getPrototypeOf λ©”μ„œλ“œ μ‚¬μš©

ν”„λ‘œν† νƒ€μž… ꡐ체 : __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹° λŒ€μ‹ , Object.setPrototypeOf λ©”μ„œλ“œ μ‚¬μš©

 

2) ν•¨μˆ˜ 객체의 prototype ν”„λ‘œνΌν‹°

ν•¨μˆ˜ 객체만이 μ†Œμœ ν•˜λŠ” prototype ν”„λ‘œνΌν‹°λŠ” μƒμ„±μž ν•¨μˆ˜κ°€ 생성할 μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œν† νƒ€μž…μ„ 가리킨닀.

즉, λͺ¨λ“  객체가 κ°€μ§€κ³  μžˆλŠ” __proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°μ™€ ν•¨μˆ˜ 객체만이 κ°€μ§€κ³  μžˆλŠ” prototype ν”„λ‘œνΌν‹°λŠ” κ²°κ΅­ λ™μΌν•œ ν”„λ‘œν† νƒ€μž…μ„ κ°€λ¦¬ν‚€λŠ” 것이닀.

 

πŸ’₯ 이 ν”„λ‘œνΌν‹°λ₯Ό μ‚¬μš©ν•˜λŠ” μ£Όμ²΄λŠ” λ‹€λ₯Έλ°,

__proto__ μ ‘κ·Όμž ν”„λ‘œνΌν‹°μ˜ μ‚¬μš© 주체 : λͺ¨λ“  객체

prototype ν”„λ‘œνΌν‹°μ˜ μ‚¬μš© 주체 : μƒμ„±μž ν•¨μˆ˜

 

3) ν”„λ‘œν† νƒ€μž…μ˜ constructor ν”„λ‘œνΌν‹°μ™€ μƒμ„±μž ν•¨μˆ˜

λͺ¨λ“  ν”„λ‘œν† νƒ€μž…μ€ constructor ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ”λ‹€.
β€» constructor ν”„λ‘œνΌν‹° : prototype ν”„λ‘œνΌν‹°λ‘œ μžμ‹ μ„ μ°Έμ‘°ν•˜κ³  μžˆλŠ” μƒμ„±μž ν•¨μˆ˜λ₯Ό 가리킨닀. 

이 연결은 μƒμ„±μž ν•¨μˆ˜κ°€ 생성될 λ•Œ(ν•¨μˆ˜ 객체가 생성될 λ•Œ) 이루어진닀.
// μƒμ„±μž ν•¨μˆ˜
function Person(name) {
    this.name = name;
}

const me = new Person('Lee');

// me 객체의 μƒμ„±μž ν•¨μˆ˜λŠ” Person이닀.
console.log(me.constructor === Person); // true

1. Person μƒμ„±μž ν•¨μˆ˜λŠ” me 객체λ₯Ό 생성

2. me κ°μ²΄λŠ” ν”„λ‘œν† νƒ€μž…μ˜ constructor ν”„λ‘œνΌν‹°λ₯Ό 톡해 μƒμ„±μž ν•¨μˆ˜μ™€ μ—°κ²°

➑️ me κ°μ²΄μ—λŠ” constructor ν”„λ‘œνΌν‹°κ°€ μ—†μ§€λ§Œ, me 객체의 ν”„λ‘œν† νƒ€μž…μΈ Person.prototypeμ—λŠ” construct ν”„λ‘œνΌν‹°κ°€ μžˆλ‹€.


04. λ¦¬ν„°λŸ΄ ν‘œκΈ°λ²•μ— μ˜ν•΄ μƒμ„±λœ 객체의 μƒμ„±μž ν•¨μˆ˜μ™€ ν”„λ‘œν† νƒ€μž…

λ¦¬ν„°λŸ΄ ν‘œκΈ°λ²•μ— μ˜ν•΄ μƒμ„±λœ 객체도 ν”„λ‘œν† νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€.

⚠️ ν•˜μ§€λ§Œ, ν”„λ‘œν† νƒ€μž…μ˜ conscructor ν”„λ‘œνΌν‹°κ°€ κ°€λ¦¬ν‚€λŠ” μƒμ„±μž ν•¨μˆ˜κ°€ -> 객체λ₯Ό μƒμ„±ν•œ μƒμ„±μž ν•¨μˆ˜λΌκ³  단정 X

 

⚠️ 객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ μƒμ„±λœ 객체와 Object μƒμ„±μž ν•¨μˆ˜λ‘œ μƒμ„±λ˜λŠ” 객체가 κ°™λ‹€κ³  착각할 수 μžˆλ‹€.

1. 객체 λ¦¬ν„°λŸ΄μ΄ 평가될 λ•Œ

좔상 연상 OrdinaryObjectCreateλ₯Ό 호좜 -> 빈 객체 생성 (동일)

2. μ„ΈλΆ€ λ‚΄μš© (닀름)

➑️ λ‘˜μ€ λ‹€λ₯΄μ§€λ§Œ, κ°μ²΄λ‘œμ„œ λ™μΌν•œ νŠΉμ„±μ„ κ°–λŠ”λ‹€!

 

<λ¦¬ν„°λŸ΄ ν‘œκΈ°λ²•μ— μ˜ν•΄ μƒμ„±λœ 객체의 μƒμ„±μž ν•¨μˆ˜μ™€ ν”„λ‘œν† νƒ€μž…>

λ¦¬ν„°λŸ΄ ν‘œκΈ°λ²• μƒμ„±μž ν•¨μˆ˜ ν”„λ‘œν† νƒ€μž…
객체 λ¦¬ν„°λŸ΄ Object Object.prototype
ν•¨μˆ˜ λ¦¬ν„°λŸ΄ Function Funcion.prototype
λ°°μ—΄ λ¦¬ν„°λŸ΄ Array Array.prototype
μ •κ·œ ν‘œν˜„μ‹ λ¦¬ν„°λŸ΄ RegExp RegExp.prototype

05. ν”„λ‘œν† νƒ€μž…μ˜ 생성 μ‹œμ 

ν”„λ‘œν† νƒ€μž…κ³Ό μƒμ„±μž ν•¨μˆ˜λŠ” μ–Έμ œλ‚˜ 쌍으둜 μ‘΄μž¬ν•œλ‹€.

➑️ ν”„λ‘œν† νƒ€μž…μ€ μƒμ„±μž ν•¨μˆ˜κ°€ μƒμ„±λ˜λŠ” μ‹œμ μ— λ”λΆˆμ–΄ μƒμ„±λœλ‹€.

1) μ‚¬μš©μž μ •μ˜ μƒμ„±μž ν•¨μˆ˜μ™€ ν”„λ‘œν† νƒ€μž… 생성 μ‹œμ 

μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•  수 μžˆλŠ” ν•¨μˆ˜, 즉 constructλŠ” ν•¨μˆ˜ 객체λ₯Ό μƒμ„±ν•˜λŠ” μ‹œμ μ— ν”„λ‘œν† νƒ€μž…λ„ λ”λΆˆμ–΄ μƒμ„±λœλ‹€.

μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ ν˜ΈμΆœν•  수 μ—†λŠ” ν•¨μˆ˜, 즉 non-constructλŠ” ν”„λ‘œν† νƒ€μž…μ΄ μƒμ„±λ˜μ§€ μ•ŠλŠ”λ‹€.

μƒμ„±λœ ν”„λ‘œν† νƒ€μž…μ˜ ν”„λ‘œν† νƒ€μž…μ€ μ–Έμ œλ‚˜ Object.prototype이닀.

2) 빌트인 μƒμ„±μž ν•¨μˆ˜μ™€ ν”„λ‘œν† νƒ€μž… 생성 μ‹œμ 

❓ 빌트인 μƒμ„±μž ν•¨μˆ˜λž€

Object, String, Number, Function, Array λ“± ..

 

빌트인 μƒμ„±μž ν•¨μˆ˜κ°€ μƒμ„±λ˜λŠ” μ‹œμ μ— ν”„λ‘œν† νƒ€μž…μ΄ μƒμ„±λœλ‹€.

μ΄λ•Œ, λͺ¨λ“  빌트인 μƒμ„±μž ν•¨μˆ˜λŠ” μ „μ—­ 객체가 μƒμ„±λ˜λŠ” μ‹œμ μ— μƒμ„±λœλ‹€.

➑️ μƒμ„±λœ ν”„λ‘œν† νƒ€μž…μ€ 빌트인 μƒμ„±μž ν•¨μˆ˜μ˜ prototype ν”„λ‘œνΌν‹°μ— λ°”μΈλ”©λœλ‹€.


06. 객체 생성 방식과 ν”„λ‘œν† νƒ€μž…μ˜ κ²°μ •

κ°μ²΄λŠ” 좔상 연산에 μ˜ν•΄ μƒμ„±λ˜λŠ”λ°, 좔상 연산은 μžμ‹ μ΄ 생성할 객체의 ν”„λ‘œν† νƒ€μž…μ„ 인수둜 μ „λ‹¬λ°›λŠ”λ‹€.

 

ν”„λ‘œν† νƒ€μž…μ€ 좔상 연산에 μ „λ‹¬λ˜λŠ” μΈμˆ˜μ— μ˜ν•΄ κ²°μ •λœλ‹€.

<- 이 μΈμˆ˜λŠ” 객체가 μƒμ„±λ˜λŠ” μ‹œμ μ— 객체 생성 방식에 μ˜ν•΄ κ²°μ •λœλ‹€.

 

πŸ“Œ 3κ°€μ§€ 객체 생성 방식(객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ 생성, Object μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ 생성, μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ 생성)

1) 객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ μƒμ„±λœ 객체의 ν”„λ‘œν† νƒ€μž…

객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ μƒμ„±λ˜λŠ” 객체의 ν”„λ‘œν† νƒ€μž…μ€ Object.prototype이닀.

 

➑️ 객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ μƒμ„±λœ κ°μ²΄λŠ” Object.prototype의 ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ†Œμœ ν•˜κ³  μžˆμ§€ μ•Šμ§€λ§Œ, μžμ‹ μ˜ ν”„λ‘œν† νƒ€μž…μΈ Object.prototype 객체λ₯Ό μƒμ†λ°›μ•˜κΈ° λ•Œλ¬Έμ— Object.protytpe의 ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μžμ‹ μ˜ μžμ‚°μΈ κ²ƒμ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλ‹€.

2) Object μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ μƒμ„±λœ 객체의 ν”„λ‘œν† νƒ€μž…

Object μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ μƒμ„±λ˜λŠ” 객체의 ν”„λ‘œν† νƒ€μž…μ€ Object.prototype이닀.

(객체 λ¦¬ν„°λŸ΄μ— μ˜ν•΄ μƒμ„±λœ 객체와 λ™μΌν•˜λ‹€.)

 

πŸ’‘ 객체 λ¦¬ν„°λŸ΄ vs. Object μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성 방식

<ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€ν•˜λŠ” 방식>

객체 λ¦¬ν„°λŸ΄ 방식 : 객체 λ¦¬ν„°λŸ΄ 내뢀에 ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€

Object μƒμ„±μž ν•¨μˆ˜ 방식 : 빈 객체 생성 -> ν”„λ‘œνΌν‹° μΆ”κ°€

3) μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ μƒμ„±λœ 객체의 ν”„λ‘œν† νƒ€μž…

μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•΄ μƒμ„±λ˜λŠ” 객체의 ν”„λ‘œν† νƒ€μž…μ€ μƒμ„±μž ν•¨μˆ˜μ˜ prototype ν”„λ‘œνΌν‹°μ— λ°”μΈλ”©λ˜μ–΄ μžˆλŠ” 객체닀.

 

λ‹€μ–‘ν•œ 빌트인 λ©”μ„œλ“œλ₯Ό κ°–κ³  μžˆλŠ” Object.prototype ν”„λ‘œν† νƒ€μž…κ³ΌλŠ” 달리,

μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜μ™€ λ”λΆˆμ–΄ μƒμ„±λ˜λŠ” μƒμ„±μž ν•¨μˆ˜μ˜ prototype ν”„λ‘œνΌν‹°μ— λ°”μΈλ”©λ˜μ–΄ μžˆλŠ” 객체의 ν”„λ‘œνΌν‹°λŠ” construct 뿐이닀. (μ΄λ ‡κ²Œ ν‘œν˜„ν•˜λŠ”κ²Œ λ§žλŠ”μ§€..?)

 

ν”„λ‘œν† νƒ€μž…μ€ κ°μ²΄μ΄λ―€λ‘œ -> ν”„λ‘œν† νƒ€μž…μ—λ„ ν”„λ‘œνΌν‹°λ₯Ό μΆ”κ°€/μ‚­μ œν•  수 μžˆλ‹€. 

 

 

πŸ“– 참고자료

https://www.inflearn.com/course/%EB%AA%A8%EB%8D%98-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%94%A5%EB%8B%A4%EC%9D%B4%EB%B8%8C/dashboard