Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Javascript/jQuery Object als Funktionsparameter

Empfohlene Antworten

Veröffentlicht

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. :)

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).

  • Autor

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. :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.