๋ชฉ์ฐจ
JS์ Sperad Operator์ ๋ํด์ ์์๋ณด์.
0. Spread Operator
Spread Operator๋ ์ ์ด 3๊ฐ(...)์ธ ์ฐ์ฐ์์ด๋ค.
์ด ์ฐ์ฐ์๋ฅผ ์ด์ฉํด์ ์ฌ๋ฌ ๊ณณ์ ํ์ฉ์ ํ ์ ์๋ค.
๋จผ์ ์์๋ฅผ ํตํด์ ์ฐ์ฐ์์ ๊ธฐ๋ฅ์ ๋ํด์ ์์๋ณด๋ฉด
์์
let a = [1, 2, 3];
let b = "Hello";
console.log(...a);
console.log(...b);
์ด์ฒ๋ผ array ํน์ ๋ฌธ์์ด ๊ฐ์ ๊ฒ๋ค์ ํ๋์ฉ ๋ถํดํด์ค๋ค.
ํ์ฉ 1. Array ๋ณํฉ & ๋ณต์ฌ
์ฒซ๋ฒ์งธ ํ์ฉ์ array๋ฅผ ํฉ์น๊ฑฐ๋ ๋ณต์ฌํ๋ ๊ฒ์ด๋ค.
1) ๋ณํฉ
let a = [1, 2];
let b = [3, 4];
let c = [...a, ...b];
console.log(c);
c = [...b, ...a];
console.log(c);
์ด์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ array๋ฅผ ์์ฝ๊ฒ ํฉ์น ์ ์๋ค.
2) ๋ณต์ฌ(๊น์๋ณต์ฌ)
๋ฐฐ์ด์ ๊น์ ๋ณต์ฌ(๊ฐ๋ง์ ๋ณต์ฌ)ํ๊ณ ์ถ์ ๋์๋ ํ์ฉํ ์ ์๋ค.
let d = ['a', 'b'];
let e = [...d];
console.log(e);
e[0] = 'A';
console.log(d);
console.log(e);
์ด์ฒ๋ผ ๊น์ ๋ณต์ฌ๊ฐ ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๋ณต์ฌ ์์โผ
ํ์ฉ 2. Object ๋ณํฉ & ๋ณต์ฌ
๋๋ฒ์งธ ํ์ฉ์ object๋ฅผ ํฉ์น๊ณ ๋ณต์ฌํ๋ ๊ฒ์ด๋ค.
1) ๋ณํฉ
let ob1 = {name: "Kassid"};
let ob2 = {...ob1, age: 25};
console.log(ob2);
์ด์ฒ๋ผ ๋ณํฉ์ ํ ์ ์๋ค.
์ด๋ ๋ง์ฝ key๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ด๋จ๊น?
let ob1 = {name: "Kassid"};
let ob2 = {...ob1, name: "Blue"};
let ob3 = {name: "Blue", ...ob1};
console.log(ob2);
console.log(ob3);
Key ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ, ๋ง์ง๋ง์ผ๋ก ์ ์๋ ๊ฐ์ผ๋ก ์ ํด์ง๋ค.
2) ๋ณต์ฌ
let ob1 = {name: "Kassid"};
let ob2 = {...ob1};
console.log(ob2);
ํ์ฉ3. ํจ์
์ธ๋ฒ์งธ๋ ํจ์์์์ ํ์ฉ์ด๋ค.
1) ํจ์ ํ๋ผ๋ฏธํฐ์ array ๋ถํดํ์ฌ ์ ๋ฌ
array์ ์์๋ค์ ํจ์ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ๋ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ง ์๊ณ
Spread Operator๋ก ๋ถํดํ์ฌ ์์ฝ๊ฒ ์ ๋ฌํ ์ ์๋ค.
function func(a, b, c){
console.log(a + b + c);
}
let arr = [1, 2, 3];
func(...arr);
2) Rest ํ๋ผ๋ฏธํฐ
rest ํ๋ผ๋ฏธํฐ๋ ๋งค๊ฐ๋ณ์ ์์ Spread Operator๋ฅผ ๋ถ์ธ ํํ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฌ๋ฐ์ ๊ฐ๋ค์ array๋ก ๋ฌถ์ด ๋ฐํํ๋ค.
function func(...parm){
console.log(parm);
}
func(1, 2, 3);
rest ํ๋ผ๋ฏธํฐ์ ์ฃผ์ํ ์ ์ ํญ์ ๋ง์ง๋ง์ ์์นํด์ผํ๋ค๋ ์ ์ด๋ค!
โ์ฐธ๊ณ apply, call
JS์ ๋ด์ฅ ํจ์์ธ apply์ call์ ๋ํด์ ์์๋ณด์.
์ฌ์ฉ๋ฒ
์คํํ ํจ์.apply(์ ์ฉ์์น, ํ๋ผ๋ฏธํฐ);
์คํํ ํจ์.call(์ ์ฉ์์น, ํ๋ผ๋ฏธํฐ);
์์
let infoTemp = {
sayHi: function(){console.log("Hello " + this.name)}
}
let info = {
name: "Kassid"
}
infoTemp.sayHi.apply(info);
infoTemp.sayHi.call(info);
์ด๋ ๊ฒ ํ์ฌ ๊ฐ์ฒด์ ์๋ ํจ์๋ฅผ ์ด์ฉํ ์ ์๋ค.
(apply, call์ ๊ธฐ๋ฅ์ ๊ฐ๋ค.)
์ด๋ apply, call์ ์ฐจ์ด์ ์ด ์๋ค๋ฉด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ ๋์ด๋ค.
apply๋ array์ ํํ๋ก ์ ๋ฌํ๋ฉด๋๊ณ , (ex [1, 2, ...] )
call์ ํ๋์ฉ ์ ๋ฌํ๋ฉด ๋๋ค. (ex 1, 2, ... )
์ด ํจ์๋ค์ spread operator๊ฐ ์์ ๋ ๊ทธ ์ญํ ์ ๋์ ํ์๋๋ฐ ์๋์ ๊ฐ์ด ์ฌ์ฉํ์๋ค.
let arr = [1, 2, 3];
func(...arr); //spread operator ์ฌ์ฉ
func.apply(undefinded, arr); //apply ์ฌ์ฉ
'๐ | WEB DEV > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (33)_ constructor ๋ฌธ๋ฒ (0) | 2023.08.08 |
---|---|
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (31)_ ํจ์ ํ๋ผ๋ฏธํฐ (default, arguments) (0) | 2023.08.07 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (29)_ Tagged Literals (0) | 2023.08.05 |
JS_๋ฌธ๋ฒ (๊ฐ์ธ)_ ๋ณ์ ์ด์ ๋ฆฌ (0) | 2023.08.04 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (28)_ Arrow function (0) | 2023.08.02 |
๋๊ธ