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

TildelingAdfærd
p = Ref(other)Rebinder p til det andet objekt
p = 5 når p er en referenceSkriver 5 til det refererede objekt og bevarer handle
p = Null() når p er en referenceRydder det refererede objekts værdi og bevarer handle
p = Ref(Null())Frakobler p og giver variablen en null-værdi
p = 5 efter frakoblingSæ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