Skip to content

Instantly share code, notes, and snippets.

λ“€μ–΄κ°€λ©°

Object(Instance), Class에 λŒ€ν•΄ 감이 μ˜€μ§€ μ•ŠλŠ”λ‹€λ©΄ 이 κΈ€ 을 μ°Έκ³ ν•΄μ£Όμ„Έμš”.

λ‚΄μš©

OOPκ°€ 뭐야?

λ“€μ–΄κ°€λ©°

OOP에 λŒ€ν•΄μ„œ 곡뢀λ₯Ό ν•˜λ˜ 쀑에 Object 에 λŒ€ν•΄ 곡뢀가 λΆ€μ‘±ν•˜λ‹€λŠ” 생각이 λ“€μ–΄ Object(Instance) 와 Class 에 λŒ€ν•΄ λ¨Όμ € 곡뢀λ₯Ό ν•˜κ²Œ λ˜μ—ˆλ‹€.

곡뢀λ₯Ό ν•˜λ©° λ‚΄κ°€ κ·Έλ™μ•ˆ ν—€λ©¨λ˜ λ‚΄μš©μ— λŒ€ν•΄ 정리λ₯Ό ν–ˆλ‹€.

λ‚΄μš©

객체가 뭐야?

객체 λž€ λ¬΄μ—‡μΌκΉŒ?

λ‚΄μš©

[[Prototype]], __proto__, prototype 의 차이

JavaScript μ—μ„œ λ³€μˆ˜μ™€ ν•¨μˆ˜λŠ” μ›ν˜•μ„ κ°–λŠ” 객체이닀. 그리고 JavaScript μ—μ„œλŠ” 이 μ›ν˜•μ„ __proto__([[Prototype]]) κ³Ό prototype 으둜 λ‚˜νƒ€λ‚Έλ‹€.

prototype 은 ν”„λ‘œν† νƒ€μž… 객체 λ₯Ό λ§ν•˜λŠ” 것이고, __proto__ λŠ” ν”„λ‘œν† νƒ€μž… 링크 λ₯Ό λ§ν•˜λŠ” 것이닀.

이λ₯Ό μžμ„Ένžˆ μ•Œμ•„λ³΄μž.

λ“€μ–΄κ°€λ©°

λ™μΌν•œ λ‚΄μš©μ΄ μžλ°”μŠ€ν¬λ¦½νŠΈ μŠ€ν„°λ”” μ‹œλ¦¬μ¦ˆμ— μžˆκΈ°λŠ” ν•˜μ§€λ§Œ, μžλ°”μŠ€ν¬λ¦½νŠΈ μ‹œλ¦¬μ¦ˆμ—λ„ 이 λ‚΄μš©μ„ λ„£κ³  μ‹Άμ–΄μ„œ 같은 글을 두 번 ν¬μŠ€νŒ…ν•˜κ²Œ λ˜μ—ˆλ‹€.

λ‚΄μš©

1. Scope

μŠ€μ½”ν”„λŠ” ν”νžˆ, λ³€μˆ˜μ˜ 생쑴 λ²”μœ„ 라고 μ•Œκ³  μžˆλ‹€. λ‚˜ λ˜ν•œ κ·Έλ ‡κ²Œλ§Œ μƒκ°ν•˜κ³  μžˆμ—ˆλ‹€. λ¬Όλ‘  이 말이 마λƒ₯ 틀린것은 μ•„λ‹ˆμ§€λ§Œ, μŠ€μ½”ν”„λŠ” 보닀 넓은 κ°œλ…μ„ ν¬ν•¨ν•˜λŠ” 단어이닀. >

λ“€μ–΄κ°€λ©°

ν΄λ‘œμ €μ— κ΄€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ°œλ… μœ„μ£Όλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Closure

μ±…κ³Ό μ—¬λŸ¬ 자료λ₯Ό 보고 정리 해봀을 λ•Œ, ν΄λ‘œμ €λŠ” μ•„λž˜μ™€ 같은 κ°œλ…μ„ λ§ν•œλ‹€κ³  λ‚˜λ¦„μ˜ 정리λ₯Ό ν•΄λ΄€λ‹€.

λ“€μ–΄κ°€λ©°

μƒμ„±μžμ™€ this 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μ•˜λ‹€.

개인적으둜 μƒμ„±μž ν•¨μˆ˜λΌλŠ” 말 λ³΄λ‹€λŠ” ν•¨μˆ˜μ˜ μƒμ„±μžκ°€ λ§žλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, μƒμ„±μžλΌκ³  μž‘μ„±ν•˜λ©΄ μ½λŠ”λ° ν—·κ°ˆλ¦¬λŠ” 뢀뢄이 μžˆμ„ 것 κ°™μ•„ 이해λ₯Ό μœ„ν•΄ μƒμ„±μž ν•¨μˆ˜λΌκ³  μ μ—ˆλ‹€.

  • μΈμ‚¬μ΄λ“œ μžλ°”μŠ€ν¬λ¦½νŠΈ Ch.4.4λ₯Ό μ°Έκ³ ν•˜μ˜€λ‹€.

λ“€μ–΄κ°€λ©°

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— κ΄€ν•œ μ§€λ‚œλ²ˆ μžλ£Œμ—μ„œ thisλŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— 따라 달라진닀 λΌλŠ” λ‚΄μš©μ„ κ°„λ‹¨ν•˜κ²Œ μ–ΈκΈ‰ν–ˆμ—ˆλ‹€.

κ·Έ λ•ŒλŠ” μ™œ λ‹¬λΌμ§€λŠ”μ§€ 에 λŒ€ν•΄μ„œ 언급을 ν–ˆμ—ˆλ‹€. μ΄λ²ˆμ—λŠ” μ–΄λ–»κ²Œ λ‹¬λΌμ§€λŠ”μ§€ 에 λŒ€ν•œ λ‚΄μš©μ΄λ‹€.

ν˜Ήμ‹œλ‚˜ 링크λ₯Ό 타고가지 μ•Šμ„ λˆ„κ΅°κ°€λ₯Ό μœ„ν•΄ κ°„λ‹¨ν•˜κ²Œ λ§ν•΄λ³΄μžλ©΄,

Execution context κ°€ λ§Œλ“€μ–΄μ§ˆ λ•Œ this κ°€ 바인딩이 되기 λ•Œλ¬Έμ΄λ‹€. κ·ΈλŸ¬λ‹ˆκΉŒ μ‹€ν–‰ 쀑에 결정이 λœλ‹€λŠ” 말이닀.

@snaag
snaag / Function.md
Created May 13, 2020 09:44
Function

λ“€μ–΄κ°€λ©°

ν•¨μˆ˜μ— λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

μ±… μΈμ‚¬μ΄λ“œ μžλ°”μŠ€ν¬λ¦½νŠΈ(4.1~4.3)λ₯Ό μ°Έκ³ ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

ν•¨μˆ˜μ˜ μ •μ˜

@snaag
snaag / Execution-Context.md
Last active January 12, 2023 00:57
Execution Context

λ“€μ–΄κ°€λ©°

μ§€λ‚œ JavaScript, Front-End λ°œν‘œ μ£Όμ œλŠ” this μ˜€μ§€λ§Œ, κ³΅λΆ€ν•˜λ‹€ λ³΄λ‹ˆ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•œ λ‚΄μš©μ΄ μ„ ν–‰λ˜μ•Ό ν•  것 κ°™μ•„ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— λŒ€ν•˜μ—¬ λ°œν‘œλ₯Ό ν•˜κ²Œ λ˜μ—ˆλ‹€.

μ—¬λŸ¬ μžλ£Œμ™€ 책을 μ°Έκ³ ν•˜λ©° 곡뢀λ₯Ό ν•˜κ³  μžˆμŒμ—λ„ λ‚΄μš©μ΄ 잘 와닿지 μ•Šμ•„ μ°Έκ³ 1을 μ°Έκ³ 2, μ°Έκ³ 3, μ°Έκ³ 4, μ±… μΈμ‚¬μ΄λ“œ μžλ°”μŠ€ν¬λ¦½νŠΈ, Poiema Web을 μ°Έκ³ ν•˜μ—¬ λ²ˆμ—­μ„ ν•΄λ³΄κ³ μž ν•œλ‹€. μΆ”κ°€μ μœΌλ‘œ λ‚΄κ°€ μ—¬λŸ¬ 자료λ₯Ό μ°Ύμ•„λ³΄λ©΄μ„œ μ•Œκ²Œ 된 λ‚΄μš©λ“€λ„ 덧뢙일 것이닀.

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ, Execution Context(μ΄ν•˜ EC) λΌλŠ” κ°œλ…μ€ λ‚˜μ—κ² λ‚―μ„€μ—ˆκΈ°μ— λ‚˜μ™€ 같은 μ‚¬λžŒλ“€μ΄ μžˆμ„ 것 κ°™μ•„ ν”νžˆλ“€ μ•„λŠ” μ½œμŠ€νƒ 을 μ‹œμž‘μœΌλ‘œ 글을 써보도둝 ν•˜κ² λ‹€.

@snaag
snaag / JITC-and-Adaptive-JITC.md
Created May 13, 2020 09:33
JITC, Adaptive-JITC

λ“€μ–΄κ°€λ©°

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 컴파일 μ–Έμ–΄μΈκ°€μš”, 인터프리터 μ–Έμ–΄μΈκ°€μš”? λΌλŠ” λ‚΄μš©μ„ κ²€μƒ‰ν•˜λ©΄ μ’…μ’… λ³΄μ΄λŠ” 단어가 μžˆλ‹€.

λ°”λ‘œ JITC (Just-In-Time Compiler) λΌλŠ” 단어인데, 같이 λ‚˜μ˜€λŠ” λ‚΄μš©μΈ 즉 JITCλŠ” μΈν„°ν”„λ¦¬νŒ…μ„ ν•˜λ‹€κ°€, ν•„μš”ν•œ 뢀뢄에 λŒ€ν•΄μ„œλŠ” μ»΄νŒŒμΌμ„ ν•˜μ—¬ μ΅œμ ν™”λ₯Ό ν•œλ‹€ 이닀. 이 말은 λ‚΄μš©μ€ λ§žμ§€λ§Œ 이름이 ν‹€λ Έλ‹€.

μœ„μ˜ 방식은 Adaptive JITC 라고 ν•˜μ—¬, 졜근 λŒ€λ‹€μˆ˜μ˜ JavaScript 엔진듀이 μ°¨μš©ν•˜λŠ” 방식이닀. 그리고 JITC λŠ” 과거의 JavaScript 엔진듀이 μ°¨μš©ν•˜λ˜ 방식이닀.