enumerableがfalseのプロパティを見る
node.jsでconsole.logとかしてもenumerableがfalseなプロパティは見れない。
var o = Object.create(null, { foo: { value: 'bar', enumerable: false }, }); console.log(o.foo); // => bar console.log(o); // => {}
o.fooはあるのにoをconsole.logしても空に見える。これを見えるようにするにはutil.inspectを使う。
var util = require('util'); ... console.log( util.inspect(o, true) ); // { [foo]: 'bar' }
第二引数でenumerableがfalseのプロパティを見るかどうかを決める。デフォルトがfalseなので明示的にtrueを指定すべし。
ちなみに組み込みのObjectとかArrayのプロパティとかメソッドは基本的に全部enumerableがfalseになってるようなので、これらをみたいときも同じようにする。
console.log( util.inspect(Object, true, null) ); console.log( util.inspect(Array, true, null) );
第三引数は何回再帰するかでデフォルトは2。nullで無限に再帰。
内部的にはObject.getOwnPropertyNamesを使ってる。