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

javascript/๐Ÿ“– study39

[3์ฃผ์ฐจ ์Šคํ„ฐ๋””]19์žฅ-ํ”„๋กœํ† ํƒ€์ž… ํ”„๋กœํ† ํƒ€์ž… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ช…๋ นํ˜•, ํ•จ์ˆ˜ํ˜•, ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ์„ ์ง€์›ํ•˜๋Š” ๋ฉ€ํ‹ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด js ์—์„œ ์›์‹œ ํƒ€์ž… ๊ฐ’์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ฐ’๋“ค์€ ๋ชจ๋‘ ๊ฐ์ฒด ์ƒ์†๊ณผ ํ”„๋กœํ† ํƒ€์ž… ์ƒ์†(inheritance)์„ ํ†ตํ•ด ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด๊ฐ€ ์ƒ์†๋ฐ›์•„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ. JavaScript๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์†์„ ๊ตฌํ˜„ํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต์„ ์ œ๊ฑฐ. ํ”„๋กœํ† ํƒ€์ž… ์‚ฌ์šฉx function Circle(radius){ this.radius = radius; this.getArea = function () { return Math.PI * this.radius ** 2; }; } const circle1 = new Circle(1); const circle2 = new Circle(2.. 2022. 2. 14.
[3์ฃผ์ฐจ ์Šคํ„ฐ๋””]18์žฅ-ํ•จ์ˆ˜์™€ ์ผ๊ธ‰๊ฐ์ฒด ํ•จ์ˆ˜์™€ ์ผ๊ธ‰ ๊ฐ์ฒด ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ผ๊ธ‰ ๊ฐ์ฒด ๋ผ๊ณ  ํ•œ๋‹ค. 1.๋ฌด๋ช…์˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ (= ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ ๊ฐ€๋Šฅ) 2.๋ณ€์ˆ˜๋‚˜ ์ž๋ฃŒ๊ตฌ์กฐ์— ์ €์žฅ ๊ฐ€๋Šฅ 3.ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ ๊ฐ€๋Šฅ 4 ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•จ์ˆ˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด ํ•จ์ˆ˜๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ํ•จ์ˆ˜๊ฐ์ฒด๋Š” ์ผ๋ฐ˜ ๊ฐ์ฒด์— ์—†๋Š” ๊ณ ์œ ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. arguments, caller, length, name, __proto__ arguments ํ”„๋กœํผํ‹ฐ ๋ชจ๋“  ์ธ์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ arguments ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ๋ณด๊ด€๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ธ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ผ์น˜ํ•˜๋Š” ์ง€ ํ™•์ธ ํ•˜์ง€ ์•Š์Œ arguments ๊ฐ์ฒด๋Š” length ํ”„๋กœํผํ‹ฐ๊ฐ€ ์žˆ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ์ด๋ฏ€๋กœ ์ˆœํšŒ ๊ฐ€๋Šฅ(iterable)ํ•˜๋‹ค ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜๋ฅผ ๊ตฌ.. 2022. 2. 14.
[3์ฃผ์ฐจ ์Šคํ„ฐ๋””] 17์žฅ-์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์˜ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜ new์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋นˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•จ Object ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ์ด์™ธ์—๋„ String, Number, Boolean, Function, Array, Date, RegExp, Promise ๋“ฑ ๋นŒํŠธ์ธ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ œ๊ณต // ๋นˆ ๊ฐ์ฒด์˜ ์ƒ์„ฑ const person = new Object(); // ํ”„๋กœํผํ‹ฐ ์ถ”๊ฐ€ person.name = 'Lee'; person.sayHello = function () { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee", sayHello: ƒ} pe.. 2022. 2. 14.
[3์ฃผ์ฐจ ์Šคํ„ฐ๋””] 16์žฅ ํ”„๋กœํผํ‹ฐ, ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ๋‚ด๋ถ€์Šฌ๋กฏ๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์˜ ๊ตฌํ˜„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ค๋ช…ํ•˜๊ธฐ์œ„ํ•ด ECMAScript ์‚ฌ์–‘์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์˜์‚ฌ ํ”„๋กœํผํ‹ฐpseudo property์™€ ์˜์‚ฌ ๋ฉ”์„œ๋“œpseudo method ECMAScript ์‚ฌ์–‘์—์„œ ์ด์ค‘๋Œ€๊ด„ํ˜ธ ([[ ... ]])๋กœ ๊ฐ์‹ผ์ด๋ฆ„๋“ค์ด ๋‚ด๋ถ€ ์Šฌ๋กฏ๊ณผ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ๋œ ํ”„๋กœํผํ‹ฐ๋Š” ์•„๋‹˜ ์ผ๋ถ€์— ํ•œํ•˜์—ฌ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋‹จ์ด ์ œ๊ณต๋จ ex) ๋ชจ๋“  ๊ฐ์ฒด๋Š” [[Prototype]]์ด๋ผ๋Š” ๋‚ด๋ถ€ ์Šฌ๋กฏ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. [[Prototype]]์˜ ๊ฒฝ์šฐ, proto๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ์–ดํ‹ฐ๋ฆฌ๋ทฐํŠธ, ํ”„๋กœํผํ‹ฐ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ฐ์ฒด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœํผํ‹ฐ์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ๋ฅผ .. 2022. 2. 14.
[2์ฃผ์ฐจ ์Šคํ„ฐ๋””]15์žฅ-let const ๋ธ”๋ก ์Šค์ฝ”ํ”„ let, const ํ‚ค์›Œ๋“œ์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ var ํ‚ค์›Œ๋“œ ๋ณ€์ˆ˜ ๋ฌธ์ œ์  ์ค‘๋ณต์„ ์–ธ ํ—ˆ์šฉ ํ•จ์ˆ˜๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์˜ค๋กœ์ง€ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ๋งŒ ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ • ๋ฉ๋‹ˆ๋‹ค. var x = 1; if (true) { // x๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋‹ค. ์ด๋ฏธ ์„ ์–ธ๋œ ์ „์—ญ ๋ณ€์ˆ˜ x๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ x ๋ณ€์ˆ˜๋Š” ์ค‘๋ณต ์„ ์–ธ๋œ๋‹ค. // ์ด๋Š” ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€์ˆ˜๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ๋ถ€์ž‘์šฉ์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. var x = 10; } console.log(x); // 10 ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… var ํ‚ค์›Œ๋“œ ์ด์šฉ์‹œ ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด ํ• ๋‹น ์ด์ „์— ์ฐธ์กฐ ๊ฐ€๋Šฅ // ์ด ์‹œ์ ์—๋Š” ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด ์ด๋ฏธ foo ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์—ˆ๋‹ค(1. ์„ ์–ธ ๋‹จ๊ณ„) // ๋ณ€์ˆ˜ foo๋Š” undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. (2. ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„) console.log(foo.. 2022. 2. 6.
[2์ฃผ์ฐจ ์Šคํ„ฐ๋””]14์žฅ-์ „์—ญ๋ณ€์ˆ˜ ๋ฌธ์ œ์  ์ „์—ญ ๋ณ€์ˆ˜์˜ ๋ฌธ์ œ์  ๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ๊ฐ™๋‹ค ์ง€์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ํ•จ์ˆ˜์˜ ์ƒ๋ช… ์ฃผ๊ธฐ์™€ ์ผ์น˜ํ•œ๋‹ค. ๋‹จ, ๋ˆ„๊ตฐ๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฉด ์Šค์ฝ”ํ”„๋Š” ์†Œ๋ฉธํ•˜์ง€ ์•Š๊ณ  ์ƒ์กด (ํด๋กœ์ € ๊ฐœ๋…) ํ˜ธ์ด์ŠคํŒ…์€ ์Šค์ฝ”ํ”„ ๋‹จ์œ„๋กœ ๋™์ž‘ํ•œ๋‹ค. var x = 'global'; function foo() { console.log(x); // undefined var x = 'local'; } foo(); console.log(x); // global ์ „์—ญ ๊ฐ์ฒด ์ „์—ญ ๊ฐ์ฒด๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๋˜๊ธฐ ์ด์ „ ๋‹จ๊ณ„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์˜ํ•ด ์–ด๋–ค ๊ฐ์ฒด ๋ณด๋‹ค๋„ ๋จผ์ € ์ƒ์„ฑ๋˜๋Š” ํŠน์ˆ˜ํ•œ ๊ฐ์ฒด ๋ธŒ๋ผ์šฐ์ € ์—์„œ๋Š” window๊ฐ€ ์ „์—ญ๊ฐ์ฒด, node.js์—์„œ๋Š” global ์ด ์ „์—ญ๊ฐ์ฒด .. 2022. 2. 6.