怎样把function中的arguments变成普通数组
答案:2 悬赏:80 手机版
解决时间 2021-02-08 06:11
- 提问者网友:皆是孤独
- 2021-02-07 17:56
怎样把function中的arguments变成普通数组
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-02-07 18:58
function test() {
var arr = Array.prototype.slice.apply(arguments);
console.log(arr instanceof Array); // true
console.log(arguments instanceof Array); // false
}
var arr = Array.prototype.slice.apply(arguments);
console.log(arr instanceof Array); // true
console.log(arguments instanceof Array); // false
}
全部回答
- 1楼网友:平生事
- 2021-02-07 20:23
没什麽特别的, arguments object就是这麽设计的
在ecma-262.pdf 10.6有详细说明它是怎麽构造的
1. len = 参数的数量
2. obj = 新创建一个ecmascript对象
..
4. 给obj的内部[[class]]属性设置为 'arguments'
这个你可以通过alert({}.tostring.call(arguments))查看
..
7. 调用内部[[defineownproperty]]方法 (也就是设置私有属性方法)
调用参数为 ('length',{[[value]]: len, [[writable]]: true, [[enumerable]]: false, [[configurable]]: true})
..
...
这就表明length是单纯的直接赋值给arguments object的, 没有什麽神秘的
你自己new object, 没有给它设置length属性当然没有了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯