ποΈ μλ‘
μλ°μ€ν¬λ¦½νΈλ λͺ
λ Ήν, ν¨μν, νλ‘ν νμ
κΈ°λ° κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ μ§μνλ λ©ν° ν¨λ¬λ€μ νλ‘κ·Έλλ° μΈμ΄λ€.
μ΄λ² κΈμμλ νλ‘ν νμ
μ μ΄μ μ λ§μΆμ΄ νλ‘ν νμ
μ΄ λ¬΄μμ΄κ³ , μλ°μ€ν¬λ¦½νΈμμ νλ‘ν νμ
μ΄ μ΄λ»κ² μ΄μ©λλμ§λ₯Ό κ°λ¨νκ² μμλ³΄κ³ μ νλ€.
const arr = [1, 2, 3]
arr.sort((a, b) => a - b)
μΆκ°λ‘ λ°°μ΄ λ¦¬ν°λ΄λ‘ μμ±ν arr μ΄ μ΄λ»κ² sort μ κ°μ λ©μλλ₯Ό μ¬μ©ν μ μλμ§λ νλ‘ν νμ
κ΄μ μμ μμλ³΄κ³ μ νλ€. νλ‘ν νμ
μ λν΄μ μ΄ν΄νλ €λ©΄, μλ°μ€ν¬λ¦½νΈκ° κ°μ²΄λ₯Ό μ΄λ»κ² λ°λΌλ³΄λμ§λ₯Ό μ΄ν΄ν νμκ° μλ€.
μλ°μ€ν¬λ¦½νΈλ ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄μΈ Java, C++ κ³Ό κ°μ²΄λ₯Ό λ°λΌλ³΄λ μμ μ΄ μ½κ° λ€λ₯΄λ€.
π μλ°μ€ν¬λ¦½νΈκ° κ°μ²΄λ₯Ό λ°λΌλ³΄λ μμ
μ°μ ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄μΈ Java, C++μ΄ κ°μ²΄λ₯Ό μ΄λ»κ² λ°λΌλ³΄λμ§λ₯Ό μμ보μ. ν΄λμ€ κΈ°λ° κ°μ²΄μ§ν₯ μΈμ΄λ μ΄λ¦μμλ μ μ μλ―μ΄ λΆλ₯(Classification)λ₯Ό ν΅ν΄ κ°μ²΄λ₯Ό ꡬλΆνλ€. μμ±μ΄ λμΌν κ°μ²΄λ€μ΄ μλ κ²½μ°, ν΄λΉ κ°μ²΄λ€μ κ°μ λ²μ£Όλ‘ λ¬Άμ μ μλ€κ³ λ³Έλ€. μ¬κΈ°μ μμ±μ νλ‘κ·Έλλ° κ΄μ μμ λ΄€μ λ, ν΄λμ€(ν΄λμ€λ‘ μμ±λ μΈμ€ν΄μ€)μ νλ‘νΌν°κ° λλ€. νλ‘νΌν°κ° μ μ¬ν κ°μ²΄κ° μλ€λ©΄, μΌλ°ν κ³Όμ μ ν΅ν΄μ ν΄λμ€λ‘ μΆμνλλ€.
μ΄λ μΈμμ μ΄λΆλ²μ μΌλ‘ λλμ΄μ 보μλ, μμμ² νκ³Ό μ°κ²°λλ€. (μνΌ / μ‘체, μΆμ / ꡬ체, μ¬λ¬Ό / λ³Έμ§)
λ μμ μ€μ λ‘ μ‘΄μ¬νλ μ¬λ¬Όμ΄ μλ€λ©΄ λ°λμ κ·Έ μ¬λ¬Όμ λ³Έμ§μ΄ μ‘΄μ¬νλ€. - νλΌν€
μμ κ±°λ₯Ό μλ‘ λ€μλ©΄ λ€λ°, μΈλ°, λλ°, νλ° μμ κ±°κ° μμ κ²μ΄λ©° μ΄ λ λ°λμ λ³Έμ§μ μ΄κ³ μΆμμ μΈ μμ κ±°κ° μ‘΄μ¬νλ€κ³ λ³Έλ€.
class Cycle {
...
}
Cycle harryCycle = new Cycle();
μΆμμ μΌλ‘ μ‘΄μ¬νλ μμ κ±°(Cycle)κ° new μ°μ°μλ₯Ό μ¬μ©ν΄μ νμ€μΈκ³μ ꡬ체μ μΌλ‘ μ‘΄μ¬(harryCycle)νκ² λλ€κ³ λ³Έλ€.
νμ§λ§, νλ‘ν νμ
μ΄λ‘ μμλ κ°μ²΄λ μ μλ₯Ό ν΅ν΄μ λΆλ₯(Classification)λλ κ²μ΄ μλλΌ κ°μ₯ μ’μ λ³΄κΈ°λ‘ λΆν° λ²μ£Όν λλ κ²μ΄λΌκ³ λ³Έλ€.
- μ΄λ―Έμ§ μΆμ² : https://laurabecker.gitlab.io/classes/as/08-semantics.pdf
μλ₯Ό λ€μ΄, μΈκ°μ΄ μλ₯Ό λΆλ₯νλ€κ³ ν λ μμ°μ€λ½κ² κ°μ₯ μ μ¬μ±μ΄ λμ μμλλ‘ λ±κΈμ 맀긴λ€κ³ λ³Έλ€. μ΄λ κ² λΆλ₯νμ λ, κ°μ₯ λμ λ±κΈμ΄ λμ€λ μλ₯Ό μμ μν(Prototype)μΌλ‘ 보λκ² νλ‘ν νμ μ΄λ‘ μ΄λ€.
μ¦, βκ°μ₯ μ λ€μ΄ κ², μμ€λ¬μ΄ κ²βμ μμ μν(Prototype) μ΄λΌκ³ λ³Έλ€. μ μμμμλ μ°Έμκ° μμ λ²μ£Όλ₯Ό λνν λ§ν μ νμ μΈ μλ‘ λ³Έλ€. νλ‘ν νμ μ΄λ‘ μλ κ°μ²΄λ₯Ό μ μ¬μ±μ κΈ°μ€μΌλ‘ λ°λΌλ³΄λ κ² μ΄μΈμ λ ν κ°μ§ μ€μν κ²μ΄ μλ€. λ°λ‘ κ°μ λ¨μ΄λΌκ³ ν μ§λΌλ λκ° μ΄λ€ μν©(context)μμ μ¬μ©νλ, μ νλμ λ°λΌμ μλ―Έκ° λ¬λΌμ§λ€κ³ 보λ κ²μ΄λ€.
μλ₯Ό λ€μ΄, λ(ν΄λ¦¬)κ° μκ°νμ λλ μμ λ²μ£Όμ βμ€λ¦¬βκ° μν μ μμ§λ§ μ§λκ° μκ°νμ λλ μμ λ²μ£Όμ βμ€λ¦¬βκ° μνμ§ μμ μλ μλ€. κ°μ λ¨μ΄(μ)λΌλ μ΄λ€ μν©(λ or μ§λ)μμ μ νλλμ λ°λΌμ λ²μ£Ό(μλ―Έ)κ° ν¬κ² λ¬λΌμ§λ€κ³ λ³Έλ€.
μ΄λ λ¨μ΄μ μ§μ ν λ³Έλμ μλ―Έ(μ ν΅μ μΈ μμμ² νμμμ λ³Έμ§)μ μ‘΄μ¬νμ§ μκ³ λ¨μ΄μ μλ―Έλ μ¬μ©νλ μν©κ³Ό λ§₯λ½μ μν΄ κ²°μ λλ€κ³ λ³Έ λΉνΈμΌμνμΈμ μλ―Έ μ¬μ© μ΄λ‘ μ κΈ°λ°μΌλ‘ νλ€.
μΈκ³μ 미리 λ΄μ¬λμ΄μ λμκ³Ό μΈμ΄λ₯Ό μμ ν κ·μ νλ μ΄λ€ μΈμ΄λ μ‘΄μ¬νμ§ μλλ€. β λΉνΈκ²μνμΈ
μ 리νμλ©΄ νλ‘ν νμ μ΄λ‘ μμλ
- κ°μ₯ μ’μ 본보기λ₯Ό μνμΌλ‘ μ ννλ€.
- νΉμ μν©(λ¬Έλ§₯, 컨ν μ€νΈ)μ λ°λΌμ νΉμ λ¨μ΄μ λ²μ£Ό(μλ―Έ)κ° λ¬λΌμ§λ€.
κ³ λ³Έλ€.
λ°λΌμ, νν ν νμ κΈ°λ° μΈμ΄μΈ μλ°μ€ν¬λ¦½νΈμμ κ°μ²΄μλ μνμ΄ μλ€κ³ λ΄€κ³ , μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€ λ κ·Έ μνμ 볡μ (μ°Έμ‘°)ν΄μ λ§λλ λ°©λ²μ μ¬μ©νλ€.
μ μΈλλ μμΉ(νκ²½)μ λ°λΌ μ€μ½ν(μ€ν 컨ν μ€νΈ λ΄ νκ²½ λ μ½λ)κ° κ²°μ λκ³ , μ¬μ©λλ μν©(λ¬Έλ§₯)μ λ°λΌμ thisκ° κ²°μ λλ μλ°μ€ν¬λ¦½νΈμ νΉμ§μ΄ λ μ€λ₯΄μ§ μλκ°? π
π μλ°μ€ν¬λ¦½νΈμμ νλ‘ν νμ
μ λ΄μ©μμ νλ‘ν νμ
μ μ΄λ€ λ²μ£Όμμ κ°μ₯ μ’μ 보기, μνμ΄λΌκ³ νμλ€.
κ·Έλ λ€λ©΄, μλ°μ€ν¬λ¦½νΈμμ νλ‘ν νμ
μ μ΄λ»κ² μ¬μ©λ κΉ?
μλ°μ€ν¬λ¦½νΈμμλ μμ νμ
μ κ°(String, Number, Booleanβ¦)μ μ μΈν λλ¨Έμ§ κ°(Array, Function,,,)λ€μ λͺ¨λ κ°μ²΄μ΄λ€. κ°μ²΄λ λ€λ₯Έ κ°μ²΄λ€κ³Ό λ©μμ§λ₯Ό μ£Όκ³ λ°κ±°λ λ°μ΄ν°λ₯Ό μ²λ¦¬ν μλ μκ³ , λ€λ₯Έ κ°μ²΄μ μν λ°μ΄ν°λ λμμ μμλ°μμ μ¬μ©ν μλ μλ€. μ΄ λ, νλ‘ν νμ
μ΄ μμμ μν΄μ μ¬μ©λλ€.
μλ°μ€ν¬λ¦½νΈμμλ μ΄λ€ κ°μ²΄λ₯Ό μν(Prototype)μΌλ‘ μΌκ³ μ΄λ₯Ό 볡μ ν¨μΌλ‘μ¨ μμκ³Ό λΉμ·ν ν¨κ³Όλ₯Ό λ΄λλ‘ νλ€.
prototype κ°μ²΄
νλ‘ν νμ κ°μ²΄λ μμ κ°μ²΄μ μν μ νλ κ°μ²΄λ‘μ¨, λ€λ₯Έ κ°μ²΄μ 곡μ νλ‘νΌν°λ₯Ό μ 곡ν μ μλ€. νλ‘ν νμ μ μμλ°μ νμ κ°μ²΄λ μμ κ°μ²΄μ νλ‘νΌν°λ₯Ό μμ μ νλ‘νΌν°μ²λΌ μμ λ‘κ² μ¬μ©ν μ μλ€.
λͺ¨λ κ°μ²΄λ [[Prototype]] μ΄λΌλ λ΄λΆ μ¬λ‘―μ κ°μ§λ©°, μ΄ λ΄λΆ μ¬λ‘―μ κ°μ νλ‘ν νμ (μν)μ λν μ°Έμ‘°μ΄λ€. μ¦ [[Prototype]] λ΄λΆ μ¬λ‘―μ ν΄λΉ κ°μ²΄μ μνμ κ°λ₯΄ν¨λ€(μ°Έμ‘°νλ€). [[Prototype]]μ΄ μ°Έμ‘°νλ νλ‘ν νμ κ°μ²΄(μμ κ°μ²΄, μν)λ κ°μ²΄ μμ± λ°©μμ λ°λΌμ κ²°μ λλ€.
λͺ¨λ κ°μ²΄λ νλμ νλ‘ν νμ μ κ°μ§λ©° μ¦, μνμ κ°μ§λ©° λͺ¨λ νν ν νμ μ ν΄λΉ κ°μ²΄λ₯Ό μμ±ν μμ±μ ν¨μμ μ°κ²°λμ΄ μλ€. μ½κ² λ§νμλ©΄, μμ±μ ν¨μμ νλ‘νΌν°μ νλ‘ν νμ κ°μ²΄κ° μλ€.
const arr = [1, 2, 3]
arr.sort((a, b) => a - b)
λ°°μ΄ λ¦¬ν°λ΄λ‘ λ°°μ΄μ μμ±ν ν, sort λ©μλλ₯Ό μ¬μ©νλ μ μμλ₯Ό λ€μ νλ² μ΄ν΄λ³΄μ. λ°°μ΄ λ¦¬ν°λ΄λ‘ μμ±λ λ°°μ΄λ, Array μμ±μ ν¨μλ₯Ό ν΅ν΄μ μμ±λ λ°°μ΄ κ°μ²΄λ‘ λ³Ό μ μμΌλ©° μμ±λ λ°°μ΄ κ°μ²΄ arr μ [[Prototype]] λ΄λΆ μ¬λ‘―μ Array μμ±μ ν¨μμ νλ‘ν νμ κ°μ²΄λ₯Ό κ°λ₯΄ν¨λ€.
μ μ΄λ―Έμ§μμλ νμΈν μ μλ―μ΄, λ°°μ΄ λ¦¬ν°λ΄ λ°©μμΌλ‘ μμ±λ λ°°μ΄ κ°μ²΄μ [[Prototype]]μ Array μμ±μ ν¨μμ νλ‘ν νμ κ°μ²΄λ₯Ό κ°λ₯΄ν¨λ€.
μ 리νμλ©΄, Array μμ±μ ν¨μλ₯Ό ν΅ν΄ μμ±λ λ°°μ΄ κ°μ²΄λ μμ±μ ν¨μμ νλ‘ν νμ (μν)μ 볡μ ν¨μΌλ‘μ¨ μμ±λκ³ νλ‘ν νμ κ°μ²΄λ₯Ό μμ λ°μμ μμ λ‘κ² μ¬μ©ν μ μλ€.
μ΄λ‘ μΈν΄μ extends ν€μλλ₯Ό μ¬μ©νλ κ²κ³Ό κ°μ λͺ
μμ μΈ μμ μμ΄, μμ κ°μ²΄μ λ©μλλ€μ μ¬μ©ν μ μκ² λλ κ²μ΄λ€. νκ°μ§ μ§κ³ λμ΄κ°μΌν μ μ, Array μμ±μ ν¨μμ νλ‘ν νμ
λ΄λΆμ μμ§ μμ from, of, isArrayλ μμ±λ λ°°μ΄ κ°μ²΄μμ μ¬μ©ν μ μλ€λ κ²μ΄λ€. μ€μ§ μμ±μ ν¨μμ νλ‘ν νμ
λ΄λΆμ μλ νλ‘νΌν°λ λ©μλλ€μ μμ λ°μμ μ¬μ©ν μ μλ€.
from, of, isArrayμ κ°μ λ©μλλ€μ μμ±μ ν¨μμμ μ§μ μ κ·Όν΄μΌ μ€νμ΄ κ°λ₯νλ€. μ΄ λ©μλλ€μ μ€νν± λλ μ μ λ©μλλΌκ³ νλ€.
const arr = [1, 2, 3]
console.log(Array.isArray(arr)) // true
console.log(arr.isArray(arr)) // TypeError : arr.isArray is not a function
μμ±λ λ°°μ΄ κ°μ²΄μμ isArray
λ©μλλ₯Ό νΈμΆνλ €κ³ νλ©΄ TypeErrorκ° λ°μνλ€.
__proto__
νλ‘νΌν°
λͺ¨λ κ°μ²΄λ __proto__
μ κ·Όμ νλ‘νΌν°λ₯Ό κ°μ§λ©°, ν΄λΉ νλ‘νΌν°λ₯Ό ν΅ν΄μ μμ μ νλ‘ν νμ
(μν) μ¦, [[Prototype]] λ΄λΆ μ¬λ‘―μ κ°μ μ μΌλ‘ μ κ·Όν μ μλ€.
μλ°μ€ν¬λ¦½νΈλ μμΉμ μΌλ‘ [[Prototype]]κ³Ό κ°μ λ΄λΆ μ¬λ‘―μ μ§μ μ κ·Όνλ λ°©λ²μ μ 곡νμ§ μκΈ° λλ¬Έμ, κ°μ μ μΌλ‘ νλ‘ν νμ
κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ λ°©λ²μΈ __proto__
μ κ·Όμ νλ‘νΌν°λ₯Ό μ 곡νλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ κ°μ²΄μ νλ‘νΌν°μ μ κ·Όνλ €κ³ ν λ, ν΄λΉ κ°μ²΄μ μ κ·Όνλ €λ νλ‘νΌν°κ° μλ€λ©΄ __proto__
μ κ·Όμ νλ‘νΌν°κ° κ°λ¦¬ν€λ μ°Έμ‘°λ₯Ό λ°λΌμ μμ μ λΆλͺ¨ μν μ νλ νλ‘ν νμ
μ νλ‘νΌν°λ₯Ό μμ°¨μ μΌλ‘ κ²μνλ€.
μ λ°°μ΄ μμμμλ, μμ±λ λ°°μ΄ κ°μ²΄(arr)μλ sort λ©μλκ° μ‘΄μ¬νμ§ μκΈ° λλ¬Έμ __proto__
μ κ·Όμ νλ‘νΌν°λ₯Ό μ¬μ©ν΄μ λ°°μ΄ κ°μ²΄μ νλ‘ν νμ
μΈ Array μμ±μ ν¨μμ νλ‘ν νμ
μμ sort λ©μλλ₯Ό κ²μν ν μ¬μ©ν κ²μ΄λ€.
const arr = [1, 2, 3]
console.log(arr.__proto__ === Array.prototype) // true
console.log(arr.hasOwnProperty("__proto__")) // false
console.log(Object.prototype.hasOwnProperty("__proto__")) // true
νκ°μ§ μ§κ³ λμ΄κ°μΌν μ μ, μ μ΄λ―Έμ§μ²λΌ __proto__
μ κ·Όμ νλ‘νΌν°λ μμ±λ κ°μ²΄κ° μ§μ μμ νλ μ¨κ²¨μ§ νλ‘νΌν°κ° μλλΌ μλ°μ€ν¬λ¦½νΈμ μ΅μμ κ°μ²΄μΈ Object.prototype
μ νλ‘νΌν°μ΄λ€.
λͺ¨λ κ°μ²΄λ Object.prototypeμ μμμ ν΅ν΄μ Object.prototype.__proto__
λ₯Ό μ¬μ©ν μ μλ€.
π€ 볡μ νλ€λ κ²μ μλ―Έ
νλ‘ν νμ μ λν΄μ νμ΅νλ©΄μ,
μ΄λ€ κ°μ²΄λ₯Ό μν(Prototype)μΌλ‘ μΌκ³ μ΄λ₯Ό 볡μ ν¨μΌλ‘μ¨ μμκ³Ό λΉμ·ν ν¨κ³Όλ₯Ό λ΄λλ‘ νλ€.
μ΄ λ¬Έμ₯μ΄ κ°μΈμ μΌλ‘ μ μλΏμ§ μμμλ€. νΉν β볡μ βνλ€λ κ²μ΄ μ μΌ μλΏμ§ μμλλ° κ°λ¨ν μμλ₯Ό ν΅ν΄μ μ΄λ μ λ μ΄ν΄ν μ μμλ€.
const arr = [1, 2, 3]
const brr = [4, 5, 6]
console.log(arr.__proto__ === brr.__proto__)
console.log(arr.sort === brr.sort);
μ μ½λμμ κ°κ° μ½μμλ 무μμ΄ μΆλ ₯λ κΉ?
λͺ¨λ true κ° μΆλ ₯λλ€.
μ μ΄λ―Έμ§μμ νμΈν μ μλ―, μμ±λ λ°°μ΄ κ°μ²΄μ νλ‘ν νμ
μ λͺ¨λ Array μμ±μ ν¨μμ νλ‘ν νμ
μ κ°λ₯΄ν€κ³ μλ€.
Array μμ±μ ν¨μμ νλ‘ν νμ
μ μνμΌλ‘ μΌκ³ , μ΄λ₯Ό 볡μ νμ¬ λ°°μ΄ κ°μ²΄λ₯Ό μμ±ν κ²μ΄λ©° μμ±λ λ°°μ΄ κ°μ²΄λ€μ΄ proto νλ‘νΌν°λ₯Ό ν΅ν΄μ μ°Έμ‘°νκ²λλ νλ‘ν νμ
μ λͺ¨λ κ°μ νλ‘ν νμ
μ΄λ€.
νλ‘ν νμ
(μν)μ 볡μ νλ€ === μμ±λ λ°°μ΄ κ°μ²΄λ€μ΄ λͺ¨λ κ°μ νλ‘ν νμ
μ μ°Έμ‘°νλ€
λ‘ ν΄μν μ μλ€.
π νλ‘ν νμ 체μΈ
μλ°μ€ν¬λ¦½νΈλ κ°μ²΄μ νλ‘νΌν°μ μ κ·Όνλ €κ³ ν λ, ν΄λΉ κ°μ²΄μ μ κ·Όνλ €λ νλ‘νΌν°κ° μλ€λ©΄ __proto__
μ κ·Όμ νλ‘νΌν°λ₯Ό ν΅ν΄μ λΆλͺ¨ μν μ νλ νλ‘ν νμ
μ νλ‘νΌν°λ₯Ό μμ°¨μ μΌλ‘ κ²μνλ€κ³ νμλ€.
μ΄λ₯Ό νλ‘ν νμ 체μΈμ΄λΌκ³ νλ©°, νλ‘ν νμ 체μΈμ μμκ³Ό νλ‘νΌν° κ²μμ μν 맀컀λμ¦μ΄λΌκ³ ν μ μλ€.
const arr = [1, 2, 3]
arr.name = "harry"
console.log(arr.hasOwnProperty("name")) // true
λ°°μ΄ κ°μ²΄μ νΉμ νλ‘νΌν°λ₯Ό μΆκ°νλ κ²½μ°λ ννμ§ μμ§λ§, νλ‘ν νμ μ²΄μΈ κ³Όμ μ μ΄ν΄ν΄λ³΄κΈ° μν΄μ μ μ½λμ κ°μ λ°°μ΄ κ°μ²΄κ° μλ€κ³ κ°μ ν΄λ³΄μ.
hasOwnProperty
λ©μλλ₯Ό νΈμΆνλ©΄, λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³μ λ©μλλ₯Ό κ²μνλ€.
- Array.prototype
μ°μ , ν΄λΉ λ©μλλ₯Ό νΈμΆν arr λ°°μ΄ κ°μ²΄μμ hasOwnProperty
λ₯Ό κ²μνλ€.
λ©μλκ° μ‘΄μ¬νμ§ μμΌλ―λ‘ νλ‘ν νμ 체μΈμ λ°λΌμ μ¦, [[Prototype]] λ΄λΆ μ¬λ‘―μ λ°μΈλ©λμ΄ μλ νν λ‘νμ (μν)μΌλ‘ μ΄λνμ¬ hasOwnPropertyλ₯Ό κ²μνλ€.
- Object.prototype
Array.prototypeμλ hasOwnPropertyκ° μ‘΄μ¬νμ§ μλλ€.
λ°λΌμ, λ€μ νλ‘ν νμ
체μΈμ λ°λΌμ μ¦, Array.prototype κ°μ²΄μ [[Prototype]] λ΄λΆ μ¬λ‘―μ λ°μΈλ©λμ΄ μλ νν ν νμ
(μν)μΈ Object.prototypeμΌλ‘ μ΄λνμ¬ hasOwnPropertyλ₯Ό κ²μνλ€.
(μλ°μ€ν¬λ¦½νΈμμ νλ‘ν νμ
μ νλ‘ν νμ
μ μΈμ λ μ΅μμ κ°μ²΄μΈ Object.prototypeμ΄λ€.)
νλ‘ν νμ
체μΈμ μ΅μμμ μμΉνλ κ°μ²΄λ μΈμ λ Object.prototypeμ΄λ€. λ°λΌμ λͺ¨λ κ°μ²΄λ Object.prototypeμ μμλ°λλ€.
μ¦, μλ°μ€ν¬λ¦½νΈμμλ κ°μ₯ κ°μ²΄ λ€μ΄ κ², κ°μ²΄μ€λ¬μ΄ κ²μ Object.prototype(μν)μΌλ‘ λ΄€μΌλ©° μ΄ μνμ 볡μ ν΄μ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€λλ‘ νλ€.
λ°λ©΄, κ°μ²΄μ νλ‘νΌν°κ° μλ μλ³μλ μ€μ½ν 체μΈμμ κ²μνλ€. μλ°μ€ν¬λ¦½νΈ μμ§μ ν¨μλ€μ μ€μ²© κ΄κ³λ‘ μ΄λ£¨μ΄μ§ μ€μ½νμ κ³μΈ΅μ ꡬ쑰μμ μλ³μλ₯Ό κ²μ μλ³μλ₯Ό κ²μνλ€. λ°λΌμ, μ€μ½ν 체μΈμ μλ³μ κ²μμ μν 맀컀λμ¦μ΄λΌκ³ ν μ μλ€.
π μ 리
- νλ‘ν νμ μ μ΄λ€ λ²μ£Όμμ κ°μ₯ μ’μ 보기, μνμ΄λ€.
- μλ°μ€ν¬λ¦½νΈμμ μ΄λ€ κ°μ²΄λ₯Ό μν(Prototype)μΌλ‘ μΌκ³ μ΄λ₯Ό 볡μ ν¨μΌλ‘μ¨ μμκ³Ό λΉμ·ν ν¨κ³Όλ₯Ό λΈλ€.
- μλ°μ€ν¬λ¦½νΈμμ λͺ¨λ κ°μ²΄λ νλμ νλ‘ν νμ μ κ°μ§λ©° μ¦, μνμ κ°μ§λ©° λͺ¨λ νν ν νμ μ ν΄λΉ κ°μ²΄λ₯Ό μμ±ν μμ±μ ν¨μμ μ°κ²°λμ΄ μλ€.
- νλ‘ν νμ 체μΈμ μμκ³Ό νλ‘νΌν° κ²μμ μν 맀컀λμ¦μ΄λ€.