π± 16.1 λ΄λΆ μ¬λ‘―κ³Ό λ΄λΆ λ©μλ
λ΄λΆ μ¬λ‘―, λ΄λΆ λ©μλ
=> JS μμ§μ ꡬν μκ³ λ¦¬μ¦μ μ€λͺ νκΈ° μν μμ¬ νλ‘νΌν°μ μμ¬ λ©μλ
[[ ... ]] μ΄λ κ² κ°μΌ μ΄λ¦λ€μ.
μλ€λ ECMAScript μ¬μμ μ μλ λλ‘ κ΅¬νλκ³ , JS μμ§μμ μ€μ λ‘ λμνκΈ΄ νμ§λ§,
κ°λ°μκ° μ§μ μ κ·Όν μ μλλ‘ μΈλΆλ‘ 곡κ°λ κ°μ²΄μ νλ‘νΌν°λ μλλ€.
μ¦, λ΄λΆ μ¬λ‘―κ³Ό λ΄λΆ λ©μλλ JS μμ§μ λ΄λΆ μ‘°μ§ => μμΉμ μΌλ‘ μ§μ μ κ·Όνκ±°λ νΈμΆν μ μλ λ°©λ²μ μ 곡νμ§ μλλ€.
νμ§λ§, μΌλΆ λ΄λΆ μ¬λ‘―κ³Ό λ΄λΆ λ©μλμ νν΄ κ°μ μ μΌλ‘ μ κ·Όν μ μλ μλ¨μ μ 곡νκΈ°λ ν¨.
λͺ¨λ κ°μ²΄λ [[Prototype]] μ΄λ λ΄λΆ μ¬λ‘―μ κ°μ§κ³ ,
__proro__ λ₯Ό ν΅ν΄ κ°μ μ μΌλ‘ μ κ·Όμ΄ κ°λ₯νλ€.
π± 16.2 νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈμ νλ‘νΌν° λμ€ν¬λ¦½ν° κ°μ²΄
JS μμ§μ νλ‘νΌν°λ₯Ό μμ±ν λ, νλ‘νΌν°μ μνλ₯Ό λνλ΄λ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈλ₯Ό κΈ°λ³Έμ μΌλ‘ μλ κ² μ νλ€.
νλ‘νΌν°μ μν : νλ‘νΌν°μ κ°, κ°μ κ°±μ μ¬λΆ, μ΄κ±° κ°λ₯ μ¬λΆ, μ¬μ μ κ°λ₯ μ¬λΆ
Object.getOwnPropertyDescriptor(κ°μ²΄μ μ°Έμ‘°, νλ‘νΌν°ν€)
=> νλ‘νΌν°μ μνλ₯Ό κ°μ μ μΌλ‘ νμΈ κ°λ₯
=> νλ‘νΌν° λμ€ν¬λ¦½ν° κ°μ²΄λ₯Ό λ°νν¨.
(νλ‘νΌν° λμ€ν¬λ¦½ν° : λͺ¨λ νλ‘νΌν°μ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈλ₯Ό μ 곡νλ κ°μ²΄)
π± 16.3 λ°μ΄ν° νλ‘νΌν°μ μ κ·Όμ νλ‘νΌν°
νλ‘νΌν°μ ꡬλΆ
π λ°μ΄ν° νλ‘νΌν°
- ν€μ κ°μΌλ‘ ꡬμ±λ μΌλ°μ μΈ νλ‘νΌν°.
πμ κ·Όμ νλ‘νΌν°
- μ체μ μΌλ‘λ κ°μ κ°μ§ μκ³ , νλ‘νΌν°μ κ°μ μ½κ±°λ μ μ₯ν λ νΈμΆλλ μ κ·Όμ ν¨μλ‘ κ΅¬μ±λ νλ‘νΌν°
16.3.1 λ°μ΄ν° νλ‘νΌν°
<λ°μ΄ν° νλ‘νΌν°μ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ>
[[Value]]
- νλ‘νΌν° κ°μ μ κ·Όνλ©΄ λ°νλλ κ°
- κ° λ³κ²½ μ μ¬κΈ°μ μ¬ν λΉλ¨.
[[Writable]]
- νλ‘νΌν° κ°μ λ³κ²½ μ¬λΆλ₯Ό λνλ. λΆλ¦¬μΈ
[[Enumberable]]
- νλ‘νΌν°μ μ΄κ±° μ¬λΆλ₯Ό λνλ
[[Configurable]]
- νλ‘νΌν°μ μ¬μ μ κ°λ₯ μ¬λΆλ₯Ό λνλ.
16.3.2 μ κ·Όμ νλ‘νΌν°
μ체μ μΌλ‘ κ°μ κ°μ§ μκ³ λ€λ₯Έ λ°μ΄ν° νλ‘νΌν°μ κ°μ μ½κ±°λ μ μ₯ν λ μ¬μ©νλ μ κ·Όμ ν¨μλ‘ κ΅¬μ±λ νλ‘νΌν°.
[[Get]]
- μ κ·Όμ νλ‘νΌν°λ₯Ό ν΅ν΄ νλ‘νΌν°μ κ°μ μ½μ λ νΈμΆλλ μ κ·Όμ ν¨μ.
- getter ν¨μκ° νΈμΆλκ³ , κ·Έ κ²°κ³Όκ° νλ‘νΌν° κ°μΌλ‘ λ°νλ¨.
[[Set]]
- μ κ·Όμ νλ‘νΌν°λ₯Ό ν΅ν΄ νλ‘νΌν°μ κ°μ μ μ₯ν λ νΈμΆλλ μ κ·Όμ ν¨μ
[[Enumberable]]
- λ°μ΄ν° νλ‘νΌν°μ λμΌ
[[Configurable]]
- λ°μ΄ν° νλ‘νΌν°μ λμΌ
πΏνλ‘ν νμ
- μ΄λ€ κ°μ²΄μ μμ(λΆλͺ¨) κ°μ²΄μ μν μ νλ κ°μ²΄
- νμ(μμ) κ°μ²΄μκ² μμ μ νλ‘νΌν°μ λ©μλλ₯Ό μμ.
- μμλ°μ λ©μλλ₯Ό νμ κ°μ²΄λ μμ λ‘κ² μ¬μ© κ°λ₯ν¨.
π± 16.4 νλ‘νΌν°μ μ μ
νλ‘νΌν° μ μλ?
=> μλ‘μ΄ νλ‘νΌν°λ₯Ό μΆκ°νλ©΄μ
νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈλ₯Ό λͺ μμ μΌλ‘ μ μνκ±°λ,
κΈ°μ‘΄ νλ‘νΌν°μ μ΄νΈλ¦¬λ·°νΈλ₯Ό μ¬μ μ νλ κ².
(κ°μ κ°±μ μ¬λΆ, μ΄κ±° κ°λ₯ λ²Όμ£Ό λ±μ μ μν μ μμ.)
Object.defineProperties(ν€, νλ‘νΌν° λμ€ν¬λ¦½ν° κ°μ²΄)
-> μ¬λ¬κ°μ νλ‘νΌν°λ₯Ό νλ²μ μ μν μ μμ.
π± 16.5 κ°μ²΄ λ³κ²½ λ°©μ§
κ°μ²΄λ λ³κ²½ κ°λ₯ν κ°μ΄λ―λ‘ μ¬ν λΉ μμ΄ μ§μ λ³κ²½ κ°λ₯.
μμ , κ°±μ , μ¬μ μκ° κ°λ₯νλ€.
κ°μ²΄μ λ³κ²½μ λ°©μ§νλ λ€μν λ©μλλ₯Ό μ 곡ν¨.
16.5.1 κ°μ²΄ νμ₯ κΈμ§
Object.preventExtensions
- νλ‘νΌν° μΆκ° β
- μμ , μ½κΈ°, κ° μ¬μ©, μ΄νΈλ¦¬λ·°νΈ μ¬μ μ κ°λ₯
16.5.2 κ°μ²΄ λ°λ΄
Object.seal
λ°λ΄λ κ°μ²΄λ μ½κΈ°μ μ°κΈ°λ§ κ°λ₯
- νλ‘νΌν° μΆκ°, μμ , μ¬μ μ β
- μ½κΈ°, μ°κΈ° κ°λ₯
16.5.3 κ°μ²΄ λκ²°
Object.freeze
- μ½κΈ°λ§ κ°λ₯
16.5.4 λΆλ³ κ°μ²΄
μ΄μ μ λ°©λ²λ€μ μμ λ³κ²½ λ°©μ§ -> μ§μ νλ‘νΌν°λ§ λ³κ²½μ΄ λ°©μ§. (μ€μ²©λ κ°μ²΄μ μν₯ λͺ»μ€)
μ€μ²©λ κ°μ²΄κΉμ§ λκ²°νλ €λ©΄ -> λͺ¨λ νλ‘νΌν°μ freeze λ₯Ό ν΄μΌν¨.
'λ μ λͺ©λ‘ > λͺ¨λ₯λ€ Modern JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λͺ¨λ₯λ€] 18μ₯ ν¨μμ μΌκΈ κ°μ²΄ (0) | 2023.05.10 |
---|---|
[λͺ¨λ₯λ€] 17μ₯ μμ±μ ν¨μμ μν κ°μ²΄ μμ± (0) | 2023.05.09 |
[λͺ¨λ₯λ€] 15μ₯ let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν (0) | 2023.05.08 |
[λͺ¨λ₯λ€] 14μ₯ μ μ λ³μμ λ¬Έμ μ (0) | 2023.05.06 |
[λͺ¨λ₯λ€] 13μ₯ μ€μ½ν (0) | 2023.05.05 |