在Javascript中什么是伪数组?如何将伪数组转化为标准数组?考虑兼容性
2015-10-15 11:49
399 查看
伪数组(类数组):无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法来遍历它们。典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都回NodeList对象都属于伪数组。可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象。在 JavaScript 中, 函数中的隐藏变量 arguments 和用 getElementsByTagName 获得的元素集合(NodeList)都不是真正的数组,不能使用 push 等方法,在有这种需要的时候只能先转换为真正的数组。对于 arguments,可以使用 Array.prototype.slice.call(arguments); 来达到转换的目的,但对于 NodeList 则不行了,其在 IE8 及以下将会报错,只能说其 JS 引擎有所限制。因此,如果需要把 NodeList 转换为真正的数组,则需要做下兼容处理。?
//定义一个函数fun,内部使用makeArray将其arguments转换成数组function fun(){var ary = makeArray(arguments);alert(ary.constructor );}//调用fun(3,5);//假设页面上有多个段落元素pvar els = document.getElementsByTagName("p");var ary1 = makeArray(els);alert(ary1.constructor);//特殊的js对象(如jquery对象)var obj={};obj[0] = "一";obj[1] = "二";obj[2] = "三";obj.length = 3;var ary2 = makeArray(obj);alert(ary2.constructor); |
相关文章推荐
- jsp中page指令用法详解
- JS 监控浏览器关闭时提醒
- JS中的!=、== 、!==、===的用法和区别。
- js中的this关键字详解
- Rhino JavaScript 解析引擎-------Ant
- 学习Javascript闭包(Closure)
- JSP九大内置对象
- 蜗牛—JSP学习乘法表页面输出
- js-sha1加密
- 代码工具1. 自动根据json字符串生成javabean类
- Javascript中call的使用
- js-base64加密
- 详解JS位置、宽高属性之一:offset系列
- js实现MD5加密
- 编写高质量JavaScript代码绳之以法(The Essentials of Writing High Quality JavaScript)翻译
- JS实现选中当前菜单后高亮显示的导航条效果
- javascript小知识点(类和继承)
- JavaScript instanceof 运算符深入剖析
- 数字数组的全排列(js)
- jsp 导出excel