Array.prototype.unshift.call(arguments,…)是如何做到的
Array.prototype.unshift.call(arguments,....) how can it be done?
我正试图在参数上实现不同的数组方法,仅用于实验目的。我能够使用切片和连接方法。但我不知道如何添加一个额外的元素在参数列表中使用unshift方法。它给出了一个意想不到的结果,它给出了值3,我不知道它是从哪里来的。怎样才能做到呢?
<html>
<body>
<script>
function init(){
console.log(arguments);
console.log(arguments.length);
console.log(Array.prototype.join.call(arguments,'__'));
console.log(Array.prototype.unshift.call(arguments));
}
init(1,2,3);
</script>
</body>
</html>
结果:Arguments { 0: 1, 1: 2, 2: 3, 2 more… }
3
"1__2__3"
3
From MDN:
返回调用该方法的对象的新length属性。
它返回3
,因为当你调用它时,arguments.length
是3,并且你没有向方法传递任何新元素。
你应该可以直接调用:
console.log(Array.prototype.unshift.call(arguments, "a", "b", "c")));
console.log(arguments);
看看:
6
Arguments { 0: "a", 1: "b", 2: "c", 3: 1, 4: 2, 5: 3, 2 more… }
这是因为unshift
返回修改数组中的元素数量,但修改了数组的位置:
array = [1,2,3]
// [1, 2, 3]
array.unshift(7)
// 4
array
// [7, 1, 2, 3]
相关文章:
- 做一个复活节彩蛋,JS动作点击5个按钮
- 如果在构造函数中有“返回”,则在 JavaScript 中的新运算符中做了什么
- 页面在我的javascript执行后重新加载,我不希望它这样做
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- “createImageData()”和“new ImageData(()”有何不同
- 我想重定向点击,然后更改按钮文本,我该怎么做
- 波浪号在表达式之前时会做什么
- 提交按钮通过JQuery和JavaScript函数所做的更改不会持续
- 如何在做PHP时在base64中动态编码;preg_ replace”;
- 如何做javascript连续滚动-自动加载
- AngularJS routeprovider赢得'Don’我什么都不做
- 选择“选择选项”时显示文本.怎么做
- JavaScript Array unshift() 以一种不可变的方式
- 如何抓住'stop'事件,然后做点什么
- JavaScript:如何每整小时做一些事情
- 正在对已提取的文档进行填充.有可能吗?如果有,怎么做
- 正如我所能做的引导提醒,按下一个按钮可以更改语言
- Loop什么都没做
- 如何在导航栏上用有角度的材料做下拉项
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做