JavaScript デバッグ セッションの途中で、次のような動作が見られます。
o // function (a1, a2, a3) { return a1 + a2 + a3; }
typeof(o) //'function'
for (var n in o) { console.log(n); } //<a list of properties>
Object.keys(o) //TypeError: not an object
Object.prototype.toString.call(o); //"[object Function]"
これは私を驚かせます-関数はオブジェクトにならないことがありますか?
[Mac 上の Chrome 29 で実行]
これは非常に複雑なデバッグ セッションの途中であることに注意してください。「o」がどこから来たのか、どのように作成されたのかは正確にはわかりません。また、これまでのところ、簡単なテスト ケースでこの問題を再現することはできませんでした。簡単なセットアップは期待どおりに機能します。
var t = function() { return true; } //undefined
t.a = "aa" //"aa"
Object.keys(t) //["a"]