Gibt es eine Möglichkeit, alle Methoden eines Objekts in JavaScript zu drucken?
Antworten
Zu viele Anzeigen?Hier ist ein ES6
Probe.
// Get the Object's methods names:
function getMethodsNames(obj = this) {
return Object.keys(obj)
.filter((key) => typeof obj[key] === 'function');
}
// Get the Object's methods (functions):
function getMethods(obj = this) {
return Object.keys(obj)
.filter((key) => typeof obj[key] === 'function')
.map((key) => obj[key]);
}
obj = this
ist ein ES6-Standardparameter. Sie können ein Objekt übergeben, oder es wird standardmäßig ein this
.
Object.keys
gibt ein Array der Object
eigene aufzählbare Eigenschaften. Über die window
Objekt wird es zurückgeben [..., 'localStorage', ...'location']
.
(param) => ...
ist eine ES6-Pfeilfunktion, sie ist eine Kurzform für
function(param) {
return ...
}
mit einer impliziten Rückgabe.
Array.filter
erzeugt ein neues Array mit allen Elementen, die den Test bestehen ( typeof obj[key] === 'function'
).
Array.map
erstellt ein neues Array mit den Ergebnissen des Aufrufs einer angegebenen Funktion für jedes Element in diesem Array (Rückgabe obj[key]
).
Werfen Sie einen Blick auf diesen Code:-
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")
}
Die Funktion getMethod gibt die Menge der Methoden zurück und gibt an, ob es sich um eine Methode handelt, die von einem Prototyp geerbt wurde.
Beachten Sie, dass, wenn Sie beabsichtigen, diese auf Objekte, die aus dem Kontext wie Browser / DOM-Objekt geliefert werden, dann wird es nicht funktionieren IE verwenden.
Von aquí :
Beispiel 1: In diesem Beispiel werden alle Eigenschaften des Objekts "navigator" und ihre Werte ausgegeben:
for (var myprop in navigator){
document.write(myprop+": "+navigator[myprop]+"<br>")
}
Ersetzen Sie einfach 'navigator' durch das Objekt, das Sie interessiert, und Sie sollten damit fertig sein.
Wie von Anthony im Kommentarbereich erwähnt, werden alle Attribute zurückgegeben, nicht nur die Methoden, nach denen die Frage gestellt wurde.
Huch! Das wird mich lehren, zu versuchen, eine Frage in einer Sprache zu beantworten, die ich nicht kenne. Dennoch denke ich, dass der Code nützlich ist - nur nicht das, was erforderlich war.
- See previous answers
- Weitere Antworten anzeigen