JS中类数组常见类数组对象

JavaScript018

JS中类数组常见类数组对象,第1张

Dom元素用过attributes属性获取NameNodeMap对象。例如:

NameNodeMap结构如下图:

通过Dom元素的children属性获取元素的子元素集合即HTMLCollection集合对象

通过Dom袁术的childNodes 属性返回包含被选节点的子节点的NodeList。

HTMLCollection集合中只有DOM元素节点,NodeList中包含Dom元素节点和文本节点(text)和注释节点

var

a

=

[]

var

a

=

{}

这两种不能算真正的数组和对象,只是和数组和对象类型,其实这两种是json格式的

var

a

=

new

Array

()

var

a

=

new

Object()

这两种是真正的js的对象和数组

之所以前他们使用方法类似,是因为json和js中对象数组的使用方法类似,[]和数组都是根据索引调用的,{}和js的对象都是根据key值调用的,所以可以通用

这个就类似于你用getElementsByTagName("div")获取元素一样,它可以通过下表得到元素,但他其实也不是数组,是一个可以通过使用下表获取的集合

你好,

我不太明确问题中所说的“对象数组”和“数组对象”具体指什么。其实在JS中对象和数组的界定并没有很清晰,我根据我自己对JS的了解,从字面上对这个问题进行一下解答。

首先,“对象数组”,在我的理解里可以理解成两种可能:其一,数组中的元素全部是对象,即由对象构成的数组;其二,JS中以键值对组合成的对象,由于可以使用类似数组取值的方式读取对象属性的值,因此对象也可看作一种特殊的数组。

其次,“数组对象”,即通常所说的数组,因为JS中一切借对象,数组也是对象。

接下来我举些例子来补充说明我的理解:

// 1. 【对象数组-1】全部由对象组成的数组

var objArr = [

    {a: 1},

    {a: 2},

    {a: 3, b: 4}

]

// 取值示例

console.log(objArr[2].b)

// or

console.log(objArr[2]['a'])

//=================================================

// 2. 【对象数组-2】Key: Value对象

var obj = {

    key1: 1,

    key2: 'string',

    key3: function(){},

    "special-key": 'Key中出现特殊字符'

}

// 同样可以用数组的方式取对象的值

console.log(obj.key2)

// or

console.log(obj['special-key'])

//=================================================

// 3. 【数组对象】普通数组

var arr = [1, 2, 'string', function(){ return 'value' }, {a: 1}]

// 取值

console.log(arr[2])

// or

console.log(arr[3]())

所以,本质上在JS中他们其实好像没太大区别。希望能解决你的问题,如有疑问可追问!