JavaScript - Comment puis-je définir une référence d'objet à null à partir d'une fonction?
Je me demande si c'est encore possible. Fondamentalement, j'ai quelques objets que je passe à une fonction, et, sous certaines conditions, je veux que cette fonction pour définir l'objet à null.
Ex.
var o = {'val' : 0};
f = function(v)
{
v = null;
};
f(o); //Would like this to set 'o' to null
Malheureusement, il semble que je ne peut définir la fonction de l'argument null. Après l'appel de la fonction " o " désigne toujours un objet.
Donc, est-il possible de faire cela? Et si oui, comment?
OriginalL'auteur Arkia | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez modifier la valeur de
o
quandf(o)
est appelé, vous avez deux options:1) Vous pouvez avoir
f(o)
de retour avec une nouvelle valeur pour o et affectez-le à o comme ceci:À l'intérieur de
f()
, vous renvoyer une nouvelle valeur pouro
.2) o dans un autre objet et passer une référence à cet objet conteneur dans
f()
.Le langage javascript n'ont pas de véritable pointeurs comme en C/C++ qui vous permettent de passer un pointeur vers une variable, puis retour par le pointeur pour modifier la valeur de cette variable à partir de l'intérieur de la fonction. Au lieu de cela, vous devez le faire de l'une de ces deux façons. Les objets et les tableaux sont passés par référence de sorte que vous pouvez atteindre de nouveau dans l'objet d'origine à partir de la fonction.
OriginalL'auteur jfriend00
Vous ne savez pas exactement à l'utilisation réelle de cela, mais si vous restructuré un peu, vous pourriez faire ceci:
OriginalL'auteur James Montagne
JavaScript passe toujours des arguments de la fonction "par valeur". Ce qui signifie qu'une fonction ne peut pas changer ce que la variable en dehors de la fonction.
Toutefois, lorsque vous passez un objet à une fonction de la "valeur" qui est passé est une référence à l'objet réel, et non une copie de l'objet. Ainsi, bien que vous ne pouvez pas définir de l'extérieur de la variable à null ou à un autre objet, vous pouvez modifier le contenu de cet objet. Ce qui signifie que vous pouvez faire quelque chose comme ceci:
Évidemment la création d'un tas d'objets conteneur de sorte que vous pouvez les transmettre à des fonctions n'est pas très jolie, mais c'est une façon de le faire.
Mais je vous conseille d'aller avec James Montagne de la suggestion d'avoir le retour de la fonction d'un objet ou nulle et l'affectation du résultat de votre variable.
OriginalL'auteur nnnnnn
Je suis venu ici avec le même problème. Bien que le wrapper de répondre à des œuvres, c'est moche, et ma fonction est asynchrone, donc je ne peux pas retourner de valeur null.
La raison pour laquelle je voulais
o
êtrenull
est que plus tard, j'ai utiliserif (o) //do something
, ce qui explique peut-être pourquoi l'OP et d'autres personnes que vous voulez définir commenull
. En tant que tel, ma solution, bien que n'étant pas une réponse à la question exacte, a étéOriginalL'auteur willlma
La meilleure façon de le faire serait de créer une variable globale appelée NULL et set null
Ensuite, vous pouvez définir une variable existante NULLE sans modification de l'objet d'origine.
OriginalL'auteur Sivx