原型中的函数列表

List of functions in the prototype

本文关键字:列表 函数 原型      更新时间:2023-09-26

我希望能够获得不同JavaScript对象上的函数列表,但特别是字符串和其他原语。我想我可以用String。原型并神奇地获得原型中的函数列表,但没有骰子。什么好主意吗?

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

_.functions("somestring");

…不适合我

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

Object.getOwnPropertyNames(String.prototype)

小提琴

如果你只需要函数(我想这只会排除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的形式返回。