猿问

js数组和对象问题

在封装方法的时候发现个问题,颠覆我对数组的看法,直接贴代码:


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']才会正确吧?


杨__羊羊
浏览 422回答 3
3回答

摇曳的蔷薇

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

莫回无

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

相关分类

JavaScript
我要回答