๐ŸŒ• F-lab ๋ฉ˜ํ† ๋ง ๊ธฐ๋ก

๋ฉ˜ํ† ๋ง ์ดํ›„ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?(feat.๋ถˆ๋ณ€์„ฑ)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ด€์ ์„ ๊ฐ–๊ฒŒ ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ†ตํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐฉ์‹์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ๋ฌด์—‡(what)์„ ํ•  ๊ฒƒ์ธ์ง€๋ณด๋‹ค ์–ด๋–ป๊ฒŒ(how) ํ•  ๊ฒƒ์ธ์ง€

    • ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์ˆ˜ํ–‰๋˜์–ด์•ผํ•  ์ˆœ์ฐจ์ ์ธ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹
    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹
  • ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์–ด๋–ป๊ฒŒ(how) ํ•  ๊ฒƒ์ธ์ง€๋ณด๋‹ค ๋ฌด์—‡(what)์„ ํ•  ๊ฒƒ์ธ์ง€

    • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹

[๋ณด์ถฉ ํ•„์š”]

์˜›๋‚  ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ตœ๊ทผ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ• ๊นŒ?

๋ฐ”๋ฒจ(Babel)์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ”๋ฒจ์€ ES6์ดํ›„์˜ ์ฝ”๋“œ๋ฅผ ์ด์ „ JavaScript ์—”์ง„์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค JavaScript ํŠธ๋žœ์Šค์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค. ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด, ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์˜ˆ์ „ ๋ฌธ๋ฒ•๋“ค๋กœ ์ „ํ™˜ํ•ด์ฃผ๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์ด์ „ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋„ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

[๋ณด์ถฉ ํ•„์š”]

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด๋ž€?

๋ฆฌํ„ฐ๋Ÿด์ด๋ž€ ์†Œ์Šค์ฝ”๋“œ์˜ ๊ณ ์ •๋œ ๊ฐ’์„ ๋Œ€ํ‘œํ•˜๋Š” ์šฉ์–ด๋กœ ๊ณ ์ •๋œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‘œํ˜„ ๊ทธ ์ž์ฒด์ด๋‹ค.
์ฆ‰, ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๋˜๋Š” ์•ฝ์†๋œ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ์–ด๋–ค ๊ณ ์ •๋œ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•์ด๋‹ค.

var Dog = function (name, age) {
  this.name = name;
  this.age = age;
}

var hodu = new Dog('hodu', 2); // ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ†ตํ•œ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด ์ƒ์„ฑ

{name:'hodu', age: 2} // ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•œ ๊ฐ์ฒด ์ƒ์„ฑ

Array์˜ flatten ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

const arr = [
  [a, b],
  [b, c, d],
  [d, f, [e, g]],
];

[๋ณด์ถฉ ํ•„์š”]

์ผ๊ธ‰๊ฐ์ฒด๋ž€?

  1. ๊ฐ’์œผ๋กœ ์ €์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ํŒŒ๋ผ๋ฏธํ„ฐ(์ธ์ž)๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๋ฌด๋ช…์˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

์œ„์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์ผ๊ธ‰๊ฐ์ฒด๋ผ๊ณ  ํ•˜๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰๊ฐ์ฒด์ด๊ธฐ์— ์œ„์˜ ๊ฒฝ์šฐ์— ๋ชจ๋‘ ํ•ด๋‹นํ•œ๋‹ค.

์ผ๊ธ‰๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์—

  • ์ฝœ๋ฐฑํ•จ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌํ•˜๋‹ˆ๊นŒ)
  • ๊ณ ์ฐจํ•จ์ˆ˜๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.(ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋‹ˆ๊นŒ)
  • ํด๋กœ์ € ํ˜„์ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.(๋‚ด๋ถ€ํ•จ์ˆ˜๋ฅผ ์™ธ๋ถ€๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ)

Array์—์„œ Object์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€?

Array์˜ prototype์€ ๊ณง Object์˜ instance์ด๋‹ค.
๋”ฐ๋ผ์„œ ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด

Array.prototype.__proto__.constructor === Object; // true
Object.getPrototypeOf(Array.prototype).constructor === Object; // true

๋”ฐ๋ผ์„œ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์— ์˜ํ•ด Array์—์„œ Object์˜ ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” Object์˜ prototype์— ๋„๋‹ฌ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ Object๋งŒ์˜ ๋ฉ”์†Œ๋“œ๋Š” ์ŠคํƒœํŠน ๋ฉ”์„œ๋“œ๋กœ์„œ ๊ตฌํ˜„ํ•ด๋‘์—ˆ๋‹ค.