この関数の一般化を介して、特定の Javascript オブジェクトのすべてのプロパティ (非表示のものを含む) を自動的に決定したいと思います。
function keys(obj) {
var ll = [];
for(var pp in obj) {
ll.push(pp);
}
return ll;
}
これはユーザー定義オブジェクトでは機能しますが、多くのビルトインでは失敗します:
repl> keys({"a":10,"b":2}); // ["a","b"]
repl> keys(Math) // returns nothing!
基本的に、Python の dir() と help() に相当するものを書きたいと思います。これらは、新しいオブジェクトを探索するのに非常に役立ちます。
私の理解では、組み込みオブジェクトのみが非表示のプロパティを持っているため (ユーザー コードは明らかにHTML5 まで「列挙可能な」プロパティを設定できません)、1 つの可能性は、Math、String などのプロパティを dir() に相当するものに単純にハードコードすることです。 (こちらのようなリストを使用)。しかし、より良い方法はありますか?
編集:わかりました。これまでに見た中で最良の答えは、このスレッドにあります。これを独自の JS コードで簡単に行うことはできませんが、次善の策は、Chrome の開発者ツール (Chrome -> ビュー -> 開発者 -> 開発者ツール) で console.dir を使用することです。console.dir(Math) を実行し、三角形のドリルダウンをクリックしてすべてのメソッドを一覧表示します。ほとんどのインタラクティブ/ディスカバリー作業にはこれで十分です (実行時にこれを行う必要はありません)。