avatar
Published on

TILπŸ“š μ•±κ°œλ°œ μŠ€ν„°λ”” - 1 week

Authors
  • avatar
    Name
    Haneul
    Twitter

TILπŸ“š μ•±κ°œλ°œ μŠ€ν„°λ”” - 1 week

Javascript

Object Oriented Programming

  1. 상속 : ν΄λž˜μŠ€κ°œλ…μ—μ„œ μƒμœ„ 클래슀(λΆ€λͺ¨)둜 λΆ€ν„° ν•˜μœ„ 클래슀(μžμ‹)이 μœ μ‚°μ„ λ¬Όλ €λ°›λŠ”κ²ƒκ³Ό 같이, λΆ€λͺ¨μ˜ λ©”μ†Œλ“œλ‚˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 것을 말함.

  2. λ‹€ν˜•μ„± : 같은 ν•¨μˆ˜κ°€ μžˆλ‹€κ³  μΉ λŒ€ κ·Έ ν•¨μˆ˜κ°€ λ§€κ°œλ³€μˆ˜μ— 따라 λ‹€λ₯Έ 역할을 ν•  수 도 μžˆλ‹€.

  3. μΊ‘μŠν™” : 보톡 데이터λ₯Ό μ€λ‹‰μ‹œν‚¨λ‹€κ³  ν‘œν˜„ν•˜λŠ”λ°, μ™ΈλΆ€μ—μ„œ μ‰½κ²Œ 데이터λ₯Ό μ ‘κ·Όν•  수 μ—†κ²Œ λ§Œλ“€κΈ°λ„ν•˜κ³ , 데이터 ꡬ쑰와 데이터λ₯Ό λ‹€λ£¨λŠ” 방법듀을 ν•œλ°λ‹€ λ¬ΆλŠ”κ²ƒ.

  4. 좔상화 : 곡톡적인 μ†μ„±μ΄λ‚˜ κΈ°λŠ₯을 λ¬Άμ–΄μ„œ 이름을 λΆ™μ΄λŠ” 것 ( a b d μ΄λŸ°κ²Œμžˆλ‹€κ³  치면 이런건 μ•ŒνŒŒλ²³μ΄λΌκ³  묢을 수 μžˆλ‹€)

OOP와 ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ˜ κ°€μž₯ 큰 차이점은 무엇인가

객체지ν–₯은 객체 μ•ˆμ— μƒνƒœλ₯Ό μ €μž₯ν•˜κ³ , 이 μƒνƒœλ₯Ό μ΄μš©ν•΄μ„œ λ©”μ†Œλ“œλ₯Ό μΆ”κ°€ν•˜κ³  μƒνƒœλ³€ν™”λ₯Ό μ„€μ •ν•˜κ³  μ‘°μ •ν•˜κΈ°μœ„ν•΄ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•œλ‹€.

이에 λ°˜ν•΄ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°μ€ μƒνƒœλ₯Ό μ œμ–΄ν•˜λŠ”κ²ƒλ³΄λ‹€ μƒνƒœλ₯Ό μ €μž₯ν•˜μ§€ μ•Šκ³  μ—†μ• λŠ”λ° μ£Όλ ₯ν•œλ‹€. 예λ₯Όλ“€λ©΄, 객체 지ν–₯은 μƒνƒœλ₯Ό μ €μž₯ν•˜λŠ” ν•„λ“œμ™€ κ·Έ ν•„λ“œλ“€μ„ μ΄μš©ν•΄ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” λ©”μ†Œλ“œλ₯Ό λ§Œλ“€κ³  클래슀λ₯Ό λ§Œλ“­λ‹ˆλ‹€. 반면 ν•¨μˆ˜ν˜•μ€ λͺ‡λͺ‡ 자료ꡬ쑰(list, map, set) 등을 μ΄μš©ν•΄ μ΅œμ ν™”λœ λ™μž‘μ„ λ§Œλ“€μ–΄λ‚Έλ‹€.

데이터 νƒ€μž…

  • κΈ°λ³Έν˜• : 값을 κ·ΈλŒ€λ‘œ ν• λ‹Ή / λΆˆλ³€μ  ⭕️

  • Number / String / Boolean / null / undefined

  • μ°Έμ‘°ν˜• : 값이 μ§€μ •λœ μ£Όμ†Œκ°’μ„ ν• λ‹Ή / λΆˆλ³€μ  ❌

  • Object / Array / Map

λ³€μˆ˜ μ„ μ–Έ

  • var : μž¬μ„ μ–Έ ⭕️ / ν˜Έμ΄μŠ€νŒ…

  • μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”κ°€ ν•œλ²ˆμ— 일어남 (undefined 둜 μ΄ˆκΈ°ν™”)

  • let (es6) : μž¬μ„ μ–Έ ❌ / μž¬ν• λ‹Ή ⭕️/ ν˜Έμ΄μŠ€νŒ…

  • μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”κ°€ λ”°λ‘œ λ°œμƒ > λ³€μˆ˜ μ΄ˆκΈ°ν™”κ°€ μ•ˆλœ μƒνƒœμ—μ„œ μ°Έμ‘°ν•˜λ©΄ μ—λŸ¬

  • const (es6) : μž¬μ„ μ–Έ ❌ / μž¬ν• λ‹Ή ❌

ν™”μ‚΄ν‘œ ν•¨μˆ˜

  • functionκ³Ό 달리 ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ this에 바인딩할 객체가 μ •μ μœΌλ‘œ κ²°μ •λœλ‹€.

  • μƒμœ„μŠ€μ½”ν”„μ˜ thisλ₯Ό 가리킴 (lexical this)

  • thisκ°€ window객체λ₯Ό 가리킀지 μ•Šκ²Œ 쑰심해야함!

  • call/apply/bind둜 this λ³€κ²½ λΆˆκ°€λŠ₯

Array.prototype.map()

arr.map(callback(currentValue[, index[, array]])[, thisArg])
const array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]

map은 callback ν•¨μˆ˜λ₯Ό 각각의 μš”μ†Œμ— λŒ€ν•΄ ν•œλ²ˆμ”© μˆœμ„œλŒ€λ‘œ 뢈러 κ·Έ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μœΌλ‘œ μƒˆλ‘œμš΄ 배열을 λ§Œλ“­λ‹ˆλ‹€. callback ν•¨μˆ˜λŠ” (undefined도 ν¬ν•¨ν•΄μ„œ) λ°°μ—΄ 값이 λ“€μ–΄μžˆλŠ” μΈλ±μŠ€μ— λŒ€ν•΄μ„œλ§Œ ν˜ΈμΆœλ©λ‹ˆλ‹€. 즉, 값이 μ‚­μ œλ˜κ±°λ‚˜ 아직 값이 ν• λ‹Ή/μ •μ˜λ˜μ§€ μ•Šμ€ μΈλ±μŠ€μ— λŒ€ν•΄μ„œλŠ” ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

callback ν•¨μˆ˜λŠ” 호좜될 λ•Œ λŒ€μƒ μš”μ†Œμ˜ κ°’, κ·Έ μš”μ†Œμ˜ 인덱슀, 그리고 map을 ν˜ΈμΆœν•œ 원본 λ°°μ—΄ 3개의 인수λ₯Ό μ „λ‹¬λ°›μŠ΅λ‹ˆλ‹€.

thisArg λ§€κ°œλ³€μˆ˜κ°€ map에 μ „λ‹¬λœ 경우 callback ν•¨μˆ˜μ˜ thisκ°’μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. κ·Έ μ™Έμ˜ 경우 undefined값이 this κ°’μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. callback ν•¨μˆ˜μ—μ„œ μ΅œμ’…μ μœΌλ‘œ λ³Ό 수 μžˆλŠ” this 값은  ν•¨μˆ˜ λ‚΄ thisλ₯Ό μ •ν•˜λŠ” 일반적인 κ·œμΉ™μ— 따라 κ²°μ •λ©λ‹ˆλ‹€.

TIL βœ…

μ „λ°˜μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈ κΈ°μ΄ˆμ— λŒ€ν•œ ν•™μŠ΅μ΄μ—ˆκ³ , κ°œμΈμ μœΌλ‘œλŠ” skip 해도 λ λ§Œν•œ μ •λ„μ˜ μˆ˜μ€€μ΄μ—ˆλ‹€. λ‹€μŒ react native ν•™μŠ΅μ„ κΈ°λŒ€ν•΄μ•Όκ² λ‹€. πŸ‘

μ°Έκ³  : 슀파λ₯΄νƒ€ μ½”λ”©ν΄λŸ½, Javascript MDN