JavaScript中数组和集合的区别是什么,什么时候我应该选择一个而不是另一个
What is the difference between an array and collection in JavaScript and when should I choose one over the other?
我目前正在阅读Jon Duckett写的《JavaScript和jQuery交互式前端Web开发》一书。在关于DOM的那一章中,它提到
nodelist看起来像数组,编号也像数组,但它们确实是不是数组。它们是一种称为集合的对象类型。
我的问题是,数组和集合在JavaScript中的区别是什么,什么时候我应该选择一个超过另一个?
From https://developer.mozilla.org/it/docs/Web/API/NodeList:
为什么NodeList不是数组?
NodeList的使用非常像数组,并且很容易调用数组中。prototype方法,而NodeList对象没有任何熟悉的Array方法
JavaScript有一个基于原型的继承机制内置对象(如array)和宿主对象(如nodelist)。数组实例继承数组方法(如forEach或map),因为它们的原型链如下所示:
myArray -> Array。原型->对象。prototype -> null对象的原型链可以通过调用获得对象。getPrototypeOf多次)
forEach、map等是Array.prototype自己的属性对象。
与数组不同,NodeList原型链如下:
myNodeList -> NodeList。原型->对象。原型-> null
节点列表。Prototype包含item方法,但没有数组中。
NodeLists与Array元素集合非常相似,通常被称为"类数组",但有一个细微的区别—将集合保留为NodeList会错过许多JavaScript功能,例如真正的数组迭代和原型方法。
NodeList接口提供了节点有序集合的抽象,但没有定义或约束该集合的实现方式。
NodeList to array
var myArray = Array.prototype.slice。调用(myList, 0);未定义的myArray.constructor.toString ();"function Array() {(本机代码)} "
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 导航到特定事件的另一个变量页面
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何在react js中将值从一个组件发送到另一个组件
- 按我自己的类克隆另一个元素的内容和顺序
- 在另一个函数中使用变量this
- 如何在react js中从一个页面导航到另一个页面
- 在另一个函数成功结束后调用该函数
- 要求定义另一个文件中的对象