javascript定义类数组对象的方法是:1、首先创建一个空对象;2、为对象直接定义数字下标的属性;3、关键点,为对象设置length属性和splice属性为数字和函数。
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
js中类数组对象很多,概念简单的讲就是看上去像数组,又不是数组,可以使用数字下标方式访问又没有数组方法。
例: arguments , NodeList , HTMLCollection , jQuery 等
类数组对象特性
立即学习“Java免费学习笔记(深入)”;
1、拥有 length 属性
var a=document.getElementsByTagName("p");a.__proto__;// HTMLCollection {} 属于类数组对象a.length;//62
登录后复制
2、可以使用数字下标的方式访问对象
a[0];//…
登录后复制
3、不能使用数组原型的方法(如 slice , pop 等)
a.slice;//undefined Error!a.pop;//undefined Error!
登录后复制
4、使用 instanceof 操作不属于 Array
[] instanceof Array;//truea instanceof Array;//false
登录后复制
5、可以转换为真数组对象
var arr = Array.prototype.slice.call(a);arr instanceof Array;//true
登录后复制
PS:注意在IE8下部分对象无法使用slice方法转换为真数组对象。
建议使用jquery提供的 $.makeArray() 方法转换类数组对象
6、通常可定义有其他自定义属性
a.item;//function item() { [native code] }
登录后复制
类数组对象优点
关于优点我相信不用太多描述,可以让js和其他后台语言拥有相同的操作方式。
如C#的某些list集合,可以使用数字下标 list[0] 来访问或是使用字符串名称 list[‘name’] 来访问同一对象
同时还拥有各种自定义方法,自定义属性,看jquery对象的优雅的访问方式即可知是如此美妙的对象。
如何手动创建类数组对象
回归主题,如何手动创建类数组对象。
1、首先创建一个空对象
var array_like = {};//创建一个空对象
登录后复制
2、为对象直接定义数字下标的属性,这在其他语言里是绝对不允许的,对象属性不能使用数字开头,但JS里是可以的,甚至使用中文都可以
array_like[ 0 ] = "test 0";array_like[ 1 ] = "test 1";array_like[ 2 ] = "test 2";array_like[ 3 ] = "test 3";
登录后复制
3、关键点,为对象设置length属性和splice属性为数字和函数
//关键点array_like.length = 4;//为对象设置length属性array_like.splice = [].splice;//同时设置splice属性为一个函数
登录后复制
PS:设定splice属性其实是为了欺骗浏览器的控制台,另其显示出数组的模样,可以参考这里
4、测试
//设定自定义属性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、全部代码:
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怎么定义类数组对象的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2709496.html