Wenn wir "Instanz von" sagen, nehmen wir an, dass es sich um ein Objekt handelt. Warum gibt der Operator instanceof
von JavaScript true
zurück, wenn wir (class A { }) instanceof Function
, aber typeof (class A { }) == "function"
fragen? Warum nicht object
?Warum in JavaScript-Klasse Eine instanceof-Funktion, aber der Typ der Klasse A ist kein Objekt?
0
A
Antwort
4
Warum Bediener JavaScript
instanceof
true zurück, wenn wir(class A { }) instanceof Function
class
es fragen sind nur syntaktischer Zucker für Konstruktorfunktionen. I.e. Die Auswertung von class A {}
erzeugt eine Funktion.
Die folgenden beiden Beispiele sind (mehr oder weniger) äquivalent, dh sie das gleiche Ergebnis/Wert erzeugen:
// class
class A {
constructor() {
this.foo = 42;
}
bar() {
console.log(this.foo);
}
}
// constructor function
function A() {
this.foo = 42;
}
A.prototype.bar = function() {
console.log(this.foo);
}
Alles, was nicht ein primitiver Wert (string, number, boolean, null, nicht definiert ist, Symbol) ist ein Objekt in JavaScript. Funktionen sind auch Objekte, mit speziellen internen Eigenschaften, die sie aufrufbar machen (und/oder konstruierbar).
Warum Objekt nicht?
typeof
gibt die Zeichenfolge "function"
für Werte Funktion, weil das ist, wie es in der Beschreibung definiert ist.
Verwandte Themen
- 1. AttributeError: 'Klasse' Objekt hat kein Attribut 'a'
- 2. Objekt der abstrakten Klasse Typ „DiamondMap“ ist
- 3. Warum ist (a, a) kein Funktor?
- 4. Kein Typ Objekt ist nicht iterierbar
- 5. „Kein Standard-Konstruktor“ für eine Klasse Typ
- 6. Warum ist eine Inline-Deklaration kein unvollständiger Typ?
- 7. Warum ist der 'this' in C kein Referenztyp keyword ++
- 8. Warum ist std :: regex kein gültiger Typ?
- 9. Generic [A] wo ist A eine Klasse?
- 10. Was ist der Ord-Typ?
- 11. Was ist der ocaml Typ 'a. 'a ->' ein Mittelwert?
- 12. Klasse ist erforderlich, aber kein Zugriff möglich
- 13. statische Klasse ein Mitglied der eigenen Typ der Klasse
- 14. Typ 'any' ist kein Konstruktorfunktionstyp. Klasse google.maps.OverlayView
- 15. Warum kann ich keine Funktion in der Klasse A aufrufen, aber ich kann sie in der B-Klasse aufrufen
- 16. Warum bekomme ich immer 'NoneType' Objekt hat kein Attribut 'A' in der Django App?
- 17. Fehler: verschachtelte Klasse in einer geschachtelten Klasse in einer Template-Klasse "ist kein Typ"
- 18. Warum ist ein iterierbares Objekt kein Iterator?
- 19. Überschreibendes Objekt # ist gleich (Objekt) außerhalb der Klasse
- 20. Was ist "Objekt der Methode" und "Objekt der Klasse"?
- 21. Wie überprüft man, ob der Typ eine Klasse ist?
- 22. Wie anders ist der Typ .__ setattr__ aus dem Objekt .__ setattr__?
- 23. generieren Q-Typ von der Klasse Objekt in QueryDSL
- 24. Instanziieren Objekt der generischen Klasse mit gegebenem Typ in String
- 25. Warum ist "MacBook" eine Entität, aber kein "Laptop"?
- 26. noch kein Mitglied in der Klasse namens
- 27. Objekt der Klasse A als Mitglied in Klasse B. B erfordert, dass sich das Objekt von A selbst initialisiert
- 28. Aufruf der statischen Methode von Klasse B (die Klasse A erweitert) der Klasse A
- 29. In OCaml, warum ist der Listenkonstruktor :: kein Operator
- 30. Wie wähle ich ein Div mit der Klasse "A" aber nicht mit der Klasse "B"?
Sie haben es mit einem Objekt zu tun. Funktionen sind Objekte in Javascript. – AmericanUmlaut
Warum ist es überraschend, dass eine Instanz einer Funktion eine Art "Funktion" hat? Es scheint mir, als wäre es eine wichtige Unterscheidung. –
@Squint, aber ... aber Klasse ist kein Objekt =). Dies gilt natürlich nicht für JavaScript ... – ktretyak