为了账号安全,请及时绑定邮箱和手机立即绑定

js数组和对象问题

js数组和对象问题

杨__羊羊 2019-03-15 17:15:45
在封装方法的时候发现个问题,颠覆我对数组的看法,直接贴代码:String.prototype.replaces=function(reg,str){    var arr = [];    var newStr= this;    var i= '';    var d;    while((d = reg.exec(newStr))!=null) {        //debugger        try{            //console.log(d)            if(reg.global){                arr = newStr.split(d[0]);                newStr = arr.join(str);                continue            }else{                if(reg.ignoreCase){                    console.log(d instanceof Array);                    for(var x of d){                        console.log(x)                    }                }                break;            }                    }catch(e){            console.log(e)        }            }    return newStr    }var s ="我是a,c,a,cc,c,c,cc".replaces(/a/i,'b')console.log(s);把上面代码直接贴到控制台就可以测试,问题来了,d这个变量,他到底是array还是object打印出的d: console.log(d instanceof Array)得出d是数组,但是用for循环和for of都只能打印出一个变量,用d[1]访问会报错,d['index']则不会报错反而正确,如果他是对象数组,则d[1]['index']才会正确吧?
查看完整描述

3 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

是数组,数组其实也是对象,它上面可以挂载其他属性


查看完整回答
反对 回复 2019-03-22
?
莫回无

TA贡献1865条经验 获得超7个赞

var a=[];
a['aa']=1;
a instanceof Array
关联数组
a.length=10;
for(let i of a){console.log(i)}
of是根据length来的 不会遍历到非数字下表

查看完整回答
反对 回复 2019-03-22
  • 3 回答
  • 0 关注
  • 421 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号