728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ Spread Operator
- ์ฐ๋ฌ์์ ๋ง์นจํ๋ฅผ 3๊ฐ ์ฐ์ผ๋ฉด ๊ทธ๊ฒ์ด spread operator!
- spread operator ๋ ํญ์ ๋๊ดํธ ์, ์ค๊ดํธ ์, ํจ์ ์์ ์๊ดํธ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅ
๐ Spread Operator ์ ์ญํ ์์๋ณด๊ธฐ
๐ค Array ์ ๋ถ์ด๋ฉด ๋๊ดํธ ์ ๊ฑฐ
let arr = ["hello", "world"];
console.log(arr); // ['hello', 'world']
console.log(...arr); // hello world
console.log("hello", "world"); // hello world
๐ค String ์ ๋ถ์ด๋ฉด String ์ ํ๋์ฉ ๋ถ๋ฆฌ
let str = "hello";
console.log(str); // hello
console.log(...str); // h e l l o
console.log("h", "e", "l", "l", "o"); // h e l l o
๐ Spread Operator ์ ํ์ฉ ์์๋ณด๊ธฐ
๐ค ๋ ๊ฐ ์ด์์ Array ๋ฅผ ํฉ์น๊ฑฐ๋ ๋ณต์ฌํ ๋ ์ฌ์ฉ ๊ฐ๋ฅ
let a = [1, 2, 3];
let b = [4, 5];
let c = [...a];
let d = [...a, ...b];
console.log(c); // [1, 2, 3]
console.log(d); // [1, 2, 3, 4, 5]
let e = [1, 3, 5];
let f = e; // ๊ทธ๋ฅ ๋ฑํธ๋ฅผ ์ด์ฉํ์ฌ ๋ณต์ฌํ๋ฉด ๊ฐ์ ๊ณต์ (shallow copy)
e[3] = 7;
console.log(e); // [1, 3, 5, 7]
console.log(f); // [1, 3, 5, 7]
let g = [2, 4, 6];
let h = [...g]; // spread operator ๋ฅผ ์ด์ฉํ์ฌ ๋ณต์ฌํ๋ฉด ๋
๋ฆฝ์ ์ธ ๊ฐ์ ๊ฐ์ง(deep copy)
g[3] = 8;
console.log(g); // [2, 4, 6, 8]
console.log(h); // [2, 4, 6]
๐ค ๋ ๊ฐ ์ด์์ Object ๋ฅผ ํฉ์น๊ฑฐ๋ ๋ณต์ฌํ ๋ ์ฌ์ฉ ๊ฐ๋ฅ
// copy ํ๋ค๊ฐ ๊ฐ ์ค๋ณต์ด ๋ฐ์ํ๋ฉด ๊ฐ์ฅ ๋ค์ ์์นํ๋ ๊ฐ์ ์ ์ฉ
let o1 = { a: 1, b: 2 };
let o2 = { ...o1, c: 3 };
let o3 = { ...o1 };
let o4 = { ...o1, a: 2 };
let o5 = { a: 2, ...o1 };
console.log(o2); // {a: 1, b: 2, c: 3}
console.log(o3); // {a: 1, b: 2}
console.log(o4); // {a: 2, b: 2}
console.log(o5); // {a: 1, b: 2}
๐ค ํจ์์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ ๋ ์ฌ์ฉ ๊ฐ๋ฅ
function add(a, b, c) {
console.log(a + b + c);
}
add(1, 2, 3); // 6
let nums = [10, 20, 30];
add(nums[0], nums[1], nums[2]); // 60 => ์ฃผ๋จน๊ตฌ๊ตฌ์
add.apply(undefined, nums); // 60 => ์๋ ๋ฐฉ์
add(...nums); // 60 => ์์ฆ๋ฐฉ์
๐ apply() ์ call()
let person = {
hello: function () {
console.log(this.name + " hello");
},
age: function (age) {
console.log(this.name + " " + age);
},
};
let person2 = {
name: "Seoyun",
};
person.hello(); // undefined hello
// person2 ์ person.hello() ๋ฅผ ์ ์ฉํ๊ณ ์ถ์ ๋ apply(), call() ์ฌ์ฉ ๊ฐ๋ฅ!
person.hello.apply(person2); // Seoyun hello
person.hello.call(person2); // Seoyun hello
// person2 ์ person.age() ๋ฅผ ์ ์ฉํ ๋ apply(), call()์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ๋ ๋ฐฉ๋ฒ์ด ๋ค๋ฆ!
person.age.apply(person2, [30]); // Seoyun 30
person.age.call(person2, 30); // Seoyun 30
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > JavaScript ES6' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript / ES6] Rest parameter (0) | 2022.04.22 |
---|---|
[JavaScript / ES6] default parameter / arguments (0) | 2022.04.22 |
[JavaScript / ES6] Template literals ์์๋ณด๊ธฐ (0) | 2022.04.12 |
[JavaScript / ES6] ๋ณ์ ์ฐ์ต๋ฌธ์ ํ๊ธฐ (0) | 2022.04.11 |
[JavaScript / ES6] ๋ณ์ ์ ๋ฌธ๋ฒ ์ด์ ๋ฆฌํ๊ธฐ_2 (0) | 2022.04.11 |