🦎 [λ”₯λ‹€μ΄λΈŒ μŠ€ν„°λ””] 17μž₯. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체생성

이지·2021λ…„ 10μ›” 4일
0

DeepDive

λͺ©λ‘ 보기
7/13

1. ν•¨μˆ˜ν˜ΈμΆœλ°©μ‹μ— λ”°λ₯Έ this 의 κ°’

  • μΌλ°˜ν•¨μˆ˜λ‘œ 호좜: window
  • λ©”μ„œλ“œλ‘œ 호좜: λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ 객체
  • μƒμ„±μž ν•¨μˆ˜λ‘œ 호좜 : μƒμ„±μž ν•¨μˆ˜κ°€ μƒμ„±ν•œ μΈμŠ€ν„΄μŠ€

2. new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•΄λ‹Ήν•¨μˆ˜λŠ” 000 ν•¨μˆ˜λ‘œ λ™μž‘ν•œλ‹€. λ‹€μ‹œλ§ν•΄. ν•¨μˆ˜ 객체 λ‚΄λΆ€ λ©”μ„œλ“œ xx 이 ν˜ΈμΆœλ˜λŠ” 것이 μ•„λ‹ˆλΌ xxx이 ν˜ΈμΆœλœλ‹€. 단 new 와 ν•¨κ»˜ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λŠ” β€”β€”- 이어야 ν•œλ‹€.

new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ ν•΄λ‹Ήν•¨μˆ˜λŠ” μƒμ„±μž ν•¨μˆ˜λ‘œ λ™μž‘ν•œλ‹€.
ν•¨μˆ˜ 객체 λ‚΄λΆ€ λ©”μ„œλ“œ call이 ν˜ΈμΆœλ˜λŠ” 것이 μ•„λ‹ˆλΌ constructκ°€ ν˜ΈμΆœλœλ‹€.
단 new와 ν•¨κ»˜ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λŠ” non-constructorκ°€ μ•„λ‹Œ constructor이닀.

3. λ°˜λŒ€λ‘œ new μ—°μ‚°μž 없이 μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ 00 ν•¨μˆ˜λ‘œ ν˜ΈμΆœλœλ‹€. λ‹€μ‹œλ§ν•΄ ν•¨μˆ˜ 객체의 λ‚΄λΆ€ λ©”μ„œλ“œ xx κ°€ ν˜ΈμΆœλ˜λŠ” 것이 μ•„λ‹ˆλΌ xx κ°€ ν˜ΈμΆœλœλ‹€.

new μ—°μ‚°μž 없이 μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ 일반 ν•¨μˆ˜λ‘œ ν˜ΈμΆœλœλ‹€. λ‹€μ‹œλ§ν•΄ ν•¨μˆ˜ 객체의 constructκ°€ ν˜ΈμΆœλ˜λŠ” 것이 μ•„λ‹ˆλΌ call이 ν˜ΈμΆœλœλ‹€.

1. μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성 λ°©μ‹μ˜ μž₯점을 객체 λ¦¬ν„°λŸ΄ λ°©μ‹μ˜ 단점을 μ‚¬μš©ν•˜μ—¬ μ„€λͺ…ν•˜μ‹œμ˜€.

κ°μ²΄λ¦¬ν„°λŸ΄μ€ 생성이 κ°„νŽΈν•˜μ§€λ§Œ, 단 ν•œκ°œμ˜ 객체만 μƒμ„±ν•˜λ―€λ‘œ λ™μΌν•œ ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ” ν•¨μˆ˜λ₯Ό μ—¬λŸ¬κ°œ 생성해야할 경우 λ²ˆκ±°λ‘­λ‹€. μƒμ„±μžλŠ” new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•΄ ν…œν”Œλ¦Ώ 처럼 객체λ₯Ό κ°„νŽΈν•˜κ²Œ λ¬΄ν•œνžˆ 찍어낸닀.

2. μžλ°” 슀크립트 엔진이 construct와 non-constructλ₯Ό μ–΄λ–»κ²Œ κ΅¬λΆ„ν•˜λŠ”μ§€ μ˜ˆμ‹œλ₯Ό λ“€μ–΄ μ„€λͺ…ν•˜μ‹œμ˜€.

ν•¨μˆ˜μ˜ μ •μ˜λ₯Ό ν‰κ°€ν•˜μ—¬ ꡬ뢄.

con? ν•¨μˆ˜ μ„ μ–Έλ¬Έ, ν‘œν˜„μ‹, 클래슀

non-constructor: λ©”μ„œλ“œ(λ©”μ„œλ“œμ˜ μΆ•μ•½ν‘œν˜„λ§Œ 인정됨..) , ν™”μ‚΄ν‘œ ν•¨μˆ˜.

3. μƒμ„±μž ν•¨μˆ˜μ˜ μΈμŠ€ν„΄μŠ€ 생성 과정을 μ„€λͺ…ν•˜μ‹œμ˜€.

μƒμ„±μž ν•¨μˆ˜μ˜ 역할은 ν…œν”Œλ¦ΏμœΌλ‘œ λ™μž‘ν•˜μ—¬ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 것과, μƒμ„±λœ μΈμŠ€ν„΄μŠ€λ₯Ό μ΄ˆκΈ°ν™”(μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹° μΆ”κ°€ 및 μ΄ˆκΈ°κ°’ν• λ‹Ή..)ν•˜λŠ” 것이닀. 생성은 ν•„μˆ˜, μ΄ˆκΈ°ν™”λŠ” μ˜΅μ…˜ ..

  1. μΈμŠ€ν„΄μŠ€ 생성과 this 바인딩

: μƒμ„±μž ν•¨μˆ˜ λ‚΄λΆ€μ˜ thisλŠ” μƒμ„±μž ν•¨μˆ˜κ°€ 생성할 μΈμŠ€ν„΄μŠ€λ₯Ό 가리킨닀.

  1. μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” : μƒμ„±μž ν•¨μˆ˜μ— 기술된 μ½”λ“œκ°€ ν•œμ€„μ”© μ‹€ν–‰λ˜μ–΄ this 에 바인딩 λ˜μ–΄μžˆλŠ” μΈμŠ€ν„΄μŠ€λ₯Ό μ΄ˆκΈ°ν™”ν•œλ‹€. ν”„λ‘œνΌν‹°λ‚˜ λ©”μ„œλ“œλ₯Ό μΈμŠ€ν„΄μŠ€μ— μΆ”κ°€, μ΄ˆκΈ°κ°’μ„ 전달받아 μΈμŠ€ν„΄μŠ€ ν”„λ‘œνΌν‹°μ— ν• λ‹Ήν•˜μ—¬ μ΄ˆκΈ°ν™”ν•˜κ±°λ‚˜ 고정값을 ν• λ‹Ή.
  2. μΈμŠ€ν„΄μŠ€μ˜ λ°˜ν™˜: μƒμ„±μž ν•¨μˆ˜ λ‚΄λΆ€μ˜ λͺ¨λ“  μ²˜λ¦¬κ°€ λλ‚˜λ©΄ μΈμŠ€ν„΄μŠ€κ°€ 바인딩 된 this κ°€ μ•”λ¬΅μ μœΌλ‘œ λ°˜ν™˜λœλ‹€.
ν΄λž˜μŠ€μ™€ function의 μ°¨μ΄λŠ” 뭐지? λ¦¬μ•‘νŠΈλŠ” μž‘λ™μ›λ¦¬κ°€ λ‹€λ₯Έκ±ΈκΉŒ? this λ₯Ό ν•¨μˆ˜μ—μ„œλ„ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ”..?
profile
μ΄μ§€ν”Όμ§€λ ˆλͺ¬μŠ€ν€΄μ§€πŸ‹

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보