Symbol.isConcatSpreadable 在 JavaScript 中的重要性是什么?

javascriptobject oriented programmingfront end technology

Symbol.isConcatSpreadable

这个众所周知的符号用于配置在使用 Array.prototype.concat() 方法 时是否应将对象展平为其数组元素。如果它为 false ,则不会展平数组。默认情况下,Symbol.IsConcatSpreadable true。因此,除非明确声明,否则无法避免数组的扁平化

无符号

示例

在下面的示例中,符号Symbol.IsConcatSpreadable没有明确说明。因此默认情况下,数组被扁平化,如输出所示。

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

输出

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

使用符号

示例

在下面的示例中,符号 Symbol.IsConcatSpreadable 被明确声明,因此数组的展平不会发生,如输出中所示。

<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>

输出

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

相关文章