2017-08-03 3 views
0

Je l'écriture de scripts XP-VAPI dans HP ALM et certains objets de l'OTA-API utiliser une construction qui ressemble à ceci:Comment définir la propriété expando de JScript avec Javascript/ECMA?

object.Field('nameOfField') = newValue; 

Il est évident que ce n'est pas valide en Javascript. Mais parce que j'utilise un IDE qui vérifie la syntaxe selon les normes ECMA, ceci est montré comme une erreur de syntaxe. Je me demande donc s'il existe un moyen de faire cette tâche avec une syntaxe Javascript appropriée? J'ai essayé les variantes suivantes sans succès:

CurrentRun.Field("RN_USER_13").value = 'pfusch'; 
CurrentRun.Field.RN_USER_13 = 'pfusch'; 
CurrentRun.Field["RN_USER_13"] = 'pfusch'; 
CurrentRun["RN_USER_13"] = 'pfusch'; 
CurrentRun.RN_USER_13 = 'pfusch'; 
+0

Qu'est-ce wasn pas réussi? Quelle est la valeur réelle de CurrentRun? – Scott

+0

CurrentRun est un objet avec une propriété expando nommée 'RN_USER_13'. Le problème est que la seule façon de définir la valeur de cette propriété est cette horrible syntaxe JScript qui n'est pas autorisée en Javascript. La chose amusante est que Field() ne fournit pas un objet ou une référence mais juste une propriété en lecture/écriture. Les variantes listées à la fin n'ont donc pas réussi à définir la valeur de cette propriété. – AlvaHenrik

+0

Ils utilisent une telle construction? Hou la la! S'il vous plaît poster une réponse à [cette question] (https://stackoverflow.com/q/13124417/1048572) – Bergi

Répondre

0

Essayez ceci:

Object.defineProperty(CurrentRun,'RN_USER_13',{ 
    enumerable: true, 
    configurable: true, 
    writable: true, 
    value: 'pfusch' 
}) 

Here est une référence pour Object.defineProperty et voici un grand poste SO sur ce sujet: how to use javascript Object.defineProperty