有人可以向我解释为什么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”。
答案 0 :(得分:0)
这是我的猜测... Dictionary
重写nextName
以便返回字典的键。它正在使用它自己的实现,因此它忽略了setPropertyIsEnumerable
。
我还不能证明,但我正在努力。我以为我会抛弃这个假设,看看它是否会激发任何东西。