๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์‹œ๋„/๊ตญ๋น„์ง€์›

[D+38] ํ•จ์ˆ˜ ๊ณ ๊ธ‰, ๊ฐ์ฒด

by ๐Ÿ‡๋ฐ•๋ด‰๋ด‰๐Ÿ‡ 2022. 11. 15.

 

 

๊ตญ๋น„์ง€์› 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๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๊ฐ์ฒดํ™”์‹œ์ผœ์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒํ•ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ํŽธ์˜์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€