👋 Symbol.isConcatSpreadable
isConcatSpreadable
-
Array.prototype.concat()
은 배열의 엘리먼트를 전개하여 반환const one = [10, 20], two = ['A', 'B']; const show = () => { console.log(one.concat(two)); }; show(); // [10,20,A,B] two[Symbol.isConcatSpreadable] = true; show(); // [10,20,A,B] two[Symbol.isConcatSpreadable] = false; show(); // [10,20,[A,B]] // 대상이 Array이면 전개하는 것이 디폴트임 // @@isConcatSpreadable을 true로 처리
-
[Symbol.isConcatSpreadable] = true
- one 배열 끝에 two 배열의 엘리먼트를 하나씩 연결
-
[Symbol.isConcatSpreadable] = false
- 전개하지 않고 two 배열 자체를 연결
-
Array-Like
전개const one = [10, 20]; const like = { 0: 'A', 1: 'B', length: 2 }; const show = () => { console.log(one.concat(like)); }; show(); // [10,20,{0: "A", 1: "B", length: 2}] two[Symbol.isConcatSpreadable] = true; show(); // [10,20,A,B] two[Symbol.isConcatSpreadable] = false; show(); // [10,20,{0: "A", 1: "B", length: 2}] // 대상이 Array-Like이면 전개하지 않는 것이 디폴트 임 // @@isConcatSpreadable을 false로 처리 // Array-Like에서 값만 전개함