无法枚举javascript中对象的所有属性

无法枚举javascript中对象的所有属性,javascript,Javascript,我是javascript新手,拥有以下代码: <html> <body> <object classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4" id="abc"> </object> <script> var b=document.getElementById("abc"); for (a in b){ document.

我是javascript新手,拥有以下代码:

<html>
    <body>
    <object classid="clsid:f6D90f11-9c73-11d3-b32e-00C04f990bb4" id="abc">
    </object>
    <script>
    var b=document.getElementById("abc");
    for (a in b){
        document.write(a+"<br>");
    }
    alert(b.object);
    </script>
    </body>
</html>

var b=document.getElementById(“abc”);
(b中的a){
文件。写(a+“
”); } 警报(b.对象);
现在,我的问题是为什么这段代码不枚举对象b的所有属性。 更具体地说,此代码不枚举“object”属性。但是代码警报(b.object)告诉我这是一个对象

我做的一切都对吗?有人能澄清我的疑问吗


感谢

要枚举对象的所有属性(包括拥有的或继承的、可枚举的或不可枚举的),请执行以下操作:

do {
    Object.getOwnPropertyNames( obj ).forEach(function ( prop ) {
        // process prop       
    });
} while ( obj = Object.getPrototypeOf( obj ) );

实时演示:

并非所有属性都是可枚举的,但在本例中,
b.object
不存在:,因此我想知道
警报(b.object)
实际上给了您什么。如果你能制作一个演示来展示你所看到的行为,那就太好了。那么,你期待什么呢?你在里面装的是什么?它应该做什么?
a
在哪里定义?@tkone:它属于MSXML 3.0核心服务()。你也可以在自己的系统上运行它。@FelixKling:哪些属性是不可枚举的?还有什么方法可以列举这些吗?@FelixKling:我在IE上运行这些代码,所以我怀疑像JSFIDLE这样的网站能做到这一点。你可以看到我在使用IE运行这段代码时看到的行为,我看到[object]被警告。维达斯:我看到这在JSFIDLE上有效,但在IE上不起作用,我怎样才能让它在IE上运行?顺便说一句,我从未使用过jsfiddle@user1466594嗯,我忘了关闭
元素。我已经更新了我的演示。现在它在IE9中工作。顺便说一句,在IE8及之前的版本中不可能做到这一点,因为这些浏览器不提供检索不可枚举属性名称或检索隐式原型链接的方法。你能给我完整的代码和所有内容吗..抱歉,我是一个新手(@user1466594)转到这里--查看该页面的源代码。这是演示的源代码。