2010-10-05 17 views
1

J'ai le problème suivant avec des objets dans actionscript3:objet Nullify passé à une fonction

var o:Object = new Object(); 
destroyObject(o); 
trace(o); // [object Object] 

function destroyObject(obj:Object):void{ 
    obj = null; 
    trace(obj); // null 
} 

Puisque les objets sont passés par référence dans AS3 Je suppose que le code précédent changerait o à null, mais il n » t. Quelqu'un pourrait-il m'expliquer pourquoi?

Merci.

Répondre

2

Les objets sont transmis par référence, mais la référence elle-même est transmise par valeur. L'instruction obj = null définit le paramètre obj sur null, ce qui signifie que obj ne fait plus référence à l'objet, mais que l'objet lui-même est toujours présent et qu'il est toujours référencé par la variable o lorsque destroyObject renvoie.

+0

merci, donc, en d'autres termes, je ne peux pas le faire fonctionner à l'intérieur de la fonction, il doit être à l'extérieur? –

+2

correct. l'objet sera libéré lorsque toutes les références seront supprimées, donc vous devrez d'abord supprimer la référence "o". – UltimateBrent

+1

Je pense qu'il est appelé "passé par la valeur", même que dans Java. –