永发信息网

javascript 二维数组

答案:2  悬赏:50  手机版
解决时间 2021-03-09 17:24
function prefill(num, value) {
if(typeof num === 'boolean' || ~~num != num || +num < 0) throw new TypeError(num + ' is invalid')

return Array.apply(null, Array(+num)).map(function (d,i) { return value })
我想知道return后面Array.apply(null,Array(+num))是什么意思??为什么要这样写??语法我是知道的,但是这样写我就不懂了!
最佳答案
我觉得你这里应该是错误的用法,应该是:
Array.apply(null,new Array(+num))这样的吧,是不是少了 new ?


javascript 的函数有两个告别的方法 call 和 apply,这两个方法的作用都是把函数里的 this 指针绑定到这两个方法的第一个参数指定的对象(也就是相当于这个对象临时多出了这个函数作为方法),而区别是 call 是把除了第一个参数外的所有参数依次传递给函数,而 apply 是把第二个参数的数组元素依次传递给函数,所以 apply 的第两个参数指能为数组(当然也可能不传)
function A(a, b){
    this.x = [a, b]
}

function B(e, f){
    this.X = [e, f]
}

A.prototype.B = B;

var a = new A(1, 2), b = {};

a.B(3, 4);
A.call(b, 1, 2);
B.apply(b, [3, 4]);

// 最后 a.x 和 b.x, a.X 和 b.X 都是一样的(本来 b 是没有 A 构造, B 方法的)这里就可以知道 B.apply 这里的作用了吧
根据以上分析,我觉得你这个代码有点多余
目的应该是要生成一个 num 大小的值都为 value 的数组,完全可以这样:
return (new Array(num)).map(function(d,i){return value}) 测试了下,你的代码正常,我的这个代码不能用,无法理解,不就是 Array 的 map 方法么,为什么我这样不对呢。。。
全部回答
js 中没有真正的二维数组的概念。 只是模拟二维数组的样式而已。 arrnum[i] = []; arrnum 是一个数组,再定义arrnum里所以的元素的值都空数组。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男性患者,30岁,小腿部被蚊虫叮咬后感染,感
给属兔的朋友生日祝福语
牡丹花可以放在室内吗
怎样面对情人老婆的威胁?
楚雄市种子公司优质良种加工中心我想知道这个
速腾,大众速腾用什么轮胎好呢?
除了《妖怪屋》以外,还有哪些恐怖动画电影呢
找首歌歌词有句“期待故事里的情,闭上眼……
where什么you do two days ago
李白的《侠客行》里面有一句“千秋二壮士,烜
符合北半球发达国家位于北温带的一组国家是
潘玮柏,陈奕迅悲伤的歌
怎么让马桶水流的快、我的马桶老是水不厉害,
诛仙神品利矛符在哪里换?
怎样才能成为高考状元
推荐资讯
用HDMI线分别连接电视,AV功放,蓝光机,播放
有人喜欢自己的女友
姜堰宾馆地址有知道的么?有点事想过去
梦见孩子在山上哭可我就是找不到
APP版兰纳足贴优质在哪里?
如果我是激活软件,菜单弹出需要输入Autodesk
中国有多少个带yang的城市,都什么?
我家的"户户通"位置没有改变,但节目播放几分
瓦尧地址在什么地方,想过去办事
腾达修配在哪里啊,我有事要去这个地方
我国最古老的地图是什么?
笔记本sdram与ddr如何区分
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?