Array.prototype.copyWithin(target,start=0,end = this.length)
1.target(必须):从该位置开始替换数据
2.start(可选):从该位置开始读取数据,默认为0.如果为负值,表示倒数。
3.end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数
[1,2,3,4,5].copyWithin(0,3,4)
//[4,2,3,4,5]
[].copyWithin.call({length: 5, 3: 1}, 0, 3)
//{0: 1, 3: 1, length: 5}
//总结:就是用call的方法将{length:5,3:1}对象调用[]数组中的copyWith的方法从0开始替换 读取从索引值3开始数据进行替换 因为索引3为1 4和5都不存在 所以最终的结果为{0: 1, 3: 1, length: 5}
(function(objectLikeArray, targetIn,startIndex){
var target= targetIn;
for(var i= startIndex;i<objectLikeArray.length;i++){
//if(objectLikeArray.hasOwnProperty(i)){
if(i in objectLikeArray){
objectLikeArray[target]=objectLikeArray[i];
}else{
delete objectLikeArray[target]
}
target++;
}
return objectLikeArray;
}({length: 5, 3: 1},0,3));
网友评论