Was versteht man unter „erstklassigem Objekt“?

Lesezeit: 6 Minuten

Was versteht man unter „erstklassigem Objekt
ProfK

In einer kürzlich gestellten Frage erhielt ich Vorschläge, unter anderem über den Aspekt von JavaScript zu sprechen, wo Funktionen „erstklassige“ Objekte sind. Was bedeutet in diesem Zusammenhang die „erste Klasse“ im Gegensatz zu anderen Objekten?

EDIT (Jörg W Mittag): Exaktes Duplikat: “Was ist ein erstklassiges Programmierkonstrukt?”

  • mögliches Duplikat von Was ist ein erstklassiges Programmierkonstrukt?

    – Jörg W Mittag

    25. Januar 2011 um 13:44 Uhr

1646318715 932 Was versteht man unter „erstklassigem Objekt
Sander Versluys

Zitieren Wikipedia:

In der Informatik spricht man von einer Programmiersprache, die erstklassige Funktionen (oder Funktionsliterale) unterstützt, wenn sie Funktionen als erstklassige Objekte behandelt. Konkret bedeutet dies, dass die Sprache das Erstellen neuer Funktionen während der Ausführung eines Programms unterstützt, sie in Datenstrukturen speichert, sie als Argumente an andere Funktionen weitergibt und sie als Werte anderer Funktionen zurückgibt.

Auch diese Seite veranschaulicht es schön:

Wirklich, genau wie jede andere Variable

  • Eine Funktion ist eine Instanz des Objekttyps
  • Eine Funktion kann Eigenschaften haben und hat einen Link zurück zu ihrer Konstruktormethode
  • Sie können die Funktion in einer Variablen speichern
  • Sie können die Funktion als Parameter an eine andere Funktion übergeben
  • Sie können die Funktion von einer Funktion zurückgeben

Lesen Sie auch den Kommentar von TrayMan, interessant …

  • Wikipedia zu zitieren ist schön und gut, aber die Beschreibung ist in einer Sprache für Wissenschaftler und nicht für Geeks geschrieben. Was zum Teufel hat das alles überhaupt zu bedeuten? Der letzte Satz in diesem Zitat ist vage.

    – Sprich

    1. April 2009 um 12:08 Uhr

  • @Spoike, wahr … bereitgestellte Javascript-Ressource.

    – Sander Versluys

    1. April 2009 um 12:11 Uhr

  • Praktischerweise hat eine Sprache, die erstklassige Funktionen hat, auch Funktionen höherer Ordnung, anstatt auf Funktionen erster Ordnung beschränkt zu sein, was erstklassige Funktionen ausschließen würde. (Obwohl höhere Ordnung, nicht erstklassig möglich ist.)

    – TrayMan

    1. April 2009 um 12:20 Uhr

  • Der Link funktioniert nicht mehr (nach ca. 8 Jahren).

    – doppeltOrt

    19. September 2017 um 17:21 Uhr

  • @doubleOrt – Sie finden den Link auf der Wayback-Maschine: web.archive.org/web/20190419174030/http://helephant.com/2008/08/…

    – efw

    8. November 2019 um 21:17 Uhr


Die Vorstellung von “erstklassige Funktionen” in einer Programmiersprache wurde von einem britischen Informatiker eingeführt Christoph Strachey In den 1960ern. Die bekannteste Formulierung dieses Prinzips ist wohl in Struktur und Interpretation von Computerprogrammen von Gerald Jay Sussman und Harry Abelson:

  • Sie können durch Variablen benannt werden.
  • Sie können als Argumente an Prozeduren übergeben werden.
  • Sie können als Ergebnis von Verfahren zurückgegeben werden.
  • Sie können in Datenstrukturen aufgenommen werden.

Im Grunde bedeutet es, 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 also, dass Sie alles können, was Sie mit einer Ganzzahl, einem String, einem Array oder einem anderen Objekt tun können Auch mit Funktionen machen.

Was versteht man unter „erstklassigem Objekt
Arman

Vollständigere Zustimmung zu Strachey-Sussman-Abelsons Formulierung. Wenn Ihre Sprache also ein solches Konstrukt unterstützt, dann haben Sie eine Funktion als First-Class Sprache 🙂

var men = function (objectOfAdmiration) {
  return objectOfAdmiration();
};
men.isSweetHeart = true;

var women = function (objectOfAdmiration) {
  return objectOfAdmiration();
};
women.isSweetHeart = true;

var aliens = function (objectOfAdmiration) {
  return objectOfAdmiration();
};

function like(obj){
  if (obj.isSweetHeart) {
      return function (){ return "Holy TRUE!"}; 
  }
  else {
      return function (){ return "Holy CRAP!"};
  }
}

alert("Men like women is " + men(like(women))); // -> "Holly TRUE!"
alert("Women like men is " + women(like(men))); // -> "Holly TRUE!"

alert("Men like aliens is " + men(like(aliens))); // -> "Holly CRAP!"
alert("Aliens like women is " + aliens(like(women))); // -> "Holly TRUE!" :)

//women(like(aliens)); //  Who knows? Life is sometimes so unpredictable... :)

Kurz gesagt, alles ist ein erstklassiges Objekt, wenn es in der Sprache als eine Art von Objekt oder Objekttyp zur Zustandsmanipulation fungiert. Einfach etwas, mit dem Sie arbeiten und gleichzeitig Anweisungen weitergeben und 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.

1646318717 312 Was versteht man unter „erstklassigem Objekt
Sagar Munjal

In Javascript sind Funktionen erstklassige Objekte, weil sie viel mehr können als Objekte.

  • Eine Funktion ist eine Instanz eines Objekttyps.

Function instanceof Object //returns true

Wie ein Objekt kann eine Funktion Eigenschaften haben und einen Link zurück zu ihrer Konstruktorfunktion haben.

 var o = {}; // empty object 'o'
    o.a = 1 ; 
    o.b = 2 ; 

    console.log(o.a); // 1
    console.log(o.b); // 2 


    function foo(){};
    foo.a = 3 ; 
    foo.b = 4 ; 

    console.log(foo.a);  // logs 3
    console.log(foo.b);  // logs 4 
  • Funktionen können als Wert in einer Variablen gespeichert werden.
  var foo = function(){}; 
    console.log(foo); // function(){}
  • Funktionen können als Argumente an andere Funktionen übergeben werden
function callback (foo){
      foo();
}

callback(function(){console.log('Successfuly invoked as an argument inside function callback')})
  • Sie können eine Funktion von einer Funktion zurückgeben
 function foo(){
	    return function(){console.log('working!')};
    }

    var bar = foo();
    bar(); // working!
  • Kann als Referenz in einer Variablen gespeichert werden.
    var sum = function (a,b){return a+b}  
    sum(4,4);

1646318718 979 Was versteht man unter „erstklassigem Objekt
Markus Adler

JavaScript-Funktionen sind erstklassige Funktionen, dh Funktionen und Objekte werden als dasselbe behandelt. Funktionen können als Variable innerhalb eines Objekts oder eines Arrays gespeichert sowie als Argument übergeben oder von einer anderen Funktion zurückgegeben werden. Das macht die Funktion zu „erstklassigen Bürgern in JavaScript“

JavaScript verwendet eine wörtliche Notationssyntax, die es schwierig macht, die Tatsache vollständig zu verstehen, dass Funktionen in JavaScript Objekte sind.

Zum Beispiel..

var youObj1 = new Object();
// or
var youObj1 = {};

beide Erklärungen sind gleichwertig. Durch die Nutzung new Wir rufen die Konstruktorfunktion eines Objekts auf. Auch durch den Einsatz {} (JavaScript-Verknüpfung namens Literale) rufen wir die Konstruktionsfunktion eines Objekts auf. {} ist nur eine kürzere Darstellung zum Instanziieren des Konstruktors.

Die meisten Sprachen verwendet new Schlüsselwort, um ein Objekt zu erstellen, also erstellen wir ein JavaScript-Objekt.

var myFunction = new Function("a",  "b", 'return a_b');

Wie Sie sehen, haben wir einen Objektnamen erstellt Funktion.

Erstellen der gleichen Objektnamenfunktion mit dem JavaScript-Funktionsausdruck..

var myFunction = function myFunction(a,b) {
    return a+b;
}

Los geht’s, wir haben gerade eine Objektnamenfunktion erstellt.

1646318718 817 Was versteht man unter „erstklassigem Objekt
Yuval Adam

Einfache Prüfung. Wenn Sie dies in Ihrer Sprache tun können (Python als Beispiel):

def double(x):
    return x*x

f = double

print f(5) #prints 25

Ihre Sprache behandelt Funktionen als erstklassige Objekte.

1646318719 763 Was versteht man unter „erstklassigem Objekt
Arpit

Die Definition auf der Mozilla-Website ist prägnant und klar. Nach ihnen,

In JavaScript sind Funktionen erstklassige Objekte, weil sie wie jedes andere Objekt Eigenschaften und Methoden haben können. Was sie von anderen Objekten unterscheidet, ist, dass Funktionen aufgerufen werden können. Kurz gesagt, sie sind Funktionsobjekte.

Und

Eine Funktion ist ein “Unterprogramm”, das durch externen Code (oder internen im Falle einer Rekursion) zu der Funktion aufgerufen werden kann. Wie das Programm selbst besteht eine Funktion aus einer Folge von Anweisungen, die als Funktionskörper bezeichnet werden. Werte können an eine Funktion übergeben werden, und die Funktion gibt einen Wert zurück.

924440cookie-checkWas versteht man unter „erstklassigem Objekt“?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy