Подтвердить что ты не робот

Как я могу перечислить все свойства объекта Math?

Когда я делаю

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

Я получаю список свойств и методов окна

Как бы то ни было, когда я делаю то же самое для объекта "Math", я ничего не получаю.

typeof "window" == typeof "Math"

возвращает TRUE, поэтому я не вижу причины, по которой мой цикл не работает.

Странно, как будто я пишу прямо Math[E] Я получаю значение константы E.

UPDATE

Спасибо. Все ответы были полезными и обеспечивали именно то, что я хотел. Я поддержал большинство из них.

4b9b3361

Ответ 1

Не все свойства объекта являются итерабельными. Вы получите только возвращаемые свойства в цикле 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"]

См. Возможно ли получить более подробные имена объектов, неперечислимых наследуемых свойств объекта?.

Ответ 2

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

Ответ 3

console.log(Object.getOwnPropertyNames(Math));