2012-05-25 17 views
14

私はMathオブジェクトのすべてのプロパティを一覧表示するにはどうすればよいですか?

for (var i in window) console.log(window[i]) 

を行うと、私は、ウィンドウのプロパティのリストを取得し、メソッド

Howver私は「数学」オブジェクトに対して同じことを行うとき、私は何も得ます。

typeof "window" == typeof "Math" 

戻りTRUEので、私は私のループが動作しない理由が表示されません。

私は直接書くと変わってきますMath[E]定数の値はEです。

UPDATEありがとうございました。すべての答えが役立ち、私が欲しかったものを正確に提供しました。私はそれらの大部分をアップしました。

答えて

11

オブジェクトプロパティのすべてが反復可能であるとは限りません。ループはfor..inのループでのみ反復可能なプロパティを取得します。

window(大域オブジェクトであることが多い)のほとんどのプロパティはユーザー定義のグローバル変数であるため、列挙できます。詳細はIs it possible to get the non-enumerable inherited property names of an object?を参照してください

>>> Object.getOwnPropertyNames(Math) 
["toSource", "abs", "acos", "asin", "atan", "atan2", "ceil", "cos", "exp", "floor", "log", "max", "min", "pow", "random", "round", "sin", "sqrt", "tan", "E", "LOG2E", "LOG10E", "LN2", "LN10", "PI", "SQRT2", "SQRT1_2"] 

:あなたは可算・非enumberable両方のすべてのプロパティを取得するためにObject.getOwnPropertyNames(obj)を使用することができます現代のJavaScriptエンジンで

+0

説明してくれてありがとうを提供!しかし、この場合、Mathオブジェクトのプロパティをenumareする方法はありますか? –

8
["max", "ceil", "SQRT2", "PI", "pow", "log", 
"LOG2E", "tan", "sqrt", "exp", "random", "min", 
"floor", "atan2", "cos", "atan", "acos", "abs", 
"round", "asin", "LN2", "LOG10E", "sin", 
"E", "SQRT1_2", "LN10"].forEach(function(key) { 
    if(Math[key]) { 
     console.log(key, Math[key]); 
    } 
}); 

あなたはすべての注目に値するのブラウザでObject.getOwnPropertyNames(Math);上記の作品で、現代のブラウザでこれらのキーのリストを取得することができますあなたのshimmed .forEach

+0

ありがとう!私はgetOwnPropertyNamesを知らなかった –

+0

これはダウン投票を得る...なぜ? –

+0

同じことを聞いていた... – Esailija

3
console.log(Object.getOwnPropertyNames(Math)); 
関連する問題