为了调试的目的,我想知道(在运行时)所有可能的方法,我可以调用一个特定的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;
};