原型中的函数列表

我想能够获得不同的JavaScript对象的function列表,但特别是string和其他原语。 我以为我能够以某种方式使用String.prototype,神奇地获得原型中的function列表,但没有骰子。 有任何想法吗?

我也尝试使用下划线。 例如

_.functions("somestring"); 

…不为我做。

你会使用getOwnPropertyNames ,它返回所有属性的数组,可枚举或不

 Object.getOwnPropertyNames(String.prototype) 

小提琴

如果你只需要function(这只会排除length我认为?),你可以过滤

 var fns = Object.getOwnPropertyNames(String.prototype).filter(function(itm) { return typeof String.prototype[itm] == 'function'; }); 

小提琴

实际的问题是,原型原型的成员是不可枚举的。 所以,我们必须使用Object.getOwnPropertyNames ,它甚至会给出非枚举属性来获取它们。

你可以像这样写一个实用函数

 function getFunctions(inputData) { var obj = inputData.constructor.prototype; return Object.getOwnPropertyNames(obj).filter(function(key) { return Object.prototype.toString.call(obj[key]).indexOf("Function") + 1; }); } console.log(getFunctions("Something")); console.log(getFunctions(1)); 

这将过滤所有Function对象的属性,并以Array的forms返回它们。