我是靠谱客的博主 自信蜡烛,这篇文章主要介绍javascript怎么定义类数组对象,现在分享给大家,希望可以做个参考。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法。

例: arguments , NodeList , HTMLCollection , jQuery 等

类数组对象特性

1、拥有 length 属性

复制代码
1
2
var a=document.getElementsByTagName("p"); a.__proto__;// HTMLCollection {} 属于类数组对象a.length;//62
登录后复制

2、可以使用数字下标的方式访问对象

复制代码
1
a[0];//<p class="aspNetHidden">…</p>
登录后复制

3、不能使用数组原型的方法(如 slice , pop 等)

复制代码
1
2
a.slice;//undefined Error! a.pop;//undefined Error!
登录后复制

4、使用 instanceof 操作不属于 Array

复制代码
1
2
[] instanceof Array;//true a instanceof Array;//false
登录后复制

5、可以转换为真数组对象

复制代码
1
2
var arr = Array.prototype.slice.call(a); arr instanceof Array;//true
登录后复制

PS:注意在IE8下部分对象无法使用slice方法转换为真数组对象。

建议使用jquery提供的 $.makeArray() 方法转换类数组对象

6、通常可定义有其他自定义属性

复制代码
1
a.item;//function item() { [native code] }
登录后复制

类数组对象优点

关于优点我相信不用太多描述,可以让js和其他后台语言拥有相同的操作方式。

如C#的某些list集合,可以使用数字下标 list[0] 来访问或是使用字符串名称 list['name'] 来访问同一对象

同时还拥有各种自定义方法,自定义属性,看jquery对象的优雅的访问方式即可知是如此美妙的对象。

如何手动创建类数组对象

回归主题,如何手动创建类数组对象。

1、首先创建一个空对象

复制代码
1
var array_like = {};//创建一个空对象
登录后复制

2、为对象直接定义数字下标的属性,这在其他语言里是绝对不允许的,对象属性不能使用数字开头,但JS里是可以的,甚至使用中文都可以

复制代码
1
2
3
4
array_like[ 0 ] = "test 0"; array_like[ 1 ] = "test 1"; array_like[ 2 ] = "test 2"; array_like[ 3 ] = "test 3";
登录后复制

3、关键点,为对象设置length属性和splice属性为数字和函数

复制代码
1
2
3
//关键点 array_like.length = 4;//为对象设置length属性 array_like.splice = [].splice;//同时设置splice属性为一个函数
登录后复制

PS:设定splice属性其实是为了欺骗浏览器的控制台,另其显示出数组的模样,可以参考这里

4、测试

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//设定自定义属性 array_like.test0=array_like[0]; array_like.test1=array_like[1]; //直接输出 console.log( array_like );//['test 0','test 1'...] //类型 console.log( $.type( array_like ) );//"object" //数字下标访问 console.log( array_like[ 0 ] );//"test 0" //自定义属性访问 array_like.test0;//"test 0" //不是数组对象 array_like instanceof Array;//false //转换为真数组对象 var Arr=Array.prototype.slice.call(array_like); Arr instanceof Array;//true
登录后复制

5、全部代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
var array_like = {}; array_like[ 0 ] = "test 0"; array_like[ 1 ] = "test 1"; array_like[ 2 ] = "test 2"; array_like[ 3 ] = "test 3"; array_like.length = 4; array_like.splice = [].splice; console.log( array_like ); console.log( $.type( array_like ) ); console.log( array_like[ 2 ] );
登录后复制

【推荐学习:javascript高级教程】

以上就是javascript怎么定义类数组对象的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是自信蜡烛最近收集整理的关于javascript怎么定义类数组对象的全部内容,更多相关javascript怎么定义类数组对象内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(115)

评论列表共有 0 条评论

立即
投稿
返回
顶部