220829(μ)
πͺ΄ μ±μ₯μΌμ§
μ±
ν볡ν μ΄κΈ°μ£Όμμ(μ¨μΈ λ€μ΄μ΄)
μ λ΄μ©μ μκ·Ήλ°μ μμνλ μλ°ν μ±μ₯κΈ°λ‘
μ΄μμλ κ½κ³Ό μ£½μ κ½μ μ΄λ»κ² ꡬλ³νλκ°?
μ±μ₯νκ³ μλ κ²μ΄ μ΄μ μλ κ²μ΄λ€.
μλͺ μ μ μΌν μ¦κ±°λ μ±μ₯μ΄λ€!
π³ ν€μλ μ΅λν κ°λ¨νκ² μ 리, μΆνμ 보면μ μ€μ€λ‘ μ€λͺ
JavaScript
μΌκΈ κ°μ²΄
μλ°μ€ν¬λ¦½νΈμ ν¨μλ μΌκΈ κ°μ²΄
λΌκ³ νλ€. μΌκΈ κ°μ²΄λ 무μμΌκΉ?
- 무λͺ μ 리ν°λ΄λ‘ μμ±ν μ μλ€.(μ¦, λ°νμμ μμ±μ΄ κ°λ₯νλ€.)
- λ³μλ μλ£κ΅¬μ‘°(κ°μ²΄, λ°°μ΄ λ±)μ μ μ₯ν μ μλ€.
- ν¨μμ 맀κ°λ³μμ μ λ¬ν μ μλ€.
- ν¨μμ λ°νκ°μΌλ‘ μ¬μ© κ°λ₯νλ€.
μλ°μ€ν¬λ¦½νΈμ ν¨μλ μ 쑰건μ λͺ¨λ λ§μ‘±νλ―λ‘ μΌκΈ κ°μ²΄
μ΄λ€.
λ§ κ·Έλλ‘ ν¨μλ₯Ό κ°μ²΄μ λμΌνκ² μ¬μ©ν μ μλ€λ μλ―Έμ΄λ€.
λ€λ§ ν¨μλ νΈμΆμ΄ κ°λ₯νκ³ μΌλ° κ°μ²΄μλ μλ ν¨μ κ³ μ μ νλ‘νΌν°λ₯Ό μμ ν μ μλ€.
JavaScript
νλ‘ν νμ
μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ
κΈ°λ° μΈμ΄μ΄λ€. κ·Έλμ νλ‘ν νμ
μ΄ μ νν λκΉ?
μ¬μ μ μλ―Έλ‘λ μν
μ μλ―Έλ₯Ό μ§λλ€. λΉμ λ₯Ό ν΄λ³΄μλ©΄ μ΄λ€ κ°μ²΄μ μ μ μ 보κ°μ λλμ΄λ€.
λνμ μΌλ‘ μμ±μ ν¨μμμ μμ±μμ νλ‘νΌν°μ΄λ©° new μ°μ°μλ₯Ό ν΅ν΄ μΈμ€ν΄μ€λ₯Ό λ§λ€μμ λ, κ·Έ μΈμ€ν΄μ€λ μμ±μμ νλ‘ν νμ
μ μ°Έμ‘°νλ __proto__
λΌλ μ κ·Όμ νλ‘νΌν°λ₯Ό κ°λλ€.
var Dog = function (name, age) {
this.name = name;
this.age = age;
};
var hodu = new Dog('hodu', 2);
(Dog.prototype === hodu.__proto__) === Object.getPrototypeOf(hodu); // true
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ΄λ? μ€μΈκ³μ μ€μ²΄(μ¬λ¬Ό νΉμ κ°λ )λ₯Ό μΈμνλ μ² νμ μ¬κ³ λ₯Ό νλ‘κ·Έλλ°μ μ λͺ©νλ €λ νλ‘κ·Έλλ° ν¨λ¬λ€μ κ°μμ§κ° μλ€λ©΄, κ°μμ§λΌλ κ°λ μμ κ°κ°μ κ°μμ§ κ°μ²΄λ€μ μ΄λ¦, λμ΄ λ± λ€μν μμ±μ΄ μ‘΄μ¬νλ€. μ΄ λ νμν μμ±λ€λ§ κ°μΆλ € νννλ κ²μ
μΆμν
λΌκ³ νλ€. κ°μ²΄μμν
λ₯Ό λνλ΄λ λ°μ΄ν°λνλ‘νΌν°
, κ°μ²΄μλμ
μ λνλ΄λ ν¨μλλ©μλ
λΌκ³ νλ€.
νλ‘ν νμ 체μ΄λ
κ°μ²΄μ νλ‘νΌν°(νΉμ λ©μλ)μ μ κ·Όνλ € ν λ, ν΄λΉ κ°μ²΄μ μ κ·Όνλ €λ νλ‘νΌν°κ° μλ€λ©΄ μμμ μλ(체μ΄λλμ΄μλ) νλ‘ν νμ
μ νλ‘νΌν°λ₯Ό μμ°¨μ μΌλ‘ κ²μνλ€.
μλ³μμμ μ€μ½ν 체μ΄λμ΄ μμλ€λ©΄, κ°μ²΄μ νλ‘νΌν°μμ νλ‘ν νμ
체μ΄λμ΄ μλ€κ³ μκ°νλ©΄ νΈνλ€.
μ€μ λ‘ μ΄ λ 체μ΄λμ μλ‘ νλ ₯νλ©° μλ³μμ νλ‘νΌν°λ₯Ό κ²μνλ λ° μ¬μ©λλ€.
νλ‘ν νμ 체μ΄λμ μ΄μ©νμ¬ μνλ μμ±μλ₯Ό μμμμΌμ€ μ μλ€.
μ μ λ©μλ, νλ‘ν νμ λ©μλ, μΈμ€ν΄μ€ λ©μλ
// μ μ λ©μλ : μμ±μ μ체μ λ©μλ
Object.freeze();
// νλ‘ν νμ
λ©μλ : μμ±μμ νλ‘ν νμ
μ λ©μλ
Object.prototype.hasOwnProperty();
// μΈμ€ν΄μ€ λ©μλ : μΈμ€ν΄μ€κ° μ§μ κ°κ³ μλ λ©μλ
var example = { a: 1, b: 2 };
example.c = 3;
JavaScript
this
μ΄λ€ κ°μ²΄μ λ©μλκ° μμ μ΄ μν κ°μ²΄μ νλ‘νΌν°λ₯Ό μ°Έμ‘°νκΈ° μν΄μ μμ μ΄ μν κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μλ³μκ° μμ΄μΌνλ€.
κ·Έλμ μκΈ΄ κ² this
μ΄λ€.(κ°μ²΄ λ³ΈμΈμ λ΄λΆμμ μ°Έμ‘°νκΈ° μν¨)
μ¦, this
λ μμ μ΄ μν κ°μ²΄ λλ μμ μ΄ μμ±ν μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν€λ μκΈ° μ°Έμ‘° λ³μ
μ΄λ€.
this κΈ°μ΅ν ν€μλ
- thisλ ν¨μμ
νΈμΆ
μ λ°λΌ λ°μΈλ©λλ©° ν¨μ νΈμΆ λ°©λ²μ λ°λΌ λ°μΈλ©μ΄ λ€λ₯΄κ² λλ€.- μΌλ° ν¨μμ λ©μλλ‘ νΈμΆλμμ λμ this μ°¨μ΄
- κΈ°λ³Έμ μΌλ‘ thisλ μ μ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλ€λ μ
- Function.prototypeμ λ©μλμΈ apply, call, bindμ 곡ν΅μ λ° μ°¨μ΄μ