Учитывая произвольный объект JavaScript, как я могу найти его методы?

Я знаю, что это возможно в Python, но я могу получить список методов для объекта JavaScript?

7
задан telaviv 15 July 2010 в 04:12
поделиться

2 ответа

Вы можете перебрать свойства объекта и проверить их тип.

for(var prop in whatever) {
    if(typeof whatever[prop] == 'function') {
        //do something
    }
}
12
ответ дан 6 December 2019 в 09:58
поделиться

В дополнение к существующим ответам, ECMAScript 5-й редакции предоставляет способ доступа ко всем свойствам объекта (даже неперечислимым) с помощью метода Object.getOwnPropertyNames. При попытке перечислить свойства собственных объектов, таких как Math, метод for...in

for(var property in Math) {
    console.log(property);
}

ничего не выведет на консоль. Однако

Object.getOwnPropertyNames(Math)

вернет:

["LN10", "PI", "E", "LOG10E", "SQRT2", "LOG2E", "SQRT1_2", "abc", "LN2", "cos", "pow", "log", "tan", "sqrt", "ceil", "asin", "abs", "max", "exp", "atan2", "random", "round", "floor", "acos", "atan", "min", "sin"]

Вы можете написать вспомогательную функцию поверх этой, которая возвращает только методы, заданные объектом.

function getMethods(object) {
    var properties = Object.getOwnPropertyNames(object);
    var methods = properties.filter(function(property) {
        return typeof object[property] == 'function';
    });
    return methods;
}

> getMethods(Math)
["cos", "pow", "log", "tan", "sqrt", "ceil", "asin", "abs", "max", "exp", "atan2", "random", "round", "floor", "acos", "atan", "min", "sin"]

Поддержка ECMAScript 5th ed. на данный момент несколько удручающая, так как только Chrome, IE9pre3 и ночные версии Safari/Firefox поддерживают его.

6
ответ дан 6 December 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: