๐ ๋ฒ์ : Ep35. ๋น๋ฐ๋ฒํธ ์ ์ฅ๋ฐฉ๋ฒ - Ep38. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
1. ์ฐ๋ฆฌ๊ฐ ๋งค์ผ ์ฐ๋ ๋น๋ฐ๋ฒํธ ์ด๋ป๊ฒ DB์ ์ ์ฅ๋์ด ์์๊น?
- ์์ด๋ : ๋น๋ฐ๋ฒํธ ๊ทธ๋๋ก ์ ์ฅ โ
- (๋งค์ฐ ๋์ ๋ฐฉ๋ฒ, ์ ์ถ ์ํ ๋งค์ฐ ํผ)
- DB์ํธํํ๊ณ ํ์ฌ์์ ์ฃผ๋ key๋ก ๋ก๊ทธ์ธํด์ ์ฌ์ฉ ๐บ
- (์ฒซ ๋ฒ์งธ๋ณด๋ค๋ ์ข์ ๋ฐฉ๋ฒ, but key ์ ์ถ ์ ์ํํ ๊ฒ์ ๋ง์ฐฌ๊ฐ์ง)
- ํด์ ํจ์ ์ฌ์ฉ โญ
- ๋ด๊ฐ ์ ๋ ฅํ ๊ฐ์ ๋ฌด์์๋ก ๊ฐ์ผ๋ก ๋ณํํด ์ค
- ํด์ํจ์๋ ์ด๋ป๊ฒ ๋์ํ ๊น?
- ๋์ผํ ์ ๋ ฅ๊ฐ = ๋์ผํ ์ถ๋ ฅ๊ฐ
- ์ ๋ ฅ๊ฐ ์ด์ง ๋ฐ๋ ๐ ์ถ๋ ฅ๊ฐ ์ ํ ๋ค๋ฅด๊ฒ ๋ฐ๋ (๋ฌด์์์ฑ)
- ํด์ํจ์ ๋ณํ๋ ๊ฐ ์ ๋ ฅ ๐ ์๋ ๊ฐ ์ ๋์ด
- But! ๋ ์ธ๋ณด์ฐ ํ ์ด๋ธ(ํด์ํจ์๊ฐ ๋ณ๊ฒฝํ ๊ฐ์ ์๋๊ฐ๊ณผ ์ฐ๊ฒฐํ ํ)์ด ์๋ค๋ฉด ์๋๊ฐ์ ์ ์ ์์
- ์ํธ(Salt) ๐
- ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ
- ๋ด๊ฐ ์ ๋ ฅํ ๊ฐ + salt(๋ฌด์์ ํ ์คํธ) ํด์ํจ์ ํต๊ณผ ๐ ๋ฌด์์ ๊ฐ ๋์จ๋ค.
- ๋ ์ธ๋ณด์ฐํ ์ด๋ธ๋ก๋ ์ฐพ์ ์ ์๋ค.
2. ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์
- ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ์ฌ๊ณ ์ ํ, ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋์ ๊ด์ , ๋ฐฉ์๋ฑ์ ๋งํ๋ค.
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ํ๋ ๋๋ ํ๋์ด์ ์ง์ํ๋ค.
3. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ - Class
- ์ฌ๋ฌ ์บ๋ฆญํฐ๊ฐ ๋์ค๋ ๊ฒ์์ ๋ง๋ ๋ค๊ณ ์๊ฐํด ๋ณด์.
- ๊ธฐ๋ณธ์ ์ผ๋ก ์บ๋ฆญํฐ์ ์ด๋ฆ, ์ฒด๋ ฅ, ์คํฌ๋ฑ์ด ํ์ํ๋ค. ๊ทธ๋ฐ๋ฐ ์บ๋ฆญํฐ๋ ํ ๋ช ์ด ์๋๋ค ๋ง์ฝ ํ ๋ช ํ ๋ช ๋ค ์์ฑํด์ผ ํ๋ค๋ฉด?
const player1 = {
name: 'John',
health: 86,
skill : "magician"
}
const player2 = {
name: 'May',
health: 75,
skill : "archer"
}
const player3 = {
name: 'Jack',
health: 99,
skill : "hunter"
}
// ๐
โ๏ธ ๋๋ฌด ๋นํจ์จ์ ์ด๋ค.
- ์บ๋ฆญํฐ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ์์ฑ์ ๊ฐ์ก๋ค. (name, health, skill)
- ์ด ๊ตฌ์กฐ ์ ์ง ์ ์๊ธธ ์ ์๋ ๋ฌธ์ ? ๐ ์คํ ๋ฐ์ ๊ฐ๋ฅ, ์ถ๊ฐ ์์ฑ ๋ฃ๊ธฐ ์ด๋ ค์(์์ฒญ๋ ๋ฐ๋ณต์์ ํ์ํจ)
- ๋ฐ๋ผ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Class ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค. (์ผ์ข ์ ๋ชจ์ ์ฐ์ด๋ด๋ ๊ณต์ฅ)
class Player {
constructor(name, health, skill) {
this.name = name;
this.health = health;
this.skill = skill;
this.xp = 0; // xp๋ ๊ธฐ๋ณธ๊ฐ 0
}
}
- new Player (name, health, skill) ์ด์ฉํด์ ์บ๋ฆญํฐ๋ฅผ ๊ฐํธํ๊ฒ ์ฌ๋ฌ ๊ฐ ๋ง๋ค ์ ์๋ค.
4. ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ - ์์
- ์ฌ์ฐ์ ๋ฌผ๋ ค์ฃผ๋ ๊ฒ์ฒ๋ผ ํน์ง์ ๋ฌผ๋ ค์ฃผ๊ณ ๋ฌผ๋ ค๋ฐ๋๋ค.
class Human {
constructor(name) {
this.name = name;
this.arms = 2;
this.legs = 2;
}
}
// ์ฐ๋ น๋๊ฐ ๋ค์ํ class๊ฐ Human์ ํน์ง์ ๊ณตํต์ ์ผ๋ก ๊ฐ์ง๊ณ ์๋ค๋ฉด?
class Teenager extends Human {
constructor(name) {
this.emotional = true;
}
curse() {
return '๐คฌ';
}
}
class Baby extends Human {
constructor(name) {
this.lovely = true;
}
cry() {
return '๐ซ';
}
}
- ์ด๋ ๊ฒ ์์์ ํตํด ์ค๋ณต์ ํด๊ฒฐํ๋ฉด ๊ณตํต ํด๋์ค์ ๊ธฐ๋ณธ ์์ฑ์ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ฉด์ ์์ ๋ง์ ์์ฑ๋ ์ถ๊ฐํ ์ ์๋ค!
5. ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ๋ฐฐ์์ผ ํ๋ค๊ณ ์๊ฐํจ
- ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ๊ตฌ์กฐ๋ผ์ ๊ฐ๋ฐ์์๊ฒ ๋งค์ฐ ์ ์ฉํ๋ค!
- ์ด๋ฅผ ์ดํดํ๋ ค๋ฉด ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์์ ํฐ ๊ฐ๋์ธ ์ ์ธํ / ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ์ ๋จผ์ ์์์ผ ํ๋ค.
์ ์ธํ ํ๋ก๊ทธ๋๋ฐ | ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ | |
์์ (์๋์์น ๋ง๋ค๊ธฐ) | BLT ์๋์์น ๋ง๋ค์ด์ค | 1. ๋นต์ ๊บผ๋ด์ ๋ ์ฅ ๊ตฌ์๋ผ 2. ์์์ถ ์ธ์ฅ ์ป๊ณ , ํ ๋งํ ์ฐ์ด์ ์ธ ์กฐ๊ฐ ์ค๋นํ๊ณ , ๋ฒ ์ด์ปจ ๊ตฌ์์ ์ธ๊ฐ ์ค๋นํด๋ผ 3. 1๋ฒ์ ๋นต ํ ๊ฐ ์์ 2๋ฒ ์ฌ๋ฃ๋ฅผ ์์์ ๋๋จธ์ง ๋นต ํ ๊ฐ๋ก ๋ฎ์ด๋ผ |
ํน์ง | ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ์ ์ธ | ์ํ๋ ๊ฒฐ๊ณผ๊ฐ์ ์ด๋ป๊ฒ ๋๋ฌํ๋์ง ์ ์ธ |
๊ฒฐ๊ณผ์ค์ฌ = ์ค์๊ฐ ์ ์ | ์ธ์ธํ๊ฒ ์ง์ = ์ค์ํ๊ธฐ ์ฌ์ | |
๋๋ฃ๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ฌ์ | ๋๋ฃ๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์ |
- ์ฝ๋ ์์ (๊ณต๋ฐฑ ๐๋ก ๋ฐ๊พธ๊ธฐ)
// ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ
function spaceToHeart(text) {
return text.replace(' ', '๐');
}
// ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ
function spaceToHeart(text) {
let result = '';
for (let i = 0; i < text.length; i++) {
if (text[i] === ' ') {
result += '๐';
} else {
result += text[i];
}
}
return result;
}
- ํจ์์ ์ธ์๋ก ํจ์๋ฅผ ๋ณด๋ผ ์ ์์
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ๐ ์ ์ธํ ํ๋ก๊ทธ๋๋ฐ ์ปจ์ ์ ์ ์งํจ
function checkForOdd(item) {
return item % 2 === 0;
}
function removeOdd(items) {
return items.filter(checkForOdd);
}
โ๐ป ์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์.
๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฅ๋๋ ๊ฒ์ ๋ํด์ ๋น์ฐํ๊ฒ๋ง ์๊ฐํ๋๋ฐ ์๊ฐ๋ณด๋ค ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋น๋ฐ๋ฒํธ๊ฐ ์ ์ฅ๋๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค. ํนํ ์ด์ ๋ฐฐ์ ๋ ํด์ํ ์ด๋ธ์ ํด์ ํจ์๊ฐ ์ฌ๊ธฐ์ ์ฐ์ธ๋ค๋ ์ฌ์ค์ด ์ ๊ธฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฒด์งํฅ๊ณผ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์๋ ์ข ๋ ์ ํํ ๊ฐ๋ ์ ๋ฆฌ๋ฅผ ํ ์ ์์๋ค. ํนํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์ค ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ ์ด๋ ต๋ค๋ ์ฌ์ค์ ์๋กญ๊ฒ ์๊ฒ ๋์๋ค. ์ ํํ ์ด๋ค ์๋ฆฌ๋ก ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ๊ฒ์ธ์ง ๊ถ๊ธํ๋ค.
๐ ๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
- ๋๋ถ๋ถ์ ์ธํฐ๋ท ์ฌ์ดํธ์์๋ ์ด๋ค ๋น๋ฐ๋ฒํธ ์ ์ฅ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋์ง ๊ถ๊ธํ๋ค.
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ๊ธฐ ์ด๋ ค์ด ์ด์ ?
๋๊ธ