Symbol.isConcatSpreadable

布尔值,对象用于Array.prototype.concat()时,是否可以展开

let arr1 = ['c', 'd'];
['a', 'b'].concat(arr1, 'e') // ['a', 'b', 'c', 'd', 'e']
arr1[Symbol.isConcatSpreadable] // undefined let arr2 = ['c', 'd'];
arr2[Symbol.isConcatSpreadable] = false;
['a', 'b'].concat(arr2, 'e') // ['a', 'b', ['c','d'], 'e']

当变量为数组的时候,默认时是可以展开的,如需不要展开,true也可以展开,将数组的Symbol.isConcatSpreadable值定义为false即可

let obj = {length: 2, 0: 'c', 1: 'd'};
['a', 'b'].concat(obj, 'e') // ['a', 'b', obj, 'e'] obj[Symbol.isConcatSpreadable] = true;
['a', 'b'].concat(obj, 'e') // ['a', 'b', 'c', 'd', 'e']

当变量为对象的时候,默认是不可以展开的,false也不展开,如需展开,将对象的Symbol.isConcatSpreadable值定义为true即可

05-11 13:58
查看更多