原型中的函数列表
我想能够获得不同的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返回它们。