0

NamedNodeMap一个带有方法getNamedItem,setNamedItem和其他一些的 javascript 类也是如此。它包括一个只读整数属性length,可以通过索引访问,例如attributes[0].

我的问题是如何在 Javascript 中实现?它不是一个Array也不包括pushorpop方法。[ ]但是 Javascript 属性是字符串,0 是一个数字,据我所知,在使用符号访问时它不会被强制转换为字符串。

这是如何在 Javascript 代码中实现的,它是如何在语法上处理的?

4

2 回答 2

1

实际上,它被强制转换为字符串......

x = {}

x[0] = 3;

x["0"] // 3;

...这使得实现起来不是很有趣:

attributes = {}
attributes.length = attributes[0] = 3'
于 2013-05-24T17:07:34.987 回答
0

这将是一个类似 Javascript 数组的对象。 这篇文章有一个很好的解释。链接文章引用的示例代码:

var a = {};  // Start with a regular empty object

// Add properties to make it "array-like"
var i = 0;
while(i < 10) {
    a[i] = i * i;
    i++;
}
a.length = i; // magic!!

// Now iterate through it as if it were a real array
var total = 0;
for(var j = 0; j < a.length; j++)
    total += a[j];

请注意,该a.length = i步骤使对象在最终用户看来像一个数组,因此可以对其进行迭代。

FTR 让我感到困惑(这是一个自我回答)是 Chrome 的开发工具在显示时添加了元数据NamedNodeMap。但是在 JS 级别上并没有什么“花哨”的事情发生。

于 2013-05-24T17:08:39.447 回答