Comment passer une variable par référence dans le javascript? Lire des données à partir d'ActiveX fonction qui retourne qu'une seule valeur
J'ai un objet ActiveX qui je veux utiliser dans le navigateur (javascript).
Il y a une fonction que je veux appeler. Son prototype est:
function TOPOSFiscalPrinter.DirectIO(Command: Integer; var pData: Integer;
var pString: WideString): Integer;
Donc, la fonction renvoie les trois valeurs: code de résultat, pData et pString;
En javascript, la fonction ne met pas à jour les variables pData et pString;
function test()
{
var d=1, s="DIRECIO:";
var code = opos.DirectIO(1024, d, s);
alert(d); alert(s);
}
Variables d
et s
ne sont pas mis à jour. Ils doivent être d=0 et s="ED123456";
Comment lire les données à partir d'une fonction qui retourne qu'une seule valeur en javascript?
MODIFIER
Apparemment, Javascript passe toujours de paramètres par valeur, jamais par référence.
Est-ce que je peux faire pour passer des valeurs par référence dans le Javascript, ou
Je vais devoir changer mon design se fonder uniquement sur les paramètres passés par
de valeur et sur les valeurs de retour.
OriginalL'auteur Stanislav Stoyanov | 2009-11-13
Vous devez vous connecter pour publier un commentaire.
Types primitifs, principalement les chaînes de/nombre de/les booléens sont passés par valeur à des fins d'efficacité. Des objets tels que les fonctions, les objets, les tableaux et les autres sont passés par référence. Vous pouvez créer un objet et de le transmettre, par exemple { d:1, s:'répertoires'}, puis modifier les valeurs parce que vous êtes en passant une référence.
Veuillez coller code de ce que vous faites.
En passant, je ne veux pas créer un nouvel Objet pour chaque variable, je veux dire faire un objet littéral comme
var obj = { d: 'string', l: 'otherthing' }
et passerobj
...function test() { var d = new Object(1); var s = new Object('DIRECTIO:'); opos.DirectIO(1024, d, s); // ceci est mon activex func d'alerte(d); alert(s); } Après appel d=1; s='DIRECTIO:'; Pas de changement. d doit être d=0; s devrait s='ED123456'; j'ai aussi essayé var d = new Object(); d.valeur = 1; var s = new Objevt(); s = 'DIRECTIO:'; Mais pas de chance dans la.
OriginalL'auteur meder omuraliev
Il n'y a pas de support pour le paramètre de sortie en JavaScript. Pack de ce que vous voulez revenir à un objet automation, attribuer des valeurs de ses propriétés et de revenir, ou si votre valeur de retour est déjà occupé, créez une classe qui possède des propriétés que vous pouvez attribuer à votre ActiveX et ajouter un paramètre dont le type est la classe. Dans votre ActiveX, vous pouvez utiliser IDispatch/Ex pour obtenir/définir les propriétés.
OriginalL'auteur Sheng Jiang 蒋晟
Faire une variable globale ou d'un objet. Ou si vous êtes inquiet au sujet d'autres funcs accès et modification des variables puis faire un singleton. L'autre option est de retourner un objet. Comme ce
OriginalL'auteur
Primitives comme
int
's oufloat
's sont toujours passés par valeur pour des raisons de performances, mais vous pouvez simplement les envelopper dans par exemple unFloat32Array
avec un seul élément:OriginalL'auteur lama12345