如何获取可以在js中的变量上调用的所有可能方法(包括非对象变量,如数字)
How to get all possible methods that can be called on a variable in js (including non object varibles like a number)
出于调试目的,我想知道(在运行时)我可以调用特定 js 变量的所有可能方法。
这可以在 Chrome 控制台(和其他控制台)中完成,但我喜欢 javascript 方法,它给我一个数组,其中包含可以在多变的。
如果您使用 "for..in" 或 Object.keys,我们不会获取所有方法!
(如果您在包含数字的变量上调用它们,它不包括 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;
};
出于调试目的,我想知道(在运行时)我可以调用特定 js 变量的所有可能方法。
这可以在 Chrome 控制台(和其他控制台)中完成,但我喜欢 javascript 方法,它给我一个数组,其中包含可以在多变的。
如果您使用 "for..in" 或 Object.keys,我们不会获取所有方法! (如果您在包含数字的变量上调用它们,它不包括 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;
};