Einführung
In diesem Lab werden wir untersuchen, wie man mit JavaScript ein Array von Funktions-Eigenschaftsnamen aus den eigenen enumerierbaren Eigenschaften eines Objekts erhält. Wir werden lernen, wie man über die Eigenschaften eines Objekts iteriert und Object.keys() und Object.getPrototypeOf() verwendet, um ererbte Eigenschaften zu berücksichtigen, falls erforderlich. Wir werden auch nicht-funktionsbezogene Eigenschaften mit Array.prototype.filter() ausschließen.
Wie man in JavaScript Funktions-Eigenschaftsnamen aus einem Objekt bekommt
Um ein Array von Funktions-Eigenschaftsnamen aus einem Objekt zu erhalten, verwenden Sie die unten bereitgestellte functions-Funktion. Diese Funktion kann optional auch ererbte Eigenschaften enthalten.
So verwenden Sie die functions-Funktion:
- Öffnen Sie das Terminal/SSH und geben Sie
nodeein, um mit der Code-Praxis zu beginnen. - Verwenden Sie
Object.keys(), um über die eigenen Eigenschaften des Objekts zu iterieren. - Wenn Sie ererbte Eigenschaften enthalten möchten, legen Sie das Argument
inheritedauftrueund verwenden SieObject.getPrototypeOf(), um die ererbten Eigenschaften des Objekts zu erhalten. - Verwenden Sie
Array.prototype.filter(), um nur diejenigen Eigenschaften zu behalten, die Funktionen sind. - Lassen Sie das zweite Argument,
inherited, weg, um standardmäßig keine ererbten Eigenschaften zu enthalten.
const functions = (obj, inherited = false) =>
(inherited
? [...Object.keys(obj), ...Object.keys(Object.getPrototypeOf(obj))]
: Object.keys(obj)
).filter((key) => typeof obj[key] === "function");
Hier ist ein Beispiel für die Verwendung der functions-Funktion:
function Foo() {
this.a = () => 1;
this.b = () => 2;
}
Foo.prototype.c = () => 3;
functions(new Foo()); // ['a', 'b']
functions(new Foo(), true); // ['a', 'b', 'c']
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab zu Funktions-Eigenschaftsnamen abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.