可能重复:
javascript中的类数组对象
Javascript 具有类似于数组的对象(例如arguments、NodeList)的本机对象。
我想知道:
- 创建类数组对象有什么好处?
- 什么时候应该创建一个类似数组的对象(而不是创建一个常规的数组对象)?
可能重复:
javascript中的类数组对象
Javascript 具有类似于数组的对象(例如arguments、NodeList)的本机对象。
我想知道:
您从错误的角度看待它:Java(Live)Script 的早期版本没有数组,只有对象。实际上,数组是一个扩充对象(索引在内部转换为字符串!)。所以一个数组是一个对象,就像arguments
一个对象......有一些重叠,一些差异......
回答您的问题:您永远无法真正创建对象,这只是函数固有的arguments
,您应该将它们视为只读对象。
NodeLists 是对象,由类似的东西返回document.getElementsByTagName('a');
,它们的优点是(当然除了 IE)它们带有几个简洁的方法:
var inputs = document.getElementsByTagName('input');
var userNameIn = inputs.namedItem('username');//Arrays don't have this
那么什么时候应该使用呢?好吧,处理节点:10 次中有 9 次你最好使用节点列表,参数对象是你在函数中需要的。由于 JS 是一种函数式语言,因此您非常需要它们。
也就是说,这真的没那么重要:你很可能遇到过这样的代码:
var myArgs = Array.prototype.slice.apply(arguments,[0]);
这只是从 Array 原型中借用 slice 方法,并像调用 arguments 对象的方法一样调用它。
这就是所有要说的,真的。这里没有明确的答案,只有那句古老的口头禅:随你的直觉走。尝试,失败,学习,然后再试一次。
只要知道,无论您做什么,都可以借用原型(甚至是实例)方法,并且一切都可以追溯到Object.prototype母原型。