In einer kürzlich gestellten Frage erhielt ich Vorschläge, um unter anderem über den Aspekt von JavaScript zu sprechen, bei dem Funktionen erstklassige Objekte sind. Was bedeutet die "erste Klasse" in diesem Zusammenhang im Gegensatz zu anderen Objekten?
EDIT (Jörg W Mittag): Exaktes Duplikat: "Was ist ein erstklassiges Programmierkonstrukt?"
javascript
ProfK
quelle
quelle
Antworten:
Um Wikipedia zu zitieren :
Diese Seite illustriert es auch sehr schön:
Lesen Sie auch den Kommentar von TrayMan, interessant ...
quelle
Der Begriff "erstklassige Funktionen" in einer Programmiersprache wurde in den 1960er Jahren vom britischen Informatiker Christopher Strachey eingeführt . Die bekannteste Formulierung dieses Prinzips ist wahrscheinlich die Struktur und Interpretation von Computerprogrammen von Gerald Jay Sussman und Harry Abelson:
Grundsätzlich bedeutet dies, dass Sie mit Funktionen alles tun können, was Sie mit allen anderen Elementen in der Programmiersprache tun können. Im Fall von JavaScript bedeutet dies, dass alles, was Sie mit einer Ganzzahl, einem String, einem Array oder einer anderen Art von Objekt tun können, auch mit Funktionen möglich ist.
quelle
Vollständigere Genehmigung der Formulierung von Strachey-Sussman-Abelson. Wenn Ihre Sprache ein solches Konstrukt unterstützt, haben Sie eine Funktion als erstklassige Sprache :)
Kurz gesagt, alles ist ein erstklassiges Objekt, wenn es in der Sprache als Zustandsmanipulationsart oder Objekttyp fungiert. Einfach etwas, das Sie bearbeiten und Anweisungen weitergeben und gleichzeitig in Ausdrücken auswerten können. Oder noch kürzer: Wenn Sie sich eine Funktion als ein Objekt vorstellen können, das zusätzlich aufgerufen werden kann.
quelle
JavaScript-Funktionen sind erstklassige Funktionen, dh Funktionen und Objekte werden als gleich behandelt. Funktionen können als Variable in einem Objekt oder Array gespeichert sowie als Argument übergeben oder von einer anderen Funktion zurückgegeben werden. Das macht Funktion "erstklassige Bürger in JavaScript"
JavaScript verwendet die Syntax der Literalnotation, wodurch es schwierig wird, die Tatsache vollständig zu erfassen, dass Funktionen in JavaScript Objekte sind.
Beispielsweise..
Beide Deklerationen sind gleichwertig. Mit using
new
rufen wir die Konstruktorfunktion eines Objekts auf. Auch mit{}
(JavaScript-Verknüpfung namens Literale) rufen wir die Konstruktionsfunktion eines Objekts auf.{}
ist nur eine kürzere Darstellung zum Instanziieren des Konstruktors.In den meisten Sprachen wird
new
ein Objekt mit einem Schlüsselwort erstellt. Erstellen Sie daher ein JavaScript-Objekt.Wie Sie sehen wir erstellt einen Objektnamen - Funktion .
Erstellen derselben Objektnamenfunktion mit dem JavaScript-Funktionsausdruck.
Los geht's, wir haben gerade eine Objektnamenfunktion erstellt.
quelle
In Javascript sind Funktionen erstklassige Objekte, da sie viel mehr können als Objekte.
Function instanceof Object //returns true
Wie ein Objekt kann eine Funktion Eigenschaften haben und einen Link zurück zu ihrer Konstruktorfunktion haben.
quelle
Einfacher Test. Wenn Sie dies in Ihrer Sprache tun können (Python als Beispiel):
Ihre Sprache behandelt Funktionen als erstklassige Objekte.
quelle
Dies bedeutet, dass Funktionen Objekte mit einem Typ und einem Verhalten sind. Sie können dynamisch erstellt, wie jedes andere Objekt weitergegeben werden, und die Tatsache, dass sie aufgerufen werden können, ist Teil ihrer Schnittstelle.
quelle
Dies bedeutet, dass die Funktion tatsächlich von Object erbt. Damit Sie es weitergeben und wie mit jedem anderen Objekt damit arbeiten können.
In c # müssen Sie jedoch auf Delegierte oder Reflexionen verzichten, um mit Funktionen herumzuspielen. (Dies wurde in letzter Zeit mit Lambda-Ausdrücken viel besser)
quelle
Die Definition auf der Mozilla-Site ist präzise und klar. Nach ihnen,
Und
quelle
Ich denke, wenn etwas in einer Sprache erstklassig ist, bedeutet dies, dass es eher von seiner Syntax als von einer Bibliothek oder einem syntaktischen Zucker unterstützt wird. Beispielsweise sind Klassen in C keine erste Klasse
quelle
Einfach in JavaScript sind Funktionen erstklassige Objekte, dh Funktionen sind vom Typ Objekt und können wie jedes andere Objekt (String, Array, Number usw.) erstklassig verwendet werden, da es sich tatsächlich um Objekte handelt sich. Sie können in Variablen gespeichert, als Argumente an Funktionen übergeben, innerhalb von Funktionen erstellt und von Funktionen zurückgegeben werden
quelle