如上图,解释如下:
- 如果是对象o,转换为对象
- 新建数组A
- 设n=0,用于最后赋值给A,确保A的长度正确
- 预先把值设置到items(这里不知何意?)
- 循环items,设置元素为E
- E是否可展开
- 如果可展开
- 有len下标,则获取E的len
- 如果A数组的长度+E.length超长,抛出类型错误
- 设置P=字符串化的下标
- P是否是E的自有属性
- 如果是,则
- 获取子元素subElement
- 将子元素push进A数组。
- n+=1
- k+=1
- 否则
- 将E作为单个元素添加到items,而不执行展开
- 如果超长,抛出类型错误
- 否认设置为A的元素
- n+=1
- 设置A的长度,确保长度正确
- 返回新数组A
示例如下:
使用问题注意:
- 如果不小心把一个对象合并到数组中,或者有意为之,这时候concat是被当作push使用,但步骤比push多。