π λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ΅μ¬) 19μ₯. νλ‘ν νμ
12. μ μ νλ‘νΌν°/λ©μλ
μ μ νλ‘νΌν°/λ©μλλ μμ±μ ν¨μλ‘ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ°Έμ‘°/νΈμΆν μ μλ νλ‘νΌν°/λ©μλμ΄λ€.
μ μ νλ‘νΌν°/λ©μλλ μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ‘ μ°Έμ‘°/νΈμΆν μ μλ€.
β‘οΈ μΈμ€ν΄μ€μ νλ‘ν νμ 체μΈμ μν κ°μ²΄μ νλ‘νΌν°/λ©μλκ° μλκΈ° λλ¬Έμ΄λ€.
β μ μ λ©μλ vs. νλ‘ν νμ λ©μλ
μμλ‘ μ΄ν΄λ³΄μλ©΄,
Object.create λ©μλ : Object μμ±μ ν¨μμ μ μ λ©μλ -> Object μμ±μ ν¨μκ° μμ±ν μΈμ€ν΄μ€λ‘ νΈμΆ X
Object.prototype.hasOwnProperty λ©μλ : Object.prototypeμ λ©μλ(λͺ¨λ κ°μ²΄μ νλ‘ν νμ 체μΈμ μ’ μ ) -> λͺ¨λ κ°μ²΄κ° νΈμΆ O
13. νλ‘νΌν° μ‘΄μ¬ νμΈ
1) in μ°μ°μ
key in object
key : νλ‘νΌν° ν€λ₯Ό λνλ΄λ λ¬Έμμ΄
object : κ°μ²΄λ‘ νκ°λλ ννμ
π₯ μ£Όμν μ !
in μ°μ°μλ νμΈ λμ κ°μ²΄μ νλ‘νΌν°λΏλ§ μλλΌ, νμΈ λμ κ°μ²΄κ° μμλ°μ λͺ¨λ νλ‘ν νμ μ νλ‘νΌν°λ₯Ό νμΈνλ€.
λ°νκ°
true : νμΈ λμμΈ κ°μ²΄ λ΄μ νΉμ νλ‘νΌν°κ° μ‘΄μ¬ O (μμλ°μ νλ‘ν¬νμ μ νλ‘νΌν° ν€μΈ κ²½μ° ν¬ν¨!)
false : μ‘΄μ¬ X
β in μ°μ°μ λμ ) ES6μμ λμ λ Reflect.has λ©μλλ₯Ό μ¬μ©ν μλ μλ€.
Reflect.has(object, key)
2) Object.prototype.hasOwnProperty λ©μλ
Object.prototype.hasOwnProperty(key)
λ°νκ°
true : μΈμλ‘ μ λ¬λ°μ νλ‘νΌν° ν€κ° κ°μ²΄ κ³ μ μ νλ‘νΌν° ν€μΈ κ²½μ°
false : μμλ°μ νλ‘ν νμ μ νλ‘νΌν° ν€μΈ κ²½μ°
14. νλ‘νΌν° μ΄κ±°
1) for...in λ¬Έ
for (λ³μμ μΈλ¬Έ in κ°μ²΄) { ... }
κ°μ²΄μ λͺ¨λ νλ‘νΌν°λ₯Ό μννλ©° μ΄κ±°νλ€.
π‘ λ μ νν νννλ©΄, κ°μ²΄μ νλ‘ν νμ μ²΄μΈ μμ μ‘΄μ¬νλ λͺ¨λ νλ‘ν νμ μ νλ‘νΌν° μ€μμ, νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ[[Enumerable]]μ κ°μ΄ trueμΈ νλ‘νΌν°λ₯Ό μννλ©° μ΄κ±°νλ€.
β μ΄κ² λ¬΄μ¨ λ»μ΄λ β
for...in λ¬Έμ μν λμ κ°μ²΄ νλ‘νΌν°λΏλ§ μλλΌ, μμλ°μ νλ‘ν νμ μ νλ‘νΌν°κΉμ§ μ΄κ±°νλ€.
νμ§λ§, νλ‘ν νμ μ²΄μΈ μμ μ’ μ μ§μΈ Object.prototypeμ νλ‘νΌν°λ μ΄κ±°λμ§ μλλ€.
β‘οΈ Object.prototypeμ νλ‘νΌν°μ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ [[Enumerable]], μ¦ νλ‘νΌν°μ μ΄κ±° κ°λ₯ μ¬λΆμ κ°μ΄ falseμ΄κΈ° λλ¬Έμ΄λ€.
π₯ νλ‘νΌν° ν€κ° μ¬λ² : μ΄κ±° X
π₯ κ°μ²΄ μμ μ νλ‘νΌν°λ§ μ΄κ±°νκ³ μΆλ€λ©΄(μμλ°μ νλ‘νΌν°λ₯Ό μ μΈνκ³ ) : Object.prototype.hasOwnProperty λ©μλ μ¬μ©νμ¬ νμΈ
2) Object.keys/values/entries λ©μλ
μμλ°μ νλ‘νΌν°λ₯Ό μ μΈνκ³ , κ°μ²΄ μμ μ κ³ μ νλ‘νΌν°λ§ μ΄κ±°νκΈ° μν΄ μ¬μ©!
Object.keys λ©μλ
κ°μ²΄ μμ μ μ΄κ±° κ°λ₯ν νλ‘νΌν° ν€λ₯Ό λ°°μ΄λ‘ λ°ν
Object.values λ©μλ
κ°μ²΄ μμ μ μ΄κ±° κ°λ₯ν νλ‘νΌν° κ°μ λ°°μ΄λ‘ λ°ν
Object.entries λ©μλ
κ°μ²΄ μμ μ μ΄κ±° κ°λ₯ν νλ‘νΌν° ν€μ κ°μ μμ λ°°μ΄μ λ°°μ΄μ λ΄μ λ°ν
π μ°Έκ³ μλ£