原型中的函数列表

时间:2014-05-02 15:08:31

标签: javascript node.js

我希望能够获得不同JavaScript对象的函数列表,特别是String和其他基元。我以为我能够以某种方式使用String.prototype并神奇地获取原型中的函数列表但没有骰子。有什么想法吗?

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

_.functions("somestring");

......不为我做。

2 个答案:

答案 0 :(得分:4)

您使用getOwnPropertyNames,它会返回所有属性的数组,可枚举与否

Object.getOwnPropertyNames(String.prototype)

FIDDLE

如果您只需要这些功能(我认为这只会排除length?),您可以过滤

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

FIDDLE

答案 1 :(得分:2)

实际问题是,原语原型的成员不可枚举。因此,我们必须使用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对象的所有属性,并将它们作为数组返回。