当前位置: 首页 > 面试题库 >

为什么节点列表没有forEach?

利永年
2023-03-14
问题内容

我当时正在编写一个简短的脚本来更改<abbr>元素的内部文本,但是发现它nodelist没有forEach方法。我知道那nodelist不是继承自Array,但似乎不是forEach一种有用的方法吗?是否有一个具体的实施问题,我不知道阻止添加forEachnodelist

注意:我知道Dojo和jQuery forEach的节点列表都有某种形式。由于限制,我无法使用任何一个。


问题答案:

现在,NodeList在所有主要浏览器中都具有forEach()

原始答案

这些答案都不能解释 为什么 NodeList不继承自Array,从而允许它拥有forEach其余所有内容。

答案在此es-discuss线程上找到。简而言之,它破坏了网络:

问题是代码错误地将instanceof假定为实例是与Array.prototype.concat结合使用的Array。

Google的Closure库中存在一个错误,由于该错误,几乎所有Google的应用程序都失败了。发现该库后立即对其进行了更新,但在那里可能仍然存在与concat结合使用时做出相同错误假设的代码。

也就是说,某些代码做了类似的事情

if (x instanceof Array) {
  otherArray.concat(x);
} else {
  doSomethingElseWith(x);
}

但是,concat将“实际”数组(不是Instanceof数组)与其他对象区别对待:

[1, 2, 3].concat([4, 5, 6]) // [1, 2, 3, 4, 5, 6]
[1, 2, 3].concat(4) // [1, 2, 3, 4]

因此,这意味着上面的代码在x是NodeList的时候就中断了,因为在它沿着doSomethingElseWith(x)路径行进之前,而之后沿着otherArray.concat(x)路径行进,由于x不是真正的数组,所以这样做很奇怪。

一段时间以来,有人提出了一个Elements类的建议,该类是Array的真正子类,将被用作“新的NodeList”。但是,至少从现在起,它已从DOM标准中删除,因为由于各种技术和规范相关的原因,尚不可行。



 类似资料:
  • 问题内容: 来自Java背景,我想知道为什么Scala中没有类似Java 的字段。毕竟,使用size字段,您将能够确定时间的列表大小,那么为什么size字段被删除了? (此问题涉及Scala 2.8及更高版本中的新集合类。此外,我指的是不可变的,而不是可变的。) 问题答案: 不能说size字段已被 删除 ,因为LISP自LISP以来已经存在了50年,这种列表无处不在,并且它们在ML和Haskell

  • 问题内容: 有谁知道为什么不调用Python的函数,因为已经有一个可以删除并返回最后一个元素(索引为-1)并且语义与该用法一致的原因? 问题答案: 因为“ append”早在想到“ pop”之前就已存在。受Python 0.9.1 支持的list.append于1991年初。通过比较,这是在comp.lang.python上讨论的有关在1997年添加pop的一部分。Guido写道: 为了实现一个堆

  • 我最近在springboot和flyway一起工作,我有这样一个问题。为什么flyway没有创建数据库?我刚刚在我的build.gradle中添加了一个flyway依赖项,现在看起来是这样的。 我这样配置数据源: 这里是我的Hibernate。属性: 和迁移文件,位于resources/db/migration中: 有什么问题?是否应该在Application.Properties中配置datas

  • 我写了两个函数,用于在树中添加一个新节点:一个公共的和一个私有的。私有的是递归的。公共的调用递归的。第一个问题:这是可以接受的做法吗? 现在问题来了:根变量没有初始化。它在树类中声明<代码>公共节点根 这让我非常困惑,因为我知道Java是按引用传递的,而不是按值传递的。为什么在调用这些函数后root为null? 控制台输出:

  • 本文向大家介绍集群中为什么要有主节点?相关面试题,主要包含被问及集群中为什么要有主节点?时的应答技巧和注意事项,需要的朋友参考一下 在分布式环境中,有些业务逻辑只需要集群中的某一台机器进行执行,其他的机器可以共享这个结果,这样可以大大减少重复计算,提高性能,所以就需要主节点。

  • 问题内容: 在C ++中,可以在构造函数开始运行之前使用初始化列表来初始化类的字段。例如: 我很好奇为什么Java没有类似的功能。根据 Core Java:第1卷 : C ++使用这种特殊语法来调用字段构造函数。在Java中,因为对象没有子对象,而只有指向其他对象的指针,所以不需要它。 这是我的问题: “由于对象没有子对象”是什么意思?我不知道什么是子对象(我尝试查找它);它们是否意味着扩展超类的