18

私がする時

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

ウィンドウのプロパティとメソッドのリストを取得します

ただし、「数学」オブジェクトに対して同じことを行っても、何も得られません。

typeof "window" == typeof "Math"

TRUEを返すため、ループが機能しない理由がわかりません。

直接書いてMath['E']定数Eの値を取得するのは奇妙です。

4

3 に答える 3

17

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

window(たまたまグローバル オブジェクトである) のほとんどのプロパティはユーザー定義のグローバル変数であるため、それらは列挙可能です。

最新の JavaScript エンジンObject.getOwnPropertyNames(obj)では、列挙可能および列挙不可能の両方のすべてのプロパティを取得するために使用できます。

>>> 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"]

オブジェクトの列挙不可能な継承されたプロパティ名を取得することは可能ですか? を参照してください。詳細については。

于 2012-05-25T15:13:17.253 に答える
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 );

于 2012-05-25T15:14:47.813 に答える
3
console.log(Object.getOwnPropertyNames(Math));
于 2012-05-25T15:16:28.607 に答える