728x90
๐ฅท ๋์์ฝ๋
๋์๋ผ ๋ถ๋ฆฌ๋ ์ ์ค ์ ๊ฐ๋ฐ์๋ค์ ์ ์ง๋ณด์ ๋ด๋น ๊ฐ๋ฐ์๋ฅผ ํน๋ ํ๊ฒ ํ๋ จํ๊ธฐ์ํด ๋ค์ํ ํธ๋ฒ์ ์ฌ์ฉํ๋ค.
- ์ฝ๋ ์งง๊ฒ ์ฐ๊ธฐ
- ๊ธ์ ํ๋๋ง ์ฌ์ฉํ๊ธฐ
- ์ฝ์ด ์ฌ์ฉํ๊ธฐ
- ํฌ๊ด์ ์ธ ๋ช ์ฌ ์ฌ์ฉํ๊ธฐ
- ์ฒ ์๊ฐ ์ ์ฌํ ๋จ์ด ์ฌ์ฉํ๊ธฐ
- ๋์์ด ์ฌ์ฉํ๊ธฐ
- ์ด๋ฆ ์ฌ์ฌ์ฉํ๊ธฐ
- ์ฌ๋ฏธ๋ก ์ธ๋์ค์ฝ์ด ์ฌ์ฉํ๊ธฐ
- ๊ณผ์ฅ ํ์ฉ์ฌ ์ฌ์ฉํ๊ธฐ
- ์ธ๋ถ ๋ณ์ ๋ฎ์ด์ฐ๊ธฐ
- ๋ถ์์ฉ์ด ์๋ ์ฝ๋ ์์ฑํ๊ธฐ
- ํจ์์ ๋ค์ํ ๊ธฐ๋ฅ ๋ฃ๊ธฐ
// ์ถ์ฒ: ์์ฃผ ์ ๋ช
ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
i = i ? i < 0 ? Math.max(0, len + i) : i : 0;
function ninjaFunction(elem) {
// ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์จ elem์ ์ด์ฉํ ์ฝ๋
elem = clone(elem);
// elem์ ๋ณต์ (clone)๋ณธ์ ์ด์ฉํ ์ฝ๋
}
๐ ํด๋ฆฐ์ฝ๋์ ๋์์ฝ๋ ๋น๊ต
๊ฐ๋ ์ฑ | ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํด ๊ฐ๋ฅ | ์์ฑ์ ๋ณธ์ธ๋ง ์ดํด ๊ฐ๋ฅ |
์ ์ง๋ณด์์ฑ | ์์ ๋ฐ ํ์ฅ์ด ์ฉ์ด | ์์ ์ ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ ๋์ |
์ฝ๋ ์คํ์ผ | ๋ช ํํ ๋ค์ด๋ฐ, ์ค๋ณต ์ต์ํ, ๊ฐ๊ฒฐํ ๊ตฌ์กฐ | ์งง๊ณ ์ถ์ฝ๋ ์ฝ๋, ๊ฐ๋ ์ฑ ๋ฎ์ |
์๋ฌ ์ฒ๋ฆฌ | ์ ์ ํ ์๋ฌ ๋ฉ์์ง ์ ๊ณต | ๋ถ๋ช ํํ ์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ์ |
๐ป ๋์์ฝ๋ ์์
class L {
constructor() {
this.b = [];
}
aB(b) {
if (!b || !b.t || !b.a) throw 'ํ์ ์ ๋ณด ๋๋ฝ';
this.b.push(b);
}
gB(a) {
if (!a) throw '์ ์ ํ์';
return this.b.filter(x => x.a === a);
}
gT() {
return this.b.map(x => x.t);
}
}
const l = new L();
l.aB({ t: 'Clean Code', a: 'Robert C. Martin' });
l.aB({ t: 'JavaScript: The Good Parts', a: 'Douglas Crockford' });
console.log(l.gB('Robert C. Martin'));
console.log(l.gT());
// ์ถ๋ ฅ ๊ฒฐ๊ณผ
// [{ t: 'Clean Code', a: 'Robert C. Martin' }]
// ['Clean Code', 'JavaScript: The Good Parts']
- ์ถ์ฝ๋ ๋ณ์์ ํจ์ ์ด๋ฆ
- L ๋์ Library๊ฐ ์๋ ์ถ์ฝ๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉ
- ํจ์ ์ด๋ฆ๋ค๋ aB, gB, gT์ฒ๋ผ ์ถ์ฝ๋์ด ์์ด ์ด๋ค ๊ธฐ๋ฅ์ ํ๋์ง ๋ช ํํ์ง ์๋ค.
- ๋ณ์ b, t, a ์ญ์ ๋ถ๋ช ํํ๋ฉฐ, ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ ์ด๋ค์ด ๊ฐ๊ฐ books, title, author๋ฅผ ์๋ฏธํ๋์ง ์ฆ์ ํ์ ํ๊ธฐ ์ด๋ ต๋ค.
- ๊ฐ๋จํ ์๋ฌ ๋ฉ์์ง
- ๋ช ํํ ์๋ฌ ๋ฉ์์ง ๋์ "ํ์ ์ ๋ณด ๋๋ฝ", "์ ์ ํ์"์ฒ๋ผ ๋งค์ฐ ๊ฐ๋ตํ ๋ฉ์์ง๋ง ๋์ง๊ณ ์์ด, ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ ํํ ์์ธ์ ํ์ ํ๊ธฐ ์ด๋ ต๋ค.
- ๊ฐ๋
์ฑ ์ ํ
- ๋ณ์์ ํจ์ ์ด๋ฆ์ด ๋ชจ๋ ์ถ์ฝ๋์ด ์์ด ์ฝ๋์ ์๋๋ฅผ ํ์ ํ๊ธฐ ํ๋ค๋ค. ์ฝ๋๊ฐ ์งง๊ฒ ์์ฑ๋์์ง๋ง, ์ ์ง๋ณด์์ ํ์ฅ์ฑ์ด ํฌ๊ฒ ๋จ์ด์ง๋ค.
-> ํด๋ฆฐ์ฝ๋๋ ํ์ ๊ณผ ์ฅ๊ธฐ์ ์ธ ์ฝ๋ ์ ์ง์ ํ์์ ์ธ ๋ฐฉ์์ด๋ค. ๋ช ํํ ๋ค์ด๋ฐ๊ณผ ๊ฐ๊ฒฐํ ๊ตฌ์กฐ๋ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ , ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋ค.
๐คฃ ๋์ ์ฝ๋ ์์ฝ
1. ํธ๋ฒ ์ค ๋ช ๊ฐ๋ง ์ฌ์ฉํด๋, ๋๋ผ์ด ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋๋ค.
2. ํธ๋ฒ์ ๋ง์ด ์ฌ์ฉํ๋ฉด ์ ์ง ๋ณด์ํ๊ธฐ๊ฐ ํ๋ค์ด์ ธ์ ๋น์ ์ ํด๊ณ ํ ์ ์๋ค.
3. ํธ๋ฒ์ ๋ชจ๋ ์ฌ์ฉํ๋ฉด ํ๋ฐฐ ๊ฐ๋ฐ์๋ค์๊ฒ ์์ฒญ๋ ์๊ฐ์ ์ฌ์ด์ค ์ ์๋ค.
์ฐธ๊ณ : ๋ชจ๋ JavaScript ํํ ๋ฆฌ์ผ
https://ko.javascript.info/ninja-code
728x90
'๐๏ธ ์คํฐ๋ ํ๋ > ๐ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ง๋ฌด๋ฆฌ] ํ๋ก ํธ์๋ ๋จ์ ํ ์คํธ (3) | 2024.10.30 |
---|---|
[๋ง๋ฌด๋ฆฌ] ํด๋ฆฐ์ฝ๋ (3) | 2024.10.16 |
[๋ง๋ฌด๋ฆฌ] ์น ์ํ๊ด๋ฆฌ์ ์ธ์ฆ (0) | 2024.10.10 |
[๋ง๋ฌด๋ฆฌ] ์น ํต์ ๊ธฐ์ด (1) | 2024.10.09 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋ (0) | 2024.09.18 |