κ°μ²΄ μ§ν₯
μ μ§ν±νκ³ μλ ν΅μ¬ κΈ°λ°μ΄λ€.
νλ‘ν νμ
μλ°μ€ν¬λ¦½νΈμ κ°μ²΄ μ§ν₯μ νΉμ± μ€ νλμΈμμ
μ κ°λ₯νκ² νλ ꡬ체μ μΈ μλ¨
νλ‘ν νμ μ ν΅ν΄ μμμ΄ κ°λ₯ν΄μ§κ³ , μμμ ν΅ν΄ κ°μ²΄ μ§ν₯μ±μ κ°μ§ μ μλ€.
prototypeμ λ§ κ·Έλλ‘ 'μν
', 'μν κ°μ²΄
' λΌλ μλ―Έλ₯Ό λ΄κ³ μλ€.
μλ μ½λλ₯Ό 보면 μ΄ν΄νκΈ° λ μ½λ€.
prototype νλ‘νΌν°μλ
κ°μ²΄μ μν
μ΄ λ΄κ²¨μλ€.
β
__proto__
ν€μλλ₯Ό ν΅ν΄λΆλͺ¨ ν΄λμ€
μ νλ‘ν νμ μ νμΈ ν μ μλ€.
β
.prototype
ν€μλλ₯Ό ν΅ν΄ νλ‘ν νμ νλ‘νΌν°μ μ κ·Όνλ€.
function Ultra(){}
Ultra.prototype.ultraProp = true;
function Super(){}
Super.prototype = new Ultra();
function Sub(){}
Sub.prototype = new Super();
var o = new Sub();
console.log(o.ultraProp) // true
console.log(Sub.prototype === o.__proto__) //true
μμ±μ(Ultra
, Super
, Sub
)λ ν¨μμ ν΄λΉνλ€.
μ΄ ν¨μλ₯Ό νΈμΆνλλ° μμ new
λ₯Ό λΆμ¬μ£Όλ©΄ λ¨μν ν¨μκ° μλ μμ±μ ν¨μ
κ° λλ κ²μ΄κ³ ,
μ€νλ κ²°κ³Όλ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€μ΄μ O
λ³μ μμ 리ν΄ν΄μ£Όμ€λ€.
prototype
μ΄λΌ νλ νλ‘νΌν°μ μ μ₯λμ΄ μλ κ²μ΄λ€.Sub ν¨μλ κ°μ²΄μ΄κΈ° λλ¬Έμ νλ‘νΌν°λ₯Ό κ°μ§ μ μκ³ ,
Sub.prototype = new Super();
κ·Έ μ€ νΉμν νλ‘νΌν°μΈ prototype μμλ μ΄λ ν κ°μ²΄κ° μ μλμ΄ μλ μ
μ΄λ€.
κ·Έλ κ² κ°μ²΄λ₯Ό μ μ₯ν΄λλ€κ° new λ‘ μμ±μλ₯Ό νΈμΆνκ² λλ©΄ κ·Έ κ°μ²΄λ₯Ό κΊΌλ΄λ€κ° 리ν΄ν΄μ£Όλ λ°©μμ΄λ€.
prototypeμ κ°μ²΄μ μν
μ΄λΌκ³ νλ€.
λ°λΌμ λΉ ν΄λμ€μ νλ‘ν νμ
μ νΈμΆνλ€λ©΄ new Object();
κ°μ²΄λ₯Ό μ μΈν κ²κ³Ό μ¬μ€μ λμΌνκ² λΉ κ°μ²΄
λ₯Ό κ°μ§λ€.
function func(){}
func.prototype //func {}
μ΄λ new Object();
λ₯Ό μΆλ ₯ν κ°κ³Ό λμΌνλ€.
new Object(); //Object {}
λΉ κ°μ²΄ μμ name
ν€μ βegoingβ
μ΄λΌλ κ°μ μ£Όκ² λλ©΄ ν€ κ°μ΄ μΆλ ₯λλ κ²μ νμΈν μ μλ€.
var o = new func();
func.prototype.name = βegoingβ
o // func{name:βegoingβ}
π‘ λΉ μμ±μμ
νλ‘ν νμ κ°μ²΄ μν
μ μΌλ°μ μΌλ‘ κ°μ²΄λ₯Ό μ μΈ, μ΄κΈ°ννμ¬ λ§λλΉ κ°μ²΄
μλμΌν κ°({ })
μ κ°μ§λ§
μΌλ° κ°μ²΄μμ μ°¨μ΄μ μ κ°μ²΄λ₯Ό μμ±ν λ κ·Έ κ°μ²΄κ° κ°μ§κ³ μμ΄μΌ ν λ°μ΄ν°, λ©μλ, νλ‘νΌν° κ°μ΄ μ£Όμ΄μ§λ€.
κ·Έ κ°μ²΄ μμλ ν¨μμ λ‘μ§ λ° λ°μ΄ν°κ° λ΄κ²¨μλ€.
νλ‘ν νμ λ€μ΄ μλ‘λ₯Ό μ°Έμ‘°νλ©΄μ μ°κ²°λμ΄ μλ νν
Sub.prototype
μ new Super()
μ κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
μ΄ κ°μ²΄λ λ€μ Super.prototype
μ κ°λ¦¬ν€κ³ μ΄ νλ‘ν νμ
μ new Ultra();
κ°μ²΄λ₯Ό κ°λ¦¬ν¨λ€.
μ΄λ° λ°©μμΌλ‘ νλ‘ν νμ
μ΄ μλ‘ μ°κ²°λμ΄μλ κ²μ νλ‘ν νμ
체μΈ
μ΄λΌκ³ λΆλ₯Έλ€.
νλ‘ν νμ 체μΈμ μμκ³Όλ κ΄λ ¨μ΄ μλ€. μμμ ꡬννλ κ³Όμ μμ νλ‘ν νμ μ΄ μ²΄μΈμ²λΌ ꡬνλκΈ° λλ¬Έμ΄λ€.
[μμ κ΄λ ¨ ν¬μ€ν ]
https://velog.io/@bommy5799/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%83%81%EC%86%8D
[μΆμ²] μνμ½λ© - https://opentutorials.org/course/743/6573