- 老师我明白apply是改变this指向,下面这种写法会报错栈溢出,但是```[].concat.apply([], arr)```是好用的,问题是```[].concat(arr)```这样写,concat是```[]```调用的,那this本身不就应该指向```[]```了吗,为什么还要用apply再让this指向[]
```js
function flat(arr) {
const isDeep = arr.some(item => item instanceof Array)
if (!isDeep) {
return arr
}
// const res = Array.prototype.concat.apply([], arr)
const res = [].concat(arr)
return flat(res)
}
```