1

あらゆる種類の 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>

しかし、プロパティとメソッドのリストが表示されません。何が間違っているのでしょうか?

4

2 に答える 2

3

for-inループを使用します。

for(var key in myObject){
    console.log(key, ':', myObject[key]);
}
于 2013-02-06T14:23:49.940 に答える
0

Object.getOwnPropertyNames は、オブジェクトのプロパティ名であるkeysの配列を返します。

配列をループしてオブジェクトを参照する必要があります。

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');
}
于 2013-02-06T15:53:13.020 に答える