0

可能重复:
javascript中的类数组对象

Javascript 具有类似于数组的对象(例如argumentsNodeList)的本机对象。

我想知道:

  1. 创建类数组对象有什么好处?
  2. 什么时候应该创建一个类似数组的对象(而不是创建一个常规的数组对象)?
4

1 回答 1

1

您从错误的角度看待它: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母原型。

于 2012-08-30T14:14:14.710 回答