[JavaScript] νλ‘ν νμ (prototype)μ΄λ?
π€ νλ‘ν νμ μ μμλμ?
Javascriptμμλ κ°μ²΄λ₯Ό μμνκΈ° μν΄ νλ‘ν νμ μ΄λΌλ λ°©μμ μ¬μ©ν©λλ€.
μλ°μ€ν¬λ¦½νΈλ νν νλ‘ν νμ κΈ°λ° μΈμ΄λΌ λΆλ¦½λλ€. λͺ¨λ κ°μ²΄λ€μ΄ λ©μλμ μμ±λ€μ μμλ°κΈ° μν ν νλ¦ΏμΌλ‘μ¨ νλ‘ν νμ κ°μ²΄λ₯Ό κ°μ§λ€λ μλ―Έμ λλ€. νλ‘ν νμ κ°μ²΄λ λ λ€μ μμ νλ‘ν νμ κ°μ²΄λ‘λΆν° λ©μλμ μμ±μ μμλ°μ μλ μκ³ κ·Έ μμ νλ‘ν νμ κ°μ²΄λ λ§μ°¬κ°μ§μ λλ€. μ΄λ₯Ό νλ‘ν νμ 체μΈμ΄λΌ λΆλ₯΄λ©° λ€λ₯Έ κ°μ²΄μ μ μλ λ©μλμ μμ±μ ν κ°μ²΄μμ μ¬μ©ν μ μλλ‘ νλ κ·Όκ°μ λλ€.
μ νν λ§νμλ©΄ μμλλ μμ±κ³Ό λ©μλλ€μ κ° κ°μ²΄κ° μλλΌ κ°μ²΄μ μμ±μμ prototypeμ΄λΌλ μμ±μ μ μλμ΄ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈμμλ κ°μ²΄ μΈμ€ν΄μ€μ νλ‘ν νμ κ°μ μ°κ²°μ΄ ꡬμ±λλ©° μ΄ μ°κ²°μ λ°λΌ νλ‘ν νμ 체μΈμ νκ³ μ¬λΌκ°λ©° μμ±κ³Ό λ©μλλ₯Ό νμν©λλ€.
λ€μκ³Ό κ°μ μμ±μ ν¨μλ₯Ό νλ μ μν΄λ³΄κ² μ΅λλ€.
function Person(first, last, age, gender, interests){
// μμ±κ³Ό λ©μλ μ μ
this.first = first;
this.last = last;
// . . .
}
μμ±μ ν¨μλ₯Ό μ΄μ©ν΄ μΈμ€ν΄μ€λ νλ λ§λ€μ΄λ³΄κ² μ΅λλ€.
var person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']);
μλ°μ€ν¬λ¦½νΈ μ½μμμ "person1." μ μΉκ² λλ©΄ λΈλΌμ°μ λ μλμ²λΌ ν΄λΉ κ°μ²΄μ λ©€λ² μ΄λ¦μ μλμμ± νμ μΌλ‘ 보μ¬μ€ κ²μ λλ€.
μμμ person1μ νλ‘ν νμ κ°μ²΄μΈ Person( )μ μ μλ λ©€λ²λ€ name, age, gender, interest, bio, greetingμ λ³Ό μ μμ΅λλ€. λν watch, valueOf μ²λΌ Person( )μ νλ‘ν νμ κ°μ²΄μΈ Objectμ μ μλ λ€λ₯Έ λ©€λ²λ€λ λ³Ό μ μμ΅λλ€. μ΄λ νλ‘ν νμ 체μΈμ΄ λμνλ€λ μ¦κ±°μ λλ€.
κ·ΈλΌ μ€μ λ‘ Objectμ μ μλμ΄ μλ λ©μλλ₯Ό person1μμ νΈμΆνκ² λλ©΄ μ΄λ»κ² λ κΉμ?
person1.valueOf();
1) λΈλΌμ°μ λ μ°μ person1 κ°μ²΄κ° valueOf( ) λ©μλλ₯Ό κ°μ§κ³ μλμ§ μ²΄ν¬ν©λλ€.
2) μμΌλ―λ‘ person1μ νλ‘ν νμ κ°μ²΄ (Person( ) μμ±μμ νλ‘ν νμ )μ valueOf( ) λ©μλκ° μλμ§ μ²΄ν¬ν©λλ€.
3) μ¬μ ν μμΌλ―λ‘ Person() μμ±μμ νλ‘ν νμ κ°μ²΄μ νλ‘ν νμ κ°μ²΄ (Object( ) μμ±μμ νλ‘ν νμ )κ° valueOf( ) λ©μλλ₯Ό κ°μ§κ³ μλμ§ μ²΄ν¬ν©λλ€. μ¬κΈ°μ μμΌλ νΈμΆνλ©° λλ©λλ€.
π νλ‘ν νμ 체μΈμμ ν κ°μ²΄μ λ©μλμ μμ±λ€μ΄ λ€λ₯Έ κ°μ²΄λ‘ 볡μ¬λλ κ²μ΄ μλλλ€. 체μΈμ νκ³ μ¬λΌκ°λ©° μ κ·Όν λΏμ λλ€.
π€ νλ‘ν νμ μμ± : μμλ°μ λ©€λ²λ€μ΄ μ μλ κ³³
κ·ΈλΌ μμλ°μ μμ±κ³Ό λ©μλλ€μ μ΄λμ μ μλμ΄ μμκΉμ?
object λ νΌλ°μ€ νμ΄μ§μ κ°μλ©΄ μ’μΈ‘μ μλ§μ μμ±κ³Ό λ©μλλ€μ΄ λμ΄λμ΄ μλ κ²μ λ³Ό μ μμ΅λλ€.
μ μ€ν¬λ¦°μ·μμ person1κ° μμλ°μ λ©€λ²λ€λ³΄λ€ ν¨μ¬ λ§μ£ . μΌλΆλ μμλμμ§λ§ λλ¨Έμ§λ μλλ€μ. μμΌκΉμ?
μ λ΅μ...
μμλ°μ λ©€λ²λ€μ prototype μμ±μ μ μλμ΄ μκΈ° λλ¬Έμ λλ€.
Object. λ‘ μμνλκ² μλλΌ, Object.prototype. μΌλ‘ μμνλ κ²λ€μ΄μ£ . prototype μμ±λ νλμ κ°μ²΄μ΄λ©° νλ‘ν νμ 체μΈμ ν΅ν΄ μμνκ³ μ νλ μμ±κ³Ό λ©μλλ₯Ό λ΄μλλ λ²ν·μΌλ‘ μ£Όλ‘ μ¬μ©λλ κ°μ²΄μ λλ€.
κ·Έλμ Object.prototype.watch( ), Object.prototype.valueOf( ) λ±λ±μ, μμ±μλ₯Ό ν΅ν΄ μλ‘ μμ±λλ μΈμ€ν΄μ€λ λ¬Όλ‘ Object.prototype μ μμλ°λ κ°μ²΄λΌλ©΄ μ΄λ€ κ°μ²΄μμλ μ§ μ κ·Όν μ μμ΅λλ€.
Object.is( ), Object.keys( ) λ± prototype λ²ν·μ μ μλμ§ μμ λ©€λ²λ€μ μμλμ§ μμ΅λλ€. μ΄κ²λ€μ Object( ) μμ±μμμλ§ μ¬μ©ν μ μλ λ©€λ²λ€μ΄μ£ .
JavaScript μ λ°μ κ±Έμ³ νλ‘ν νμ μ²΄μΈ μμμ΄ μ΄λ»κ² ꡬμ±λμ΄ μλμ§ νμΈν μ μμ΅λλ€.
μ μκ°μ²΄μΈ String, Date, Number, Arrayμ νλ‘ν νμ μ μ μλ λ©μλμ μμ±λ€μ 체ν¬ν΄λ³΄μΈμ. μ΄ νλ‘ν νμ κ°μ²΄λ€μλ μ΄λ―Έ λ§μ μμ λ©μλκ° μ μλμ΄ μμΌλ©° μ΄λ μλμ²λΌ λ¬Έμμ΄ κ°μ²΄λ₯Ό μμ±νμ λ
var myString = 'This is my string.';
myString μΈμ€ν΄μ€κ° μμ±λλ μ¦μ split(), indexOf(), replace() λ±μ λ¬Έμμ΄μ μν μ μ©ν λ©μλλ€μ μ¬μ©ν μ μλ μ΄μ μ λλ€.