Javascript 获取任何对象的属性和函数列表

Javascript 获取任何对象的属性和函数列表,javascript,Javascript,我希望迭代任何类型的javascript对象(本例中为IDBKeyRange)的属性和函数 我尝试使用以下代码:- <script type="text/javascript"> var arr = Object.getOwnPropertyNames(IDBKeyRange.only(43)); for(var i=0;i<arr.length;i++) { document.write(arr[i]+"</br>"); }

我希望迭代任何类型的javascript对象(本例中为IDBKeyRange)的属性和函数

我尝试使用以下代码:-

  <script type="text/javascript">
    var arr = Object.getOwnPropertyNames(IDBKeyRange.only(43));
    for(var i=0;i<arr.length;i++) {
    document.write(arr[i]+"</br>");
    }
  </script>

var arr=Object.getOwnPropertyNames(IDBKeyRange.only(43));

对于(var i=0;i使用
for in
循环:

for(var key in myObject){
    console.log(key, ':', myObject[key]);
}

Object.getOwnPropertyNames返回对象的属性名键的数组

必须在数组中循环并引用对象:

var O=// an object instance;
var A= Object.getOwnPropertyNames(O).map(function(itm){
    try{
        return itm+':'+O[itm];
    }
    catch(er){
        return itm+': ERROR!'+er.message;
    }
});

alert(A.join('\n'));
如果任何键引用对象,则需要递归方法-

function deepProps(O){
    var arr= Object.getOwnPropertyNames(O).map(function(itm){
        var hoo= O[itm];
        try{
            if(hoo== window){
                return '\n'+itm+': window';
            }
            if(hoo){
                if(hoo.nodeName) return itm+': '+ hoo.nodeName;
                if(typeof O[itm]== 'object'){
                    return '\n\n'+itm+':\n'+deepProps(O[itm]);
                }
                return itm+': '+O[itm];
            }
            return itm+': null';
        }
        catch(er){
            return itm+': '+ 'ERROR! '+er.message;
        }
    })
    return arr.join('\n');
}
似乎在JSIDLE中工作:IDBKeyRange.only(43)是否返回IDBKeyRange对象?