JavaScriptのDontEnum属性

http://starry.night.nu/web/prog/javascript/c01_know_basic_behavior.html
JavaScriptのオブジェクトのプロパティには、DontEnum属性を持っているものがある。
この属性を持つプロパティはfor(x in Obj){}構文で列挙されない。代表的なのがAraryのlength。
DontEnum属性は、プログラマが付与したり外したりすることは出来ない。では、どこでDontEnum属性が付くのかというと「システムオブジェクトのプロパティに最初から付与されている」というのが答え。
他にもReadOnly、DontDelete、Internal属性がある。これらもプログラマがコントロールすることは出来ない。