2010-12-04 8 views
8

Diese Frage wird absichtlich wie this question formuliert.Wie listet man die Funktionen/Methoden eines Javascript-Objekts auf? (Ist es überhaupt möglich?)

Ich weiß nicht einmal, ob das möglich ist, ich erinnere mich vage etwas über einige Eigenschaften zu hören, die in JS nicht aufzählbar sind.

Wie auch immer, um eine lange Geschichte kurz zu machen: Ich entwickle etwas auf einem js-Framework, für das ich keine Dokumentation und keinen einfachen Zugriff auf den Code habe, und es würde sehr helfen zu wissen, was ich mit meinen Objekten tun kann .

Antwort

9

Ich denke, das ist das, was Sie suchen:

var obj = { locaMethod: function() { alert("hello"); }, a: "b", c: 2 }; 
for(var p in obj) 
{ 
    if(typeof obj[p] === "function") { 
     // its a function if you get here 
    } 
} 
3

Sie sollten in der Lage sein, Methoden aufzuzählen, die direkt auf einem Objekt, zum Beispiel festgelegt sind:

var obj = { locaMethod: function() { alert("hello"); } }; 

Aber die meisten Methoden gehören zu dem Objekt Prototyp, etwa so:

var Obj = function ObjClass() {}; 
Obj.prototype.inheritedMethod = function() { alert("hello"); }; 
var obj = new Obj(); 

So in In diesem Fall könnten Sie die vererbten Methoden durch Auflisten der Eigenschaften von Obj.prototype entdecken.

+0

Dies ist das Problem, auf das ich in der Praxis stoße. Ich werde alles bekommen, was in meinem Objekt ist, aber nicht Obj.prototype, und dann, wenn ich mich erinnere, setze meinen Code hier als Antwort. Ich denke, das ist Introspektion. Gibt es einen anderen Begriff dafür? –

1

können Sie Folgendes verwenden:

var obj = { locaMethod: function() { alert("hello"); }, a: "b", c: 2 }; 


for(var p in obj) 
{ 
    console.log(p + ": " + obj[p]); //if you have installed Firebug. 
} 
15

Wenn Sie Underscore.js in Ihrem Projekt enthalten, Sie _.functions(yourObject) verwenden können.

Verwandte Themen