Symbol.isConcatSpreadable阻止concat()打平参数数组

103 阅读1分钟
    var arr = ['red', 'blue', 'green'];
    var arr1 = ['black', 'red'];
    var obj = {
        [Symbol.isConcatSpreadable]: true,
        length: 2,
        0: 'pink',
        1: 'orange'
    }
    arr1[Symbol.isConcatSpreadable] = false;
    var concat1 = arr.concat(arr1);
    console.log(concat1);  // ['red', empty, 'blue', 'green', ['black', 'red']]
    var concat2 = arr.concat(obj);
    console.log(concat2);  // ['red', empty, 'blue', 'green', 'pink', 'orange']