๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

[Javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด - ํžˆ๋“ ํด๋ž˜์Šค, ์ธ๋ผ์ธ์บ์‹œ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ์ •์  ํƒ€์ž… ์–ธ์–ด์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์™€ ๋‹ค๋ฅด๊ฒŒ ๋Ÿฐํƒ€์ž„ ๋™์•ˆ ์ž์œ ๋กญ๊ฒŒ ์ƒ์„ฑ, ์ˆ˜์ •, ํ™•์žฅ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‚˜์„œ ์–ธ์ œ๋“ ์ง€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.

 

const person = { name: "Jongbin", age: 29 };
person.job = "Programmer";

 

 

๊ฐ์ฒด person์„ ์ƒ์„ฑํ•˜๊ณ  ์ดํ›„์— job์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. Javascript์˜ ์ด๋Ÿฐ ์œ ์—ฐ์„ฑ ๋•๋ถ„์— ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™์  ํƒ€์ดํ•‘(dynamic typing)๊ณผ ๋™์  ๊ฐ์ฒด ๊ตฌ์กฐ(dynamic object structure)๊ฐ€ ๊ฒฐํ•ฉ๋œ ์ด๋Ÿฐ ํŠน์„ฑ์œผ๋กœ ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋™์ ์ธ ํŠน์„ฑ์—๋Š” ์„ฑ๋Šฅ์— ๊ด€ํ•œ ๋ฌธ์ œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋Ÿฐํƒ€์ž„์—์„œ ๋งค๋ฒˆ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ๋™์ผํ•œ ์ฝ”๋“œ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ๊ทธ ๊ตฌ์กฐ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ๋‹ค.


โœ“ ํžˆ๋“  ํด๋ž˜์Šค(Hidden Classes)

 

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

 

ํžˆ๋“  ํด๋ž˜์Šค์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์กด์žฌํ•œ๋‹ค.

 

  • ๊ฐ์ฒด๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
  • ํžˆ๋“  ํด๋ž˜์Šค๋Š” ๊ฐ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์˜คํ”„์…‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ๋™์ ์œผ๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ๋•Œ, ํ˜น์€ ๊ธฐ์กด ํ”„๋กœํผํ‹ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ๊ธฐ์กด ํ”„๋กœํผํ‹ฐ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋ฐ”๋€” ๋•Œ๋Š” ์‹ ๊ทœ ํžˆ๋“  ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ, ์‹ ๊ทœ ํžˆ๋“  ํด๋ž˜์Šค๋Š” ๊ธฐ์กด ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ถ”๊ฐ€์ ์œผ๋กœ ์ƒˆ ํ”„๋กœํผํ‹ฐ์˜ ์˜คํ”„์…‹์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
  • ํžˆ๋“  ํด๋ž˜์Šค๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฐธ์กฐํ•ด์•ผ ํ•˜๋Š” ํžˆ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด, ํ˜„์žฌ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ํžˆ๋“  ํด๋ž˜์Šค์˜ ์ „ํ™˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•œ ํ›„, ํ˜„์žฌ ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ์ „ํ™˜ ์ •๋ณด์˜ ์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋ฉด, ๊ฐ์ฒด์˜ ์ฐธ์กฐ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์กฐ๊ฑด์— ๋ช…์‹œ๋œ ํžˆ๋“  ํด๋ž˜์Šค๋กœ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.
์˜คํ”„์…‹(offset)์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์—์„œ ํŠน์ • ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐœ๋…. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ ๊ธฐ์ค€์ (๋ฉ”๋ชจ๋ฆฌ์˜ ์‹œ์ž‘์ )์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ ๋˜๋Š” ์ฐจ์ด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ๋•Œ, obj1๊ณผ obj2๋Š” ๋™์ผํ•œ ํ”„๋กœํผํ‹ฐ(x, y)์™€ ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ด ๋‘ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋™์ผํ•œ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 

 

const obj1 = { x: 10, y: 20 };
const obj2 = { x: 30, y: 40 };

 

 

ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ๋”์ด์ƒ ๊ฐ™์€ ๊ฐ™์€ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š”๋‹ค.

obj2์— ํ”„๋กœํผํ‹ฐ z๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด์„œ obj2์˜ ๊ฐ์ฒดํƒ์ƒ‰์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํžˆ๋“ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ์ตœ์ดˆ์— ์ƒ์„ฑ๋  ๋•Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ƒˆ๋กœ์šด ํžˆ๋“ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋˜๊ฒŒ ๋œ๋‹ค.

 

obj2.z = 50;

// obj1 = { x: 10, y: 20 };
// obj2 = { x: 30, y: 40, z: 50 };

 

 

๐Ÿง ๊ทธ๋Ÿฐ๋ฐ ์ด ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ์™œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š” ๊ฒƒ์ผ๊นŒ?

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•  ๋•Œ ์‹ค์ œ๋กœ๋Š” ๋ณ„์ž์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. obj1์˜ ํ”„๋กœํผํ‹ฐ x์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ๋ณ„์ž๋ฅผ ํ†ตํ•ด์„œ ํ‘œํ˜„ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— ์œ„์น˜ํ•˜๋Š” ์–ด๋”˜๊ฐ€์— ์ ‘๊ทผํ•ด์„œ ์‹ค์ œ ๊ฐ’์€ 10์„ ์•Œ์•„๋‚ด์•ผ ํ•œ๋‹ค.

 

๊ฒฐ๊ตญ ํžˆ๋“ ํด๋ž˜์Šค๋Š” ์˜คํ”„์…‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์žˆ๋Š” ๊ตฌ์กฐ์ฒด์ด๋ฏ€๋กœ ์ด ์˜คํ”„์…‹์„ ์ด์šฉํ•ด์„œ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ๋” ๋นจ๋ฆฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์–ด๋–ค ์‹๋ณ„์ž๋Š” ์‹ค์ œ๋กœ ๊ฐ’์„ ๊ฐ€๋ฅดํ‚ค์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ์ฒซ ์œ„์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ํžˆ๋“ ํด๋ž˜์Šค์˜ ์˜คํ”„์…‹ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๋‚ด๊ฐ€ ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์ฃผ์†Œ๋ฅผ ๋ฐ”๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๊ฐ์ฒด์ด๋ฉด์„œ ๋™์ผํ•œ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•˜๋”๋ผ๋„ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ ํ•œ๊ฐ€์ง€ ์˜๋ฌธ์ ์ด ๋“ ๋‹ค. ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์€ ๊ฐ™์„ ์ˆ˜ ์žˆ์œผ๋‚˜, ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์ด ๋‹ค๋ฅผํ…๋ฐ ์–ด๋–ป๊ฒŒ ๊ฐ์ฒด๋งˆ๋‹ค ๋™์ผํ•œ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด๋‹ค.

const obj1 = { 
	x: "aaaaaaaaaaaaaaaaaaaaaa...", 
	y: { y1: 1, y2: 2, ... } 
};

const obj2 = { x: 30, y: 40 };

 

obj1๊ณผ obj2๋Š” ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์ด ๊ฐ™๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•  ๊ฒƒ์ด๋‹ค. ๋™์ผํ•œ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ํ”„๋กœํผํ‹ฐ๋งˆ๋‹ค ์˜คํ”„์…‹์ด ๋™์ผํ•  ๊ฒƒ์ด๋‹ค. ์›์‹œ๊ฐ’(number, string), ๊ฐ์ฒดํƒ€์ž…์œผ๋กœ ๊ฐ€์ง€๊ฐ์ƒ‰์ธ๋ฐ ์–ด๋–ป๊ฒŒ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

๊ฒฐ๋ก ์„ ๋จผ์ € ์ด์•ผ๊ธฐํ•˜์ž๋ฉด, ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๋•Œ ์ €์žฅ๋˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

 

๐Ÿ“˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์›์‹œ๊ฐ’(Primitive Values)์˜ ์ €์žฅ ๋ฐฉ์‹

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์›์‹œ๊ฐ’์€ number, string, boolean, null, undefined, symbol ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค. ์ด ๊ฐ’๋“ค์€ ๋ณดํ†ต ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

  • ์ˆซ์ž(number)๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ 64๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์  ๊ฐ’(IEEE 754 ํ‘œ์ค€)์„ ์‚ฌ์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ˆซ์ž๋Š” 64๋น„ํŠธ(8๋ฐ”์ดํŠธ)์˜ ๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค. 
  • boolean, null, undefined ๊ฐ’๋“ค์€ ๋งค์šฐ ์ž‘์€ ํฌ๊ธฐ์˜ ๊ฐ’์œผ๋กœ ๋Œ€๊ฐœ 1๋ฐ”์ดํŠธ๋‚˜ ์†Œ์ˆ˜์˜ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ๋œ๋‹ค.
  • ๋ฌธ์ž์—ด(string)์˜ ๊ฒฝ์šฐ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค. ๋ฌธ์ž์—ด์€ ๊ฐ€๋ณ€ ๊ธธ์ด์ด๋ฏ€๋กœ ์‹ค์ œ ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์ €์žฅ๋˜๋ฉฐ ๊ทธ ์œ„์น˜(๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ)๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. 

 

์œ„ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • number, boolean: ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ ๊ฐ’๋“ค์€ ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜คํ”„์…‹์— ์ง์ ‘ ์ €์žฅ๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ˆซ์ž๊ฐ€ 64๋น„ํŠธ๋กœ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ๋ถˆ๋ฆฌ์–ธ์€ ๋งค์šฐ ์ž‘์€ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ํฌ๊ธฐ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • string ๋ฐ ์ฐธ์กฐ ํƒ€์ž…: ๋ฌธ์ž์—ด์€ ๊ณ ์ •๋œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฐธ์กฐ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ๊ฐ์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜คํ”„์…‹์—๋Š” ๋ฌธ์ž์—ด ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๊ทธ ๋ฌธ์ž์—ด์ด ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ด๋Ÿฐ ๋ฐฉ์‹์€ ๋ฌธ์ž์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ object, array, function๊ณผ ๊ฐ™์€ ์ฐธ์กฐ ํƒ€์ž…์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(๋ณดํ†ต 32๋น„ํŠธ ๋˜๋Š” 64๋น„ํŠธ ํฌ๊ธฐ)๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐ๋œ๋‹ค.

 

์˜คํ”„์…‹์œผ๋กœ ์ ‘๊ทผํ•œ ์œ„์น˜๋Š” ๊ฒฐ๊ตญ ๋‹ค ๋™์ผํ•œ ํฌ๊ธฐ์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๋งŒ ๋™์ผํ•˜๋”๋ผ๋„ ๋™์ผํ•œ ํžˆ๋“ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด์„œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์˜ˆ๋ฅผ ๋“ค๋ฉฐ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ํ’€์–ด๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

  • ํ”„๋กœํผํ‹ฐ ์ €์žฅ ํฌ๊ธฐ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋Š” ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค. ์›์‹œ๊ฐ’๊ณผ ์ฐธ์กฐ ๊ฐ’์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋  ๋•Œ, ์›์‹œ๊ฐ’์€ ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ณ  ์ฐธ์กฐ ๊ฐ’์€ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ์ €์žฅ๋œ๋‹ค. ๋ณดํ†ต ์ด ํฌ๊ธฐ๋Š” 32๋น„ํŠธ(4๋ฐ”์ดํŠธ) ๋˜๋Š” 64๋น„ํŠธ(8๋ฐ”์ดํŠธ)๋กœ ๊ณ ์ •๋œ๋‹ค.
    • ์ˆซ์ž ๊ฐ’: 64๋น„ํŠธ ๋ถ€๋™์†Œ์ˆ˜์ ์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ ์ผ๋ฐ˜์ ์œผ๋กœ 8๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.
    • ์ฐธ์กฐ ๊ฐ’: ๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜ ๋“ฑ์˜ ์ฐธ์กฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์ฐธ์กฐ ๊ฐ’๋„ 64๋น„ํŠธ(8๋ฐ”์ดํŠธ)๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค.
    ์ฆ‰, ๊ฐ’์˜ ํฌ๊ธฐ์™€ ๊ด€๊ณ„์—†์ด ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋Š” 64๋น„ํŠธ(8๋ฐ”์ดํŠธ) ํฌ๊ธฐ์˜ ๊ณ ์ •๋œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

  • ์˜คํ”„์…‹ ๊ณ„์‚ฐ: ๊ฐ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋™์ผํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋“ค์˜ ์ƒ๋Œ€์  ์˜คํ”„์…‹์„ ๊ฒฐ์ •ํ•œ๋‹ค. ๋งŒ์•ฝ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ์˜ ์˜คํ”„์…‹์ด 0์ด๋ผ๋ฉด ๋‘ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ์˜ ์˜คํ”„์…‹์€ ์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ฐจ์ง€ํ•œ 8๋ฐ”์ดํŠธ ๋‹ค์Œ์— ์œ„์น˜ํ•˜๊ฒŒ ๋œ๋‹ค.
    • x์˜ ์˜คํ”„์…‹: 0 (์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ)
    • y์˜ ์˜คํ”„์…‹: 8 (๋‘ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ, ์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ์˜ 8๋ฐ”์ดํŠธ ๋’ค)
    • z์˜ ์˜คํ”„์…‹: 16 (์„ธ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ, ๋‘ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ์˜ 8๋ฐ”์ดํŠธ ๋’ค)

 

  • ๊ฐ’์˜ ํƒ€์ž…์— ๋”ฐ๋ฅธ ์ฐจ์ด: ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ์›์‹œ๊ฐ’์ด๋“  ๊ฐ์ฒด ์ฐธ์กฐ์ด๋“  ์˜คํ”„์…‹์€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.
    • ์ˆซ์ž๊ฐ’, ๋ถˆ๋ฆฌ์–ธ ๋“ฑ ์›์‹œ๊ฐ’: ๊ทธ ๊ฐ’ ์ž์ฒด๊ฐ€ 8๋ฐ”์ดํŠธ ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค.
    • ๊ฐ์ฒด, ๋ฌธ์ž์—ด ์ฐธ์กฐ ๊ฐ’: ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ๋Š” ๊ฐ์ฒด, ๋ฌธ์ž์—ด์˜ ์ฃผ์†Œ(์ฐธ์กฐ)๊ฐ€ 8๋ฐ”์ดํŠธ ๊ณต๊ฐ„์— ์ €์žฅ๋œ๋‹ค.

โœ“ ์ธ๋ผ์ธ ์บ์‹œ(Inline Cache)

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

 

์ธ๋ผ์ธ ์บ์‹œ๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์บ์‹œํ•ด๋‘๊ณ  ์ดํ›„ ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ์— ๋‹ค์‹œ ์ ‘๊ทผํ•  ๋•Œ ์บ์‹œ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•ด ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

์ธ๋ผ์ธ ์บ์‹œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

  • ์ฒ˜์Œ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๊ฐ์ฒด์˜ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์–ด๋””์— ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด๋•Œ ๊ฒฝ๋กœ(ํ”„๋กœํผํ‹ฐ์˜ ์˜คํ”„์…‹ ์œ„์น˜)์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ธ๋ผ์ธ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค.
  • ๋‹ค์Œ์— ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ: ๋งŒ์•ฝ ๊ฐ์ฒด๊ฐ€ ๊ฐ™์€ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ์ธ๋ผ์ธ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ €์žฅ๋œ ๊ฒฝ๋กœ๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜์ง€ ์•Š๊ณ , ๋ฐ”๋กœ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
์บ์‹œ ๋ฏธ์Šค(Cache Miss)
๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง€๊ฑฐ๋‚˜, ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์งˆ ๊ฒฝ์šฐ, ์ธ๋ผ์ธ ์บ์‹œ๋Š” ํ•ด๋‹น ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๊ฒฝ์šฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋‹ค์‹œ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ํ™•์ธํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค.

์ธ๋ผ์ธ ์บ์‹œ์˜ ์ข…๋ฅ˜

์ธ๋ผ์ธ ์บ์‹œ์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

  • ๋ชจ๋…ธ๋ชจํ”ฝ ์บ์‹œ(Monomorphic Inline Cache): ํŠน์ • ํ•จ์ˆ˜์—์„œ ๋™์ผํ•œ ํƒ€์ž…์ด๋‚˜ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰, ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ํ•ญ์ƒ ๋™์ผํ•œ ํžˆ๋“  ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • ํด๋ฆฌ๋ชจํ”ฝ ์บ์‹œ(Polymorphic Inline Cache): ๋™์ผํ•œ ํ•จ์ˆ˜์—์„œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ํžˆ๋“  ํด๋ž˜์Šค๋‚˜ ํƒ€์ž…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์—ฌ๋Ÿฌ ํžˆ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์บ์‹œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ํ•จ์ˆ˜๊ฐ€ ๋‹ค์–‘ํ•œ ํƒ€์ž…์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ตœ์ ํ™”ํ•œ๋‹ค.

 

์ธ๋ผ์ธ ์บ์‹œ์™€ ํžˆ๋“  ํด๋ž˜์Šค๋Š” ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋„ ์žˆ๋‹ค. ํžˆ๋“  ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์˜ ๊ตฌ์กฐ(ํ”„๋กœํผํ‹ฐ์™€ ๊ทธ ์ˆœ์„œ)๋ฅผ ์ •์˜ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์ธ๋ผ์ธ ์บ์‹œ๋Š” ๋” ๋‚˜์ด๊ฐ€ ์ด ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๊ฒฝ๋กœ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • ํžˆ๋“  ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ: ์ธ๋ผ์ธ ์บ์‹œ๋Š” ๊ฐ™์€ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๊ฒฝ๋กœ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜๊ณ  ์ดํ›„ ๊ฐ™์€ ํžˆ๋“  ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์—์„œ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ๋•Œ ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•œ๋‹ค.
  • ํžˆ๋“  ํด๋ž˜์Šค๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฒฝ์šฐ: ๋งŒ์•ฝ ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋ณ€ํ•˜๋ฉด(ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€, ์‚ญ์ œ ๋“ฑ) ์ƒˆ๋กœ์šด ํžˆ๋“  ํด๋ž˜์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒŒ ๋œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ธ๋ผ์ธ ์บ์‹œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋˜๋ฏ€๋กœ ์—”์ง„์€ ์ƒˆ๋กœ์šด ํžˆ๋“  ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ“‹ ์ฐธ๊ณ 

 

V8์˜ ํžˆ๋“  ํด๋ž˜์Šค ์ด์•ผ๊ธฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋˜์–ด ๊ทธ ๊ธฐ๋ถ„์„ ํ—ค์•„๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด ์•ˆ๋…•ํ•˜์„ธ์š”? LINE Fukuoka์˜ ํ”„๋ก ํŠธ์—”๋“œ ์—”์ง€๋‹ˆ์–ด Yonehara์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์•„์ง ์›น ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ถ„์„ ํ—ค์•„๋ ค

engineering.linecorp.com

 

 

[JavaScript] ํžˆ๋“ ํด๋ž˜์Šค, ์ธ๋ผ์ธ ์บ์‹ฑ ๊ทธ๋ฆฌ๊ณ  ์ตœ์ ํ™”

์ธ๋ผ์ธ ์บ์‹ฑ (inline caching) ์ธ๋ผ์ธ ์บ์‹ฑ์ด๋ž€ ์ปดํŒŒ์ผํ•˜๋Š” ๊ณผ์ •์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์ผ๋‹จ ์ด๋ฆ„๋งŒ ๋ณด๊ณ  ์ด๊ฒŒ ๋ฌด์—‡์ธ์ง€ ์ถ”์ธกํ•ด๋ณด์ž ๋จผ์ € C๋‚˜ C++ ์–ธ์–ด์—์„œ ์ธ๋ผ์ธ ํ•จ์ˆ˜๋ผ๋Š” ๋ฌธ๋ฒ•์ด ์žˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜

velog.io

'JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Javascript] ํ”„๋กœํ† ํƒ€์ž… (Prototype)  (1) 2023.04.15
[JavaScript] ์‹คํ–‰์ปจํ…์ŠคํŠธ  (0) 2023.02.21