Question

Je veux mettre directement à jour l'objet référé par un argument de la fonction dans le cadre de cette fonction. Un exemple:

var thisObj = { "val" : "original value" }; 
function modFunc(objRef) {
    objRef = { "val" : "modified" };
    console.log(objRef);  // { "val" : "modified" }
}
console.log(thisObj);  // { "val" : "original value" };

Je comprends pourquoi cela se produit et je me rends compte que j'aurais pu utiliser

    objRef.val = "modified";

dans modfunc pour effectuer la modification. Pour des raisons spécifiques à mon projet, j'aimerais pouvoir accomplir quelque chose comme:

function modFunc(objRef) {
    objRef.self = { "val" : "modified" };  // Of course this will not work, 
    // but is there an Object property or method that allows one to access 
    // the actual memory pointer being referenced by the variable?
}

où je peux spécifier que je veux modifier directement ThiObj pour référencer le nouvel objet que j'instécie dans Modfunc. Est-ce possible? Je sais qu'il y a des outils tels que Object.Assign () que je pourrais utiliser pour le faire, mais ce n'est pas pris en charge universellement, ou des outils de bibliothèque comme Linge () que je pourrais utiliser si j'ai importé la bibliothèque, mais il semble que ce soit Syntaxe natale qui me permettrait de le faire et je n'ai tout simplement pas été capable de le trouver? ..

J'ai passé du temps à regarder, sinon j'essaie de ne pas poser de questions comme celle-ci. Je sais aussi qu'il y a des postes similaires à celui-ci, mais rien exactement comme ce que je demande et je n'ai pas la «réputation» ici pour pouvoir répondre directement aux postes, etc., donc je n'ai donc pas vu de moyen de concentrer la discussion. Quoi qu'il en soit, merci pour une aide!

Était-ce utile?

La solution

Qu'est-ce que vous demandez est essentiellement un mécanisme Call-By-Référence , ou la possibilité de créer explicitement une référence à une variable.En JavaScript, ce n'est pas possible.Vous pouvez (comme vous le souhaitez) transmettre des références à objets et utilisez celles-ci pour modifier les valeurs de la propriété d'objet (et ajouter et supprimer des propriétés, même), mais ce n'est pas tout à fait la même chose.

Autres conseils

Ce serait une véritable affectation par référence que JavaScript ne prend pas en charge.Il ne prend en charge que le type d'affectation fausse et mal comprise par référence.

Depuis que vous ne pouvez pas traiter avec des références, vous pouvez simplement faire de objRef une variable globale et ne pas le transmettre comme une ARG du tout.Ensuite, vous mettez à jour l'objet d'origine.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top