Получить все функции объекта в JavaScript - PullRequest
8 голосов
/ 26 сентября 2011

Например,

Math.mymfunc = function (x) {   
    return x+1;
}

будет рассматриваться как свойство, и когда я напишу

for(var p in Math.__proto__) console.log(p)

будет показано. Но остальные математические функции не будут. Как я могу получить все функции объекта Math?

Ответы [ 4 ]

12 голосов
/ 26 сентября 2011

Object.getOwnPropertyNames(Math); - это то, что вам нужно.

Здесь регистрируются все свойства при условии, что вы работаете с браузером, совместимым с EcmaScript 5.

var objs = Object.getOwnPropertyNames(Math);
for(var i in objs ){
  console.log(objs[i]);
}
3 голосов
/ 19 февраля 2016
var functionNames = [];

Object.getOwnPropertyNames(obj).forEach(function(property) {
  if(typeof obj[property] === 'function') {
    functionNames.push(property);
  }
});

console.log(functionNames);

Это дает вам массив имен свойств, которые являются функциями.Принятый ответ дал вам имена всех свойств.

2 голосов
/ 26 сентября 2011

Спецификация не определяет, с какими свойствами определяются функции Math. Кажется, что большинство реализаций применяют DontEnum к этим функциям, что означает, что они не будут отображаться в объекте при повторении с циклом for(i in Math).

Могу я спросить, для чего тебе это нужно? Существует не так много функций, поэтому лучше всего определить их самостоятельно в массиве:

var methods = ['abs', 'max', 'min', ...etc.];
0 голосов
/ 26 сентября 2011

console.log(Math) должно работать.

...