如何获得所有可能的方法,可以调用一个变量在js(包括非对象变量,如数字)



为了调试的目的,我想知道(在运行时)所有可能的方法,我可以调用一个特定的js变量。

这可以在Chrome控制台(和其他)中完成,但我喜欢一个javascript方法,它给我一个数组,其中包含可以在变量上调用的所有方法的名称字符串。

如果你使用"for.. "或对象。钥匙,我们没有得到所有的方法!(如果在包含数字的变量上调用这些方法,则不包括在number .prototype中定义的方法!)

任何想法?

对于那些有同样问题的人,我最终编写了这个方法。

var getKeys = function(obj){
    var keys = [], k;
    if (typeof obj !== "object" && typeof obj !== "function" || obj === null) {
        //primitive
    }else{
        for (k in obj){
            if(keys.indexOf(k) === -1){
                keys.push(k);           
            }
        }
    } 
    var type = Object.prototype.toString.call(obj).slice(8, -1);
    var prototype_keys = Object.getOwnPropertyNames(window[type].prototype);
    for (k = 0; k<prototype_keys.length;k++){
        if(keys.indexOf(prototype_keys[k]) === -1){
            keys.push(prototype_keys[k]);
        }
    }
    return keys;
};

最新更新