所以NamedNodeMap
是一个包含方法getNamedItem
,setNamedItem
和其他一些方法的javascript类。它包含只读整数属性length
,可通过索引访问,例如attributes[0]
。
我的问题是如何在Javascript中实现?它不是Array
,也不包含push
或pop
方法。但是Javascript属性是字符串,0是数字,据我所知,在使用[ ]
表示法访问时,它不会被强制转换为字符串。
这是如何在Javascript代码中实现的,它是如何在语法上处理的?
答案 0 :(得分:1)
实际上,它被强制成一个字符串......
x = {}
x[0] = 3;
x["0"] // 3;
......这使得实施起来不是很有趣:
attributes = {}
attributes.length = attributes[0] = 3'
答案 1 :(得分:0)
这将是一个类似Javascript数组的对象。 This article有一个很好的解释。从链接文章中引用的示例代码:
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的Dev Tools在显示NamedNodeMap
时添加了元数据。但JS级没有任何“幻想”。