๐Ÿง TIL/๐Ÿค– JS, TS

Super - ๋ถ€๋ชจ ํด๋ž˜์Šค - super ํ‚ค์›Œ๋“œ๋Š” constructor ์•ˆ์—์„œ๋ž‘ ํ•จ์ˆ˜์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. class Person { name; year; constructor(name, year) { this.name = name; this.year = year; } sayHello() { return `Hello I'm ${this.name}`; } } class Singer extends Person { sing() { return `๋…ธ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.`; } constructor(name, year, part) { // ๋ถ€๋ชจ ํด๋ž˜์Šค // Person() ์ด๊ฑฐ๋ž‘ ๋˜‘๊ฐ™์Œ super(name, year); this.part = part; } sayHello() { // undefined์ž…๋‹ˆ๋‹ค. rap ํŒŒํŠธ์ž…..
์ƒ์†, Inheritance - ์ƒ์†์€ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. - ์ˆ˜ํผ ํด๋ž˜์Šค(๋˜๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค)๋“ฑ์˜ ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์†์„ฑ๊ณผ ๋™์ž‘์„ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. - ๊ณตํ†ต๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. class Person { name; year; constructor(name, year) { this.name = name; this.year = year; } } class Singer extends Person { sing() { return `๋…ธ๋ž˜ํ•ฉ๋‹ˆ๋‹ค.`; } } class Actor extends Person { acting() { return `์—ฐ๊ธฐํ•ฉ๋‹ˆ๋‹ค.`; } } const zico = new Singer("zico", 1993); console.log(zico); // ..
Static - ๊ฐ์ฒด์— ๊ท€์†๋˜์ง€ ์•Š๋Š”๋‹ค. - ํด๋ž˜์Šค์— ์ง์ ‘ ๊ท€์†๋ผ์„œ new๋กœ ์“ธ ํ•„์š” ์—†๋‹ค. class Person { name; year; static groupName = '์‘ค'; constructor(name, year) { this.name = name; this.year = year; } // ํ•จ์ˆ˜๋„ ๊ฐ€๋Šฅ static returnGroupName() { return '์‘ค'; } } const soo = new Person('soo', 1997); // ๊ฐ์ฒด์— ๊ท€์†๋˜์ง€ ์•Š๋Š”๋‹ค. console.log(soo);// Person { name: 'soo', year: 1997 } // ๊ทธ๋Ÿผ ์–ด๋””์— ๊ท€์†๋ผ์žˆ๋‚˜? // ํด๋ž˜์Šค ์ž์ฒด์— ๊ท€์†๋˜์–ด์žˆ๋‹ค! console.log(Person.groupName)// ์‘ค..
Getter 1. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•ด์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ• ๋•Œ 2. privateํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ• ๋•Œ Setter 1. ๊ฐ’์„ ์„ค์ •ํ•ด์ค„๋•Œ ๋ฌผ๋ก  Setter ์—†์–ด๋„ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ํ”„๋กœํผํ‹ฐ๋ฅผ private์œผ๋กœ ๋ฐ”๊ฟจ์„๋•Œ๋Š” Setter์—†์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. private์€ ์ง์ ‘ ์•ก์„ธ์Šค๊ฐ€ ๋ถˆ๊ฐ€ 2. Setter๋Š” ์ •์˜ํ•œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์ด ์„ ํ˜ธํ•˜์ง€๋Š” ์•Š์Œ class Person { name; year; constructor(name, year) { this.name = name; this.year = year; } // Getter, Setter get getNameAndYear() { return `${this.name}-${this.year}`; } // ๋ฐ”๊พธ๊ณ  ์‹ถ์€ ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„๊ณผ ๊ฒน์น˜๊ฒŒ ๋งŽ์ด ์„ค..
ํด๋ž˜์Šค? - ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํŠน์ • ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ(ํ•จ์ˆ˜)๋ฅผ ์ •์˜ํ•˜๋Š” ์ผ์ข…์˜ ํ‹€์ด๋‹ค. - ์ •๋ณด๋ฅผ ์ผ๋ฐ˜ํ™”ํ•ด์„œ ์ •๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค! class person { // ์–ด๋–ค ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„์ฃผ ์ข‹์€ ์Šต๊ด€! name; year; // ์ƒ์„ฑ์ž constructor(name, year) { this.name = name; this.year = year; } // ํด๋ž˜์Šค ๋‚ด ๋ฉ”์†Œ๋“œ ์ •์˜ // ์•”๋ฌต์ ์œผ๋กœ ํ•จ์ˆ˜๋ผ๋Š”๊ฑธ ์ธ์ง€ํ•จ sayName() { return `์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋Š” ${this.name}์ž…๋‹ˆ๋‹ค.` } }
const soo1 = { name: 'sooyoung', age: 27 } const soo2 = { name: '์ˆ˜์˜', ...soo1, } const soo3 = { ...soo1, name: '์ˆ˜์˜', } console.log(soo2);// { name: 'sooyoung', age: 27 } console.log(soo3);// { name: '์ˆ˜์˜', age: 27 } - soo2๋Š” name: '์ˆ˜์˜'์„ ๋จผ์ € ์„ ์–ธ ํ–ˆ์œผ๋‚˜ ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ๊ทธ ๋‹ค์Œ์— ํŽผ์ณ์คฌ์œผ๋ฏ€๋กœ '์ˆ˜์˜'์œผ๋กœ name ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค. - ์˜๋„๋Œ€๋กœ ๋ฐ”๊ฟ”์ฃผ๋ ค๋ฉด ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ๋จผ์ € ํŽผ์น˜๊ณ  ๋‚˜์„œ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ˆœ์„œ๋กœ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
Copy of Value - ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ Copy of Reference - ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ - ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  primitive ๊ฐ’์€ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ์ด๋‹ค.(function, object, array ๋นผ๊ณ  ๋‚˜๋จธ์ง€) - ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ์ด๋‹ค const soo1 = { name: 'sooyoung', age: 27 } const soo2 = soo1; const soo3 = { name: 'sooyoung', age: 27 } const soo4 = { ...soo3, } console.log(soo1 === soo2);// true console.log(soo1 === soo3);// false console.log(soo2 === soo3);// false console.log(soo3 ==..
๋ณธ๊ฒฉ์ ์ธ node.js ์ฃผ์ฐจ๊ฐ€ ์‹œ์ž‘๋๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฝค ์ต์ˆ™ํ•ด์ง„ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•„์ง ์จ๋ณด์ง€ ๋ชปํ–ˆ๋˜ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด ํ—ท๊ฐˆ๋ ค ๊ธฐ๋กํ•ด๋ด์•ผ๊ฒ ๋‹ค. ๐Ÿงจ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น - ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ์•ˆ์˜ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜๋กœ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ‘œํ˜„์‹ - ๊ตฌ์กฐํ™”๋œ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ดํ„ฐ๋Ÿฌ๋ธ” ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ตฌ์กฐํŒŒ๊ดด(destructuring) ํ•˜์—ฌ 1๊ฐœ ์ด์ƒ์˜ ๋ณ€์ˆ˜์— ๊ฐœ๋ณ„์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. - ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ์ถ”์ถœ, 1๊ฐœ ์ด์ƒ์˜ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•œ๋‹ค.(๋ฐฐ์—ด์˜ ๊ธธ์ด์— ๋งž์ถฐ์„œ ๋ณ€์ˆ˜ ํ• ๋‹น ํ•˜์ง€ ์•Š์•„๋„ OK) - ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์˜ ๋Œ€์ƒ(ํ• ๋‹น๋ฌธ์˜ ์šฐ๋ณ€)์€ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด์–ด์•ผ ํ•œ๋‹ค. ๐Ÿ™‹‍โ™€๏ธ ์ดํ„ฐ๋Ÿฌ๋ธ”? Symbol.iterator๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœํ†  ํƒ€์ž… ์ฒด์ธ ํ†ตํ•ด ์ƒ์† ๋ฐ›์€..
๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ, ์ฆ‰ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•˜๋ ค๋ฉด ๋จผ์ € ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 1. this? - ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ž๊ธฐ ์ฐธ์กฐ ๋ณ€์ˆ˜(self-referencing variable) - this๋ฅผ ํ†ตํ•ด ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด ๋˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑํ•  ์ธ์Šคํ„ด์Šค์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. - ๋‹จ, this๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’, ์ฆ‰ this ๋ฐ”์ธ๋”ฉ์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ์˜ํ•ด ๋™์ ์œผ๋กœ ๊ฒฐ์ •๋œ๋‹ค. - ํด๋ž˜์Šค ๊ธฐ๋ฐ˜ ์–ธ์–ด์—์„œ this๋Š” ์–ธ์ œ๋‚˜ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”๋ฐ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ this๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ this์— ๋ฐ”์ธ๋”ฉ๋  ..
๋ถ€ํŠธ์ŠคํŠธ๋žฉ์œผ๋กœ ๋ชจ๋‹ฌ์ฐฝ ๋„์–ด๋ณด์ž! 1. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ CDN์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๐Ÿ™‹‍โ™€๏ธ cdn์ด๋ž€? - Content Delivery Network - ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋–จ์–ด์ ธ ์žˆ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ปจํ…์ธ ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๊ธฐ์ˆ ์ด๋‹ค. - ๋งŒ์•ฝ ์šฐ๋ฆฌ๋‚˜๋ผ์— ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋ฏธ๊ตญ์— ์žˆ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€๋‚˜ ํŒŒ์ผ ๋“ฑ์„ ๋‹ค์šด๋ฐ›์œผ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ, " ๋”ฐ๋ผ์„œ ์„œ๋ฒ„๋ฅผ ๋ถ„์‚ฐ์‹œ์ผœ ์บ์‹ฑํ•ด๋‘๊ณ  ์‚ฌ์šฉ์ž์˜ ์ปจํ…์ธ  ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ์‚ฌ์šฉ์ž์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ„์น˜์— ์กด์žฌํ•˜๋Š” ์„œ๋ฒ„๋กœ ๋งคํ•‘์‹œ์ผœ ์š”์ฒญ๋œ ์ฝ˜ํ…์ธ ์˜ ์บ์‹ฑ๋œ ๋‚ด์šฉ์„ ๋‚ด์–ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. " - ๋งŒ์•ฝ ์„œ๋ฒ„๊ฐ€ ํŒŒ์ผ์„ ์ฐพ๋Š”๋ฐ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ CDN ํ”Œ๋žซํผ์˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์ปจํ…์ธ ๋ฅผ ์ฐพ์€๋‹ค์Œ ์‘๋‹ต์„ ์ „์†กํ•œ๋‹ค. ์ฐธ๊ณ ์ž๋ฃŒ: https://velog.io/..
sooyoung.c.dev
'๐Ÿง TIL/๐Ÿค– JS, TS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก