Gibt es eine Methode oder Eigenschaft, um alle Methoden von einem Objekt abzurufen? Beispielsweise:
function foo() {}
foo.prototype.a = function() {}
foo.prototype.b = function() {}
foo.get_methods(); // returns ['a', 'b'];
UPDATE: Gibt es eine solche Methode in Jquery?
Danke dir.
Antworten:
quelle
for..in
Weg ist der Standardansatz.TypeError: '[object Object]' is not a function (evaluating 'obj(m)')
m instanceof Function
?Denken Sie daran, dass technisch Javascript-Objekte keine Methoden haben. Sie haben Eigenschaften, von denen einige Funktionsobjekte sein können. Das bedeutet, dass Sie die Methoden in einem Objekt genauso auflisten können wie die Eigenschaften. Dies (oder etwas in der Nähe davon) sollte funktionieren:
Dies führt zu Komplikationen, da einige Eigenschaften von Objekten nicht aufzählbar sind und Sie nicht alle Funktionen des Objekts finden können.
quelle
Sie können diese
console.dir(object)
Objekteigenschaften in die Konsole schreiben.quelle
In modernen Browsern können Sie
Object.getOwnPropertyNames
alle Eigenschaften (sowohl aufzählbar als auch nicht aufzählbar) für ein Objekt abrufen. Zum Beispiel:Beachten Sie, dass dadurch nur eigene Eigenschaften abgerufen werden , sodass keine Eigenschaften zurückgegeben werden, die an anderer Stelle in der Prototypenkette gefunden wurden. Dies scheint jedoch nicht Ihre Anfrage zu sein, daher gehe ich davon aus, dass dieser Ansatz ausreichend ist.
Wenn Sie nur aufzählbare Eigenschaften sehen möchten , können Sie stattdessen verwenden
Object.keys
. Dies würde dieselbe Sammlung abzüglich der nicht aufzählbarenconstructor
Eigenschaft zurückgeben.quelle
Die Methoden können in der Prototypenkette des Objekts mit den Entwicklertools des Browsers (F12) überprüft werden:
oder direkter
quelle
In ES6:
quelle
Für mich war der einzige zuverlässige Weg, um die Methoden der letzten Erweiterungsklasse zu erhalten, Folgendes zu tun:
quelle
Ich telefoniere ohne Semikolons :), aber das ist die allgemeine Idee.
quelle
Sie können einfach den Prototyp eines Konstruktors durchlaufen und alle Methoden extrahieren.
quelle
Der beste Weg ist:
benutze 'let' nur in es6, benutze stattdessen 'var'
quelle
In Chrome ist
keys(foo.prototype)
. Rückgabe["a", "b"]
.Siehe: https://developer.chrome.com/devtools/docs/commandline-api#keysobject
Später bearbeiten: Wenn Sie es schnell kopieren müssen (für größere Objekte), tun
copy(keys(foo.prototype))
Sie es und Sie haben es in der Zwischenablage.quelle
Holen Sie sich die Methodennamen:
Oder holen Sie sich die Methoden:
quelle