๊ตญ๋น์ง์ D+38
- ํจ์ ๊ณ ๊ธ, ๊ฐ์ฒด -
ํจ์๊ณ ๊ธ
• Arrow ํจ์
- ํ์ดํํจ์๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ ํต์ ์ธ ํจ์ ํํ๋ฐฉ์์ ๊ฐ๋จํ๊ฒ ๋ง๋ ์๊ฐ์ฝ๋์ด๋ค.
- ํ์ดํํจ์๋ ํํ๋ฐฉ์์ด์ง ๋ฉ์๋๊ฐ ์๋๋ค.
// ๊ธฐ๋ณธ ํจ์ ํํ๋ฐฉ์
const numbers = [ 10, 20, 30, 40, 50];
const newNumbers = numbers.map(function(value, index, array) {
return value + 5;
});
console.log(newNumbers);
// ํ์ดํ ํจ์ ํํ๋ฐฉ์
const numbers = [10, 20, 30, 40, 50];
const newNumbers = numbers.map((value, index, array) => value + 5);
console.log(newNumbers);
• Method Chaining
- ์์๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ๋ฉ์๋๋ฅผ ์ฐ์์ ์ผ๋ก ํธ์ถํ๋ ์ฝ๋ฉ๊ธฐ๋ฒ์ด๋ค.
- ๋ฉ์๋์ ๋ํด ํ๋ฒ ์คํ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ปดํ์ผ๋ฌ๊ฐ ์์๋ณ์๋ฅผ ์ฌ์ฉํด ๋ด์๋ ๋ค์์ ๊ทธ๋ค์ '.' ๋ค์ ๋ถ์ด์๋ ๋ฉ์๋๋ฅผ ์คํํ๋ ๋ฐฉ์์ด๋ค.
- ๋จ, ๊ณผ๋ํ ๋ฉ์๋ ์ฒด์ด๋์ ์ฝ๋์ ๋ณต์ก๋๋ฅผ ์คํ๋ ค ์ฌ๋ฆฌ๊ธฐ ๋๋ฌธ์ 3๋ฒ์ ๋๊น์ง๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
// ๋ฐฐ์ด์ ๊ฐ ์์์ 5๋ฅผ ๋ํ ๋ค 30๋ณด๋ค ํฐ ๊ฐ๋ง ๋ฝ์๋ด์์ค.
const numbers = [27, 40, 25, 30, 77];
const newNumbers = numbers.map((value) => value + 5)
.filter((value) => value > 30);
console.log(newNumbers);
// [32, 45, 35, 82]
• ์ฆ์ ํธ์ถ
- ์์๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด์ ํจ์์ ์ ์ธ๊ณผ ๋์์ ํธ์ถํ๋ ๊ธฐ๋ฒ์ด๋ค.
- ๋ณต์๊ฐ์ <script>์ ๋ํ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๋ค.
(function dummy(x)
{
console.log('Dummy!');
})(10);
๊ฐ์ฒด
• ๊ฐ๋
- ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ ์ ์ ์ธํ ๋๋จธ์ง ๋ฐ์ดํฐ ํ์ ์ ๋ฒ ์ด์ค ์ธ์คํด์ค์ด๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฑฐ์ ๋ชจ๋ ๊ฐ์ฒด๋ ๊ธฐ๋ณธ์ผ๋ก Object์ ํ์ ์ธ์คํด์ค ์ด๋ค.
- "{ }"๋ก ๋ฐ์ดํฐ๋ค์ ๊ฐ์ธ๋ฉฐ key-valueํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- key-valueํ์์์ key๋ ๊ฐ์ฒด ์์์ ์ ๋ํฌํ ๊ฐ์ด์ด์ผํ๋ค.
• ๊ฐ์ฒดํ์ ์ ์ธ ๋ฐ ํธ์ถ
- "{ }"์์ key-value ํ์์ผ๋ก ๋ฃ์ด์ ์ ์ธํด์ค๋ค.
- ๊ฐ์ฒด์์ value๊ฐ์๋ primitive type ๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒดํ๋ ๋ค์ด๊ฐ ์ ์๋ค.
- ๊ฐ์ฒด์์ ๊ฐ์ ํธ์ถํ๊ณ ์ถ์๋์๋ "๊ฐ์ฒด๋ช ['key์ด๋ฆ']" ๋๋ "๊ฐ์ฒด๋ช .key์ด๋ฆ"์ผ๋ก ๊ฐ์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
const product =
{
name : 'mouse',
type : 'wireless',
color : 'black',
buttons : 6,
scroll : true
};
console.log(product.name);
console.log(product['type']);
• ๊ฐ์ฒด ์์ฑ์ ๋ณ๊ฒฝ
- ์์ฑ๋ณ๊ฒฝ : ๋ณ๊ฒฝํ๊ณ ์ถ์ ์์ฑ์ ๋ถ๋ฌ์ ๊ฐ์ ์๋ก ์ ๋ ฅํ๋ฉด ๋๋ค.
- ์์ฑ ์ถ๊ฐ : ์์ฑ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ๋ฐฉ์์ด๋ฉฐ ์์ฑ์ด ์๋ค๋ฉด ์๋์ผ๋ก ์ถ๊ฐ๋๋ค.
- ์์ฑ์ ์ญ์ : delete๋ฅผ ์ฌ์ฉํด ์ญ์ ํ ์ ์๋ค.
// ์์ฑ ๋ณ๊ฒฝ
product.buttons = 8;
// ์์ฑ ์ถ๊ฐ
product.ligth = true;
// ์์ฑ ์ญ์
delete product.light;
• ๊ฐ์ฒดํ ๋ฉ์๋
- ๊ฐ์ฒด์ ํฌํจ๋๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
- this : ํด๋น๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด์ ์ฐธ์กฐ๊ฐ์ ๋ํ๋ธ๋ค.
- ํ์ดํ ํจ์์ ๊ฒฝ์ฐ this๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๊ธ์ ๋ฉ์๋์์๋ ์ฌ์ฉํ์ง ์๋๋ค. → ๊ธฐ์กด ํจ์์ ๊ฒฝ์ฐ this๋ฅผ ์ฝ์์ ์ฐ์ผ๋ฉด ํด๋น ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด๊ฐ ๋์ค์ง๋ง, ํ์ดํํจ์์ ๊ฒฝ์ฐ this๋ฅผ ์ฝ์์ ์ฐ์ด์ ํ์ธํด๋ณด๋ฉด ๋ฉ์๋๋ฅผ ์์ ํ๊ณ ์๋ ๊ฐ์ฒด๊ฐ ์๋๋ผ ๊ฐ์ฅ ์์๊ฐ์ฒด์ธ window๋ฅผ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ this๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
const product =
{
name : 'mouse',
type : 'wireless',
color : 'black',
buttons : 6,
scroll : true,
getName : function() {
return this.name;
// getName์ ์์ ํ๊ณ ์๋ ๊ฐ์ฒด product์ name --> 'mouse'
}
};
console.log(product.getName()); // mouse
• ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ ( Object literal )
- ES6์์ Object literal์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์๋ก์ด ๋ฐฉ๋ฒ์ด ๋ฑ์ฅํ์๋ค.
1. ์์ฑ(property) ์ถ์ฝ
- ์์ฑ๊ฐ์ผ๋ก ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ณ์์ด๋ฆ๊ณผ ์์ฑ์ด๋ฆ์ด ๊ฐ๋ค๋ฉด ํค๋ฅผ ์๋ตํ ์ ์๋ค.
2. ๋ฉ์๋ ์ถ์ฝ
- ๋ฉ์๋์ ์ด๋ฆ๊ณผ ํค๋ฅผ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ์ ๋ฉ์๋๋ฅผ ์ถ์ฝํ์ฌ ํํํ ์ ์๋ค.
3. ๊ณ์ฐ๋ ์์ฑ์ด๋ฆ
- ํํ์์ ์ฌ์ฉํด key๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
4. ๊ฐ์ฒด์ ์ํ
- Object๋ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์์์ฑ์ด ์๋ค๋ ํน์ง์ ๊ฐ์ง๊ณ ์์ด ๊ธฐ์กด for๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
- for~in์ ์ฌ์ฉํด์ ๋ง์น ๋ฐฐ์ด์ฒ๋ผ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
• Primitive type์ Object type์ผ๋ก ๋ณํํ๊ธฐ
๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ Numberํ๊ณผ ๊ฐ์ ํ๋ฆฌ๋ฏธํฐ๋ธ ํ์ ๊ฐ์ ๊ฒฝ์ฐ ์คํ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์์ ๋ฐ์ดํฐ๊ฐ์ ๋ฃ์ด์ ๊ฐ์ ๋ณด๊ดํ๋ค.
๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ๊ฐ์ ์คํ์ด ์๋ ํ์๋ค๊ฐ ์ก๊ณ ์ถ์ ๋์๋ new๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ ๊ฐ์ ํ์๋ค๊ฐ ์ ์ฅํ ์ ์๋ค.
๋ง์ฝ ๊ฐ์ฒด ์์ ์๋ ๊ฐ์ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๋์๋ valueOf๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์์ ์๋ ๊ฐ์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
• Primitive type์ ์ผ์์ Object type ๋ณํ
์ฐ๋ฆฌ๊ฐ str.length์์ .length๋ str์ ๋ฉ์๋๋ฅผ ์๋ฏธํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ธฐ๋ณธ ์๋ฃํ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฉ์๋๋ ์์ฑ์ ๊ฐ์ง ์ ์๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ผ์ชฝ์ ์ฌ์ง์ฒ๋ผ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๋ฉด ์ปดํ์ผ ํ๋ฉด์ ์ปดํ์ผ๋ฌ๊ฐ str์์ ๋ฌธ์์ด์ ์ ๋ ฅํ ๋ new๋ฅผ ๋ถ์ฌ์ str๋ฅผ ์ผ์์ ์ผ๋ก ๊ฐ์ฒดํ์์ผ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒํด ๊ฐ๋ฐ์์๊ฒ ํธ์์ฑ์ ์ ๊ณตํ๋ค.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+40] ๋ฌธ์-๊ฐ์ฒด ๋ชจ๋ธ DOM (0) | 2022.11.16 |
---|---|
[D+39] ์ค์ฝํ, ํด๋ก์ , JSON (0) | 2022.11.16 |
[D+37] ๋ฐฐ์ด์ for๋ฌธ, ํจ์์ ๊ธฐ๋ณธ, ์ฝ๋ฐฑํจ์ (0) | 2022.11.13 |
[D+36] javascript ๋ฑ์ฅ๋ฐฐ๊ฒฝ ๋ฐ ๊ธฐ์ด (0) | 2022.11.11 |
[D+35] CSS ๊ฐ๋ , ์ ํ์, font-size, Box model (0) | 2022.11.11 |
๋๊ธ