Zum Inhalt springen

Javascript/jQuery Object als Funktionsparameter


Thomas2903

Empfohlene Beiträge

hallo!

Ich habe folgendes Problem:

Ich will ein lokal definiertes Object in einer Funktion, einer anderen Funktion als Parameter Mitgeben.

Bis jetzt dachte ich immer, daß bei Javascript ausschließlich Call-by-Value bei der Parameterübergabe verwendet wird.

Mein Problem ist jetzt, daß in der neuen Funktion das Objekt dann nicht mehr da ist, bzw ich nichts mehr damit machen kann.

Es wäre super wenn hier mir jemand mit einem Tipp helfen kann, wie ich das lösen kann.

Danke. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bis jetzt dachte ich immer, daß bei Javascript ausschließlich Call-by-Value bei der Parameterübergabe verwendet wird.

Ja. Aber Achtung(!): Call by Value bei Objekten bedeutet, dass die Referenz auf das Objekt per value übertragen wird:


var personA={
name:"Meier",
vorname:"Klaus"
};

function changePerson(person){
person.vorname="Michael";
}

changePerson(personA);
console.log(personA);
[/php]

Die Ausgabe ist [b]Object {name: "Meier", vorname: "Michael"}[/b]

Wenn tatsächlich eine Kopie angelegt werden soll, dann empfiehlt es sich mit [i]extend[/i] zu arbeiten, einer Funktion, die in vielen Javascript-Bibliotheken implementiert ist (e.g. jQuery https://github.com/jquery/jquery/blob/master/src/core.js Zeile 265ff ):

[php]
var personA={
name:"Meier",
vorname:"Klaus"
};

function changePerson(person){
person.vorname="Michael";
}
changePerson($.extend({},personA));
console.log(personA);

Dabei wird das Objekt personA vollständig in ein leeres Objekt übertragen (was der gemeine C-Programmierer meint, wenn er glaubt, etwas würde per value übertragen werden).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, das Problem habe ich bereits gelöst. Ich habe wirklich die Referenz verloren. Aus dem Parameter wurde bei der Übergabe nur ein (object Object), aber leer ohne Inhalt. Du hast recht, auch wenn bei Call-by-Value nur die Referenz kopiert wird, dann bringt mir das nicht, wenn dann dahinter nichts mehr da ist. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...