Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tầm quan trọng của Symbol.isConcatSpreadable trong JavaScript

Symbol.isConcatSpreadable

Symbol nổi tiếng này cấu hình việc object có bị làm phẳng (flatten) thành các phần tử mảng khi dùng Array.prototype.concat() hay không. Nếu là false thì không làm phẳng mảng. Mặc định Symbol.isConcatSpreadable là true, nên mảng sẽ bị làm phẳng trừ khi khai báo rõ ràng.

Không dùng Symbol

Ví dụ

Symbol không được khai báo, mảng bị làm phẳng mặc định.

<html> <body> <script> var arr1 = ['mango', 'apple', 'guava']; var arr2 = ['cashew', 'pista', 'bhadham']; var res1 = arr1.concat(arr2); console.log(res1); </script> </body> </html>

Kết quả

["mango", "apple", "guava", "cashew", "pista", "bhadham"]

Có dùng Symbol

Ví dụ

Khai báo Symbol.isConcatSpreadable = false nên mảng không bị làm phẳng.

<html> <body> <script> var arr1 = ['mango', 'apple', 'guava']; var arr2 = ['cashew', 'pista', 'bhadham']; arr2[Symbol.isConcatSpreadable] = false; var res2 = arr1.concat(arr2); console.log(res2); </script> </body> </html>

Kết quả

["mango", "apple", "guava", Array(3)]

Ứng dụng: Kiểm soát hành vi concat() với array-like objects, typed arrays, hoặc custom objects. Mặc định array có Symbol.isConcatSpreadable = true.