Чтобы добавить к существующим ответам, 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 5-е изд.на данный момент довольно уныло, так как его поддерживают только ночные Chrome, IE9pre3 и Safari / Firefox.