在JavaScript中获取对象的所有功能

时间:2011-09-25 20:13:36

标签: javascript function enumeration

例如,

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

时,

将被视为财产

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

会显示出来。但其余的数学函数则不会。如何获取Math对象的所有函数?

4 个答案:

答案 0 :(得分:13)

Object.getOwnPropertyNames(Math);就是你的目标。

如果您正在处理符合EcmaScript 5标准的浏览器,则会记录所有属性。

var objs = Object.getOwnPropertyNames(Math);
for(var i in objs ){
  console.log(objs[i]);
}

答案 1 :(得分:2)

The specification似乎没有定义Math函数定义的属性。似乎大多数实现都将DontEnum应用于这些函数,这意味着在使用for(i in Math)循环进行迭代时它们不会显示在对象中。

我可以问你需要做什么吗?函数不多,所以最好在数组中自己定义它们:

var methods = ['abs', 'max', 'min', ...etc.];

答案 2 :(得分:2)

var functionNames = [];

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

console.log(functionNames);

它为您提供了作为函数的属性的名称数组。接受的答案为您提供了所有房产的名称。

答案 3 :(得分:0)

console.log(Math)应该有用。