FormCalc værdier og referencer
Generel FormCalc-afvikling med EnableJavaScript implementerer eksplicitte objektreferencer gennem Ref(value), mens almindelige variabeldeklarationer og almindelige funktionsargumenter kopierer objektværdier
Ref-parametre og resultat
En accessor til et eksisterende formularobjekt bliver et objekt-handle; at sende et eksisterende handle bevarer dets identitet, et null-argument giver et null-handle, og andre scalar-argumenter returnerer deres scalar-værdi
Referencer leverer almindelige node-properties og -metoder som rawValue, parent, name, resolveNode og resolveNodes
Scalar indbyggede argumenter derefererer handles, aggregerede funktioner forbruger refererede værdier, og null-handles beholder null-aritmetik- og strengsemantik; Exists returnerer 0 for et null-handle
var copied = target
target = 8
other = copied
var p = Ref(target)
p = 9
var q = p
q = 10
Den første blok bevarer targets tidligere værdi i copied; den anden blok skriver target gennem to handles, der refererer samme objekt
Tildeling og frakobling
| Tildeling | Adfærd |
|---|---|
p = Ref(other) | Rebinder p til det andet objekt |
p = 5 når p er en reference | Skriver 5 til det refererede objekt og bevarer handle |
p = Null() når p er en reference | Rydder det refererede objekts værdi og bevarer handle |
p = Ref(Null()) | Frakobler p og giver variablen en null-værdi |
p = 5 efter frakobling | Sætter selve variablen til 5 |
Variabel-redeklarationer og brugerfunktionsargumenter anvender samme kopi- eller referenceregler; funktioner kan modtage, returnere og kvalificere eksplicitte referencer
Lighed og identitet
Lighed og ulighed sammenligner stabil objektidentitet, når begge operander er referencer; almindelige objektoperander sammenligner deres værdier, og resultatet er numerisk 1 eller 0
To felter med samme tekst sammenlignes lige by value, men Ref(first) eq Ref(second) returnerer 0, når de er forskellige felter
Gentagne instances og tilbageholdte handles
Et script-objekt kan tilbageholde et eksplicit handle på tværs af events; handle opløser den aktuelle formularnode efter stabil identitet, så omordning af en gentaget subform bevarer den valgte occurrence
Brug af et handle efter dets occurrence er fjernet udløser en fejl; runtime-transaktioner gendanner occurrence-antal, feltværdier og script-object-tilstand, når den fejl afbryder eventet
Runtime'en leverer stabile skabelon- og dataidentiteter automatisk; direkte event-kaldere, der udelader TXFAEventBinding.Identity, modtager en unik binding-indeks-identitet og bør levere eksplicitte stabile identiteter, når bindingsrækkefølgen ændres
Migration
Tidligere generel afvikling tilbageholdt almindelige nodeobjekter i variabeldeklarationer; erstat var p=target med var p=Ref(target), når p skal forblive et node-handle
Generel FormCalc lighedsresultater bruger nu 1 og 0 i stedet for JavaScript boolesk tekst; kode, der konkatenerede lighedsresultater, bør forvente den numeriske repræsentation
Relaterede API'er
Dynamisk Eval, HPDFXFACompileFormCalcEvent, TXFAEventBinding og Interactive XFA Runtime