有没有办法在JavaScript中打印对象的所有方法?

有没有办法在JavaScript中打印对象的所有方法?

当然:

function getMethods(obj) { var result = []; for (var id in obj) { try { if (typeof(obj[id]) == "function") { result.push(id + ": " + obj[id].toString()); } } catch (err) { result.push(id + ": inaccessible"); } } return result; } 

使用它:

 alert(getMethods(document).join("\n")); 

这里是一个关于JSreflection的文章 。 它应该做你想要的。

采取这个代码甘德: –

 function writeLn(s) { //your code to write a line to stdout WScript.Echo(s) } function Base() {} Base.prototype.methodA = function() {} Base.prototype.attribA = "hello" var derived = new Base() derived.methodB = function() {} derived.attribB = "world"; function getMethods(obj) { var retVal = {} for (var candidate in obj) { if (typeof(obj[candidate]) == "function") retVal[candidate] = {func: obj[candidate], inherited: !obj.hasOwnProperty(candidate)} } return retVal } var result = getMethods(derived) for (var name in result) { writeLn(name + " is " + (result[name].inherited ? "" : "not") + " inherited") } 

getMethod函数返回一组方法以及该方法是否是从原型inheritance的方法。

请注意,如果您打算在上下文提供的对象(如browser / DOM对象)上使用它,那么它将无法使用IE。

这是一个ES6样本。

 // Get the Object's methods names: function getMethodsNames(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === 'function'); } // Get the Object's methods (functions): function getMethods(obj = this) { return Object.keys(this) .filter((key) => typeof this[key] === 'function') .map((key) => this[key]); } 

obj = this是一个ES6的默认参数,你可以传入一个对象,或者默认为this

Object.keys返回一个Array Object自己的枚举属性。 在window对象它将返回[..., 'localStorage', ...'location']

(param) => ...是一个ES6箭头函数,它是一个简写

 function(param) { return ... } 

带有隐含的回报。

Array.filter创build一个新的数组,其中包含所有通过testing的元素( typeof this[key] === 'function' )。

Array.map创build一个新的数组,其结果是在数组中的每个元素上调用一个提供的函数(返回this[key] )。

从这里 :

示例1:本示例写出“navigator”对象的所有属性及其值:

 for (var myprop in navigator){ document.write(myprop+": "+navigator[myprop]+"<br>") } 

只要用你感兴趣的任何东西来代替“导航员”,你就应该好好去。

正如Anthony在评论部分提到的那样 – 这个返回的所有属性不仅仅是方法的问题。

哎呀! 那会教我用一种我不认识的语言来回答一个问题。 不过,我认为代码是有用的 – 只是不是所需的。

由于JavaScript中的方法只是函数的属性,for..in循环会枚举它们,但不会枚举内置的方法。 据我所知,没有办法列举内置的方法。 而且你不能以这种方式枚举你自己的方法或属性。

如果您只想查看对象内部的内容,则可以打印所有对象的键。 其中一些可以是variables,一些 – 方法。

这个方法不是很准确,但是非常快:

 console.log(Object.keys(obj));