2

オブジェクトのすべてのメンバーを反復処理できるようにしたいと考えています。このようなもの:

 function reflect(obj) {
 var str = "";
 for (member in obj) { str += (member + "\n"); }
 return str;
 }

ただし、Enumerableフラグにより​​、多くのメンバーがfor inループに現れるのを防ぎます。私の質問は:

  1. それらすべてを公開するオブジェクトのメンバーを反復処理する別の方法はありますか?

  2. そうでない場合、これらのフラグへのアクセスはありますか? ( Enumerableを true設定できますか?)

  3. プロトタイプチェーンを公開し、どのメンバーがどの祖先に属しているかを判断する方法はありますか?

4

1 に答える 1

1

そのために使えますgetOwnPropertyNames。列挙可能なオプションに関係なく、すべてのプロパティを返します。

var objectProperties = Object.getOwnPropertyNames(obj);

更新これは Javascript 1.8.5 以降でのみ利用可能です! (ありがとう @Kiyura)

于 2012-09-22T14:23:59.803 に答える