【JS复习笔记】04 数组
2016-01-22 00:43
337 查看
JS里的数组其实并不是一个数组,它其实是一个对象,a[1]这种调用方式其实就是一个字面量为1的属性。
因为这东西实际上是一个对象,所以你就可以理解下面这种声明了吧!
关于数组长度
数组长度:arrName.length。
数组长度没有上界,如果你用一个大于length的数组下标来存储一个元素,那么数组长度会变大以容纳新元素,不会发生越界错误。
数组的length其实并不是表示数组的元素个数,它实际上表示的是数组的最大整数下标+1。
就比如上面这段代码中arrName.length为10001,但是实际上你知道的,它只有一个元素。
给arrName.length赋值,如果大于当前值,也不会分配更多空间,如果小于当前值,比如新值为100,会导致下标大于且等于100的的元素被删除掉。
关于数组元素的删除
前面讲到对象的删除为 delete obj.name或者 delte myObj["name"],而又说道数组其实是一个对象那么当然也是可以delete arrName[2];
但是你要知道delete方法过后arrName[2]成了undefined,但是arrName[1]和arrName[3]值不变
然而我们脑海中的数组元素的删除通常是想要arrName[3]前移去替代arrName[2]的位置
所以JS提供了splice这种方法,arrName.splice(2,3),就是删除下标为2的元素开始的三个元素。当然对于大型数组来说效率不高。
关于判断一个值是否为数组
但是上面的方法在识别不同窗口或frame里构造的数组时会失败,所以下面有一种更好的方法
好吧,这种鬼东西记在这里就得了,别记在脑子里,毕竟容量有限。
关于数组的属性与方法
前面说过了,数组实际上就是对象。那么给数组添加方法和属性都可以像对象那样。
有一点要注意的是,arrName.myName这种属性添加后,arrName.length并没有改变,因为这并不是一个整数类型的属性
因为这东西实际上是一个对象,所以你就可以理解下面这种声明了吧!
var arrName=['我可以是一个字符串',1,true,null,undefined,[1,'23'],{name:'123'},NaN,Infinity];
关于数组长度
数组长度:arrName.length。
数组长度没有上界,如果你用一个大于length的数组下标来存储一个元素,那么数组长度会变大以容纳新元素,不会发生越界错误。
数组的length其实并不是表示数组的元素个数,它实际上表示的是数组的最大整数下标+1。
var arrName=[] arrName[10000]=1;
就比如上面这段代码中arrName.length为10001,但是实际上你知道的,它只有一个元素。
给arrName.length赋值,如果大于当前值,也不会分配更多空间,如果小于当前值,比如新值为100,会导致下标大于且等于100的的元素被删除掉。
关于数组元素的删除
前面讲到对象的删除为 delete obj.name或者 delte myObj["name"],而又说道数组其实是一个对象那么当然也是可以delete arrName[2];
但是你要知道delete方法过后arrName[2]成了undefined,但是arrName[1]和arrName[3]值不变
然而我们脑海中的数组元素的删除通常是想要arrName[3]前移去替代arrName[2]的位置
所以JS提供了splice这种方法,arrName.splice(2,3),就是删除下标为2的元素开始的三个元素。当然对于大型数组来说效率不高。
var arrName=[1,2,3,4,5,6]; arrName.length=50 arrName.splice(2,3);//删除后数组为[1,2,6,undefined。。。],arrName.length为47
关于判断一个值是否为数组
var isArray=function(value){ return value && typeof value==='object' && value.constructor===Array; };
但是上面的方法在识别不同窗口或frame里构造的数组时会失败,所以下面有一种更好的方法
var isArray=function(value){ return Object.prototype.toString.apply(value)==='[Object Array]'; };
好吧,这种鬼东西记在这里就得了,别记在脑子里,毕竟容量有限。
关于数组的属性与方法
前面说过了,数组实际上就是对象。那么给数组添加方法和属性都可以像对象那样。
有一点要注意的是,arrName.myName这种属性添加后,arrName.length并没有改变,因为这并不是一个整数类型的属性
相关文章推荐
- 一些有用的js插件
- 安装和使用TmodJs
- javascript笔记2-引用类型
- 基于JS实现新闻列表无缝向上滚动实例代码
- JavaScript学习笔记整理之引用类型
- JavaScript实现仿淘宝商品购买数量的增减效果
- 很全面的JavaScript常用功能汇总集合
- 在JavaScript中call()与apply()区别
- 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
- 详解javascript传统方法实现异步校验
- js简单设置与使用cookie的方法
- JavaScript权威指南(4)——语句
- javascript多物体运动元素共享?no
- js封装多物体运动函数
- js中封装多物体运动及透明度变化函数
- JavaScript运动框架详解
- js循环运动的实现
- LeetCode 263.Ugly Number
- LeetCode 231.power of two
- JavaScript模块化编程