[JavaScript] ๋นŒํŠธ์ธ ๊ฐ์ฒด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋ถ„๋ฅ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 3๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…๋ฅ˜ ์„ค๋ช… ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด - ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒด - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์—ญ์˜ ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ œ๊ณต - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ๊ณผ ๊ด€๊ณ„์—†์ด ์–ธ์ œ๋‚˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ - ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ์„œ ์ œ๊ณต๋จ - ๋ณ„๋„์˜ ์„ ์–ธ ์—†์ด ์ „์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์–ธ์ œ๋‚˜ ์ฐธ์กฐ ๊ฐ€๋Šฅ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ ์ถ”๊ฐ€๋กœ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด (ESMAScript ์‚ฌ์–‘์— ์ •์˜๋œ ๊ฐ์ฒดX) - ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ : *ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ Web API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต - Node.js ํ™˜๊ฒฝ : ๊ณ ์œ ์˜ API๋ฅผ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋กœ ์ œ๊ณต ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ์ฒด - ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ •์˜ํ•œ ๊ฐ์ฒด (ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด์™€ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ๊ฐ์ฒดX)..

[JavaScript] ํ”„๋กœํ† ํƒ€์ž…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…๋ นํ˜•, ํ•จ์ˆ˜ํ˜•, ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๋Š” ๋ฉ€ํ‹ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. C++๋‚˜ ์ž๋ฐ”์™€ ๊ฐ™์€ ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹ค ํšจ์œจ์ ์ด๋ฉฐ ๋” ๊ฐ•๋ ฅํ•œ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Šฅ๋ ฅ์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ช…๋ น์–ด ๋˜๋Š” ํ•จ์ˆ˜์˜ ๋ชฉ๋ก์œผ๋กœ ๋ณด๋Š” ์ „ํ†ต์ ์ธ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ ˆ์ฐจ์ง€ํ–ฅ์  ๊ด€์ ์—์„œ ๋ฒ—์–ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ์  ๋‹จ์œ„, ์ฆ‰ ๊ฐ์ฒด์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ํ‘œํ˜„ํ•˜๋ ค๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. // ์ด๋ฆ„๊ณผ ์ฃผ์†Œ ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฐ์ฒด const person = { name: 'Lee', address: 'Seoul' }; const circle = { radius: 5, getDiameter() { return 2 * radi..

[JavaScript] ํ•จ์ˆ˜์™€ ์ผ๊ธ‰ ๊ฐ์ฒด

์ผ๊ธ‰ ๊ฐ์ฒด ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€, ๋‹ค์Œ๊ณผ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๋ฌด๋ช…์˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ(๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ)์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์œ„์˜ ์กฐ๊ฑด์„ ๋ณด๋‘ ๋งŒ์กฑํ•˜๋ฏ€๋กœ ์ผ๊ธ‰ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. // 1. ํ•จ์ˆ˜๋Š” ๋ฌด๋ช… ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ // 2. ํ•จ์ˆ˜๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ // ๋Ÿฐํƒ€์ž„(ํ• ๋‹น ๋‹จ๊ณ„)์— ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ด ํ‰๊ฐ€๋˜์–ด ํ•จ์ˆ˜ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๋ณ€์ˆ˜์— ํ• ๋‹น๋จ const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด..

[JavaScript] ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ๋ฐฉ์‹์€ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๊ณ  ๊ฐ„๋‹จํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด์™ธ์—๋„ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ** ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. https://j-su2.tistory.com/56?category=1037205 [JavaScript] ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๊ฐ์ฒด๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐœ์ฒด๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ์›์‹œ ๊ฐ’์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’์€ ๊ฐ์ฒดํƒ€์ž…์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•œ ๋ณตํ•ฉ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์›์‹œ ๊ฐ’๊ณผ ๋‹ค๋ฅด๊ฒŒ j-su2.tistory.com Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜ new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ํ”„๋กœํผํ‹ฐ ..

[JavaScript] ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ

๋‚ด๋ถ€ ์Šฌ๋กฏ(internal slot)๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ(internal method)๋ž€? ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๊ตฌํ˜„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ECMAScript ์‚ฌ์–‘์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜์‚ฌ ํ”„๋กœํผํ‹ฐ์™€ ์˜์‚ฌ ๋ฉ”์„œ๋“œ๋กœ, ์ด์ค‘ ๋Œ€๊ด„ํ˜ธ ([[ ... ]])๋กœ ๊ฐ์‹ผ ์ด๋ฆ„๋“ค์ด ๋‚ด๋ถ€ ์Šฌ๋กฏ๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. const o = {}; o.[[Prototype]] // -> Uncaught SyntaxError 0.__proto__ // -> Object.prototype ์œ„์˜ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๋‚ด๋ถ€ ๋กœ์ง์ธ ๋‚ด๋ถ€ ์Šฌ๋กฏ๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋Š” ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์ง€๋งŒ, [[Prototype]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์˜ ๊ฒฝ์šฐ __proto__๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ผ๋ถ€๋Š” ์ ‘๊ทผ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ..

[JavaScript] let, const ํ‚ค์›Œ๋“œ์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์  ES5๊นŒ์ง€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ var ํ‚ค์›Œ๋“œ์˜ ๋…ํŠนํ•œ ํŠน์ง•๋“ค์€ ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์ด์ง€ ์•Š์œผ๋ฉด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ํ—ˆ์šฉ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•ด์„œ ์˜๋„์น˜ ์•Š๊ฒŒ ๋จผ์ € ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. var x = 1; var y = 1; // var ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ var x = 100; // ์ดˆ๊ธฐํ™”๋ฌธ์ด ์—†๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๋ฌด์‹œ๋จ var y; console.log(x); // 100 console.log(y); // 1 x์™€ y๊ฐ€ ์ค‘๋ณต ์„ ์–ธ๋จ x๋Š” ์ดˆ๊ธฐํ™”๋ฌธ์ด ์žˆ์–ด์„œ var ํ‚ค์›Œ๋“œ๊ฐ€ ์—†๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด 100์œผ๋กœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ..

[JavaScript] ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์ 

๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ๋ณ€์ˆ˜๋Š” ์ƒ๋ฌผ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋˜๋Š” ์ƒ๋ช… ์ฃผ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ž์‹ ์ด ์„ ์–ธ๋œ ์œ„์น˜์—์„œ ์ƒ์„ฑ๋˜๊ณ  ์†Œ๋ฉธ๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ™•๋ณด๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ํ•ด์ œ๋˜์–ด ๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ ํ’€์— ๋ฐ˜ํ™˜๋˜๋Š” ์‹œ์ ๊นŒ์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ข…๋ฅ˜ ์ƒ๋ช… ์ฃผ๊ธฐ ์ง€์—ญ ๋ณ€์ˆ˜ - ํ•จ์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๋Œ€๋ถ€๋ถ„ ์ผ์น˜ - ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ์ƒ์„ฑ๋˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒํ•˜๋ฉด ์†Œ๋ฉธ ์ „์—ญ ๋ณ€์ˆ˜ - *์ „์—ญ ๊ฐ์ฒด์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์ผ์น˜ - ์ฝ”๋“œ๊ฐ€ ๋กœ๋“œ๋˜์ž๋งˆ์ž ๊ณง๋ฐ”๋กœ ํ•ด์„๋˜๊ณ  ์‹คํ–‰๋จ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๊ฐ™์Œ *์ „์—ญ ๊ฐ์ฒด : ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ด์ „ ๋‹จ๊ณ„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์–ด๋–ค ๊ฐ์ฒด๋ณด๋‹ค๋„ ๋จผ์ € ์ƒ์„ฑ๋˜๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ์ฒด. ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์€ window ๊ฐ์ฒด, Node.js ํ™˜๊ฒฝ์—์„œ๋Š” global ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•จ ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ..