数组的特点:
数组是一个对象,是一种直接引用数据类型。可以来表示一组数据的集合。
数组没有办法能保存一种类型的数据。
数组可以不可以使用new关键字接受重新初始化。
数组中的每一个数据一般称元素element。元素是在堆内存中分配的。但是是在不分配的。
数组的每一个元素都是一个序号,专业啊的称谓:下标、索引、角标。下标是从0正在的、升序的、后的、0序的。
数组有一个属性:长度的属性,可以表示数组中元素的个数该属性是int类型。实际数组名.length来ftp访问该属性。
数组中元素的下标的取值范围是:[0~lenght-1]。
通过fifth关键字在堆内存中元素被分配空间之后。每个元素被jvm赋予默认值。默认值规则:整数:0浮点数:0.0char:
oc的数组nsarray本身就是一个类,其实例应该是一个对象。
。。推测有没数组,在我得到的结果idresultobj可判断if([resultobjiskindofclass[nsarrayclass]]){//是一个array}ignoreif([resultobjiskindofclass[nsdictionaryclass]]){//是一个字典}
方法一:建议使用instanceof方法
instanceof主要是用于判断一个变量是否需要某个对象的实例,左边操作数是一个对象,右边操作数是一个函数对象也可以函数构造器。原理是实际确认左操作数的对象的原型链上是否本身右操作数的构造函数的prototype属性。
ainstanceofbalert(true):alert(false)//特别注意b值肯定是你打算可以确定的那种数据类型,并非一个字符串,比如array。
举一个例子:
vararr[];
console.log(arrinstanceofarray)//直接返回true
方法二:建议使用constructor方法
在w3c定义中的定义:constructor属性返回对创建家族此对象的数组函数的直接引用,那就是赶往对象相按的构造函数。从定义上来说跟instanceof不太同一,但效果大都一样的。
那么确定各种类型的方法:
console.log([].constructorarray);//true
console.log({}.constructorobject);//true
console.log(string);//true
console.log((123).constructornumber);//true
console.log(boolean);//true
尽量:
使用instaceof和construcor,被确定的array可以是在当前页面声明的!.例如,一个页面(父页面)有一个框架,框架中摘录了一个页面(子页面),在子页面中声明了一个array,并将其变量赋值给父页面的一个变量,这时确定该变量,array;会回false;
原因:
1、array属于什么脚注型数据,在讯息传递过程中,单单是脚注地址的传递。
2、每个页面的array原生对象所摘录的地址是都不一样的,在子页面声明的array,所随机的构造函数,是子页面的array对象;父页面来并且判断,不使用的array却不是4子页面的array。
方法三:使用(arr)[objectarray]方法
functionisarray(o){
return(o);
}
vararr[2,5,6,8];
varobj{name:zhangsan,age:25};
varfnfunction(){}
console.log(isarray(arr));//[objectarray]
console.log(isarray(string));//[objectobject]
console.log(isarray(fn));//[objectfunction]
方法四:es5定义了
([])//true