对于在数组上使用copyWithin方法应该都很熟悉,但是绑定到对象上呢?
[].copyWithin.call({length: 5, 3: 1}, 0, 3)
I just began to learn JavaScript, and I have no idea how to understand the following code
[].copyWithin.call({length: 5, 3: 1}, 0, 3)
// {0: 1, 3: 1, length: 5}
通过call方法,对象{length: 5, 3: 1}拥有了copyWithin,
通过call() 方法接受的是0,3参数列表
如果是数组的话:
[1,2,3,4,5].copyWithin(0, 3)
// [4, 5, 3, 4, 5]
[1,2].copyWithin(0, 3)
// [1,2]
我想这里的{ length: 5, 3: 1 }应该是类数组对象
Array.from({ length: 5, 3: 1 })
(5) [undefined, undefined, undefined, 1, undefined]
0: undefined
1: undefined
2: undefined
3: 1
4: undefined
length: 5
__proto__: Array(0)
通过上面的解释,再去实现:
{ length: 5, 3: 1 }.copyWithin(0, 3)
将三号位上的1 ,和四号位的undefind 复制给0号位,1号位
就得出: {0: 1, 3: 1, length: 5}