AS3字典setPropertyIsEnumerable被忽略

时间:2011-06-17 11:35:56

标签: actionscript-3 dictionary enumeration

有人可以向我解释为什么Dictionary类会忽略setPropertyIsEnumerable?

我在bugs.adobe发现this错误,似乎原型可能会以某种狡猾的方式参与

以下是一些测试代码:

var obj:Object = {
    'a': 0,
    'b': 1,
    'c': 2
}

obj.setPropertyIsEnumerable('a', false)

trace("object\n")
for (var op:* in obj)
{
    trace(op)
}

var dict:Dictionary = new Dictionary()
dict['a'] = 0
dict['b'] = 1
dict['c'] = 2

dict.setPropertyIsEnumerable('a', false)

trace("dictionary\n")
for (var dp:* in dict)
{
    trace(dp)
}

输出是:

object

c
b
dictionary

c
a
b

请注意,即使被告知不要,字典仍然会枚举属性“a”。

1 个答案:

答案 0 :(得分:0)

这是我的猜测... Dictionary重写nextName以便返回字典的键。它正在使用它自己的实现,因此它忽略了setPropertyIsEnumerable

我还不能证明,但我正在努力。我以为我会抛弃这个假设,看看它是否会激发任何东西。