FormCalc-värden och referenser
Allmän FormCalc-körning med EnableJavaScript implementerar explicita objektreferenser via Ref(value), medan vanliga variabeldeklarationer och vanliga funktionsargument kopierar objektvärden
Ref-parametrar och resultat
En accessor till ett befintligt formulärobjekt blir ett objekt-handle; ett befintligt handle som skickas in behåller sin identitet, ett null-argument ger ett null-handle, och övriga skalära argument returnerar sitt skalära värde
Referenser tillhandahåller vanliga nodegenskaper och metoder som rawValue, parent, name, resolveNode och resolveNodes
Skalära inbyggda argument avrefererar handles, aggregatfunktioner konsumerar refererade värden, och null-handles behåller null-aritmetik och strängsemantik; Exists returnerar 0 för ett null-handle
var copied = target
target = 8
other = copied
var p = Ref(target)
p = 9
var q = p
q = 10
Det första blocket bevarar targets tidigare värde i copied; det andra blocket skriver target via två handles som refererar samma objekt
Tilldelning och frånkoppling
| Tilldelning | Beteende |
|---|---|
p = Ref(other) | Koppla om p till det andra objektet |
p = 5 när p är en referens | Skriv 5 till det refererade objektet och behåll handlet |
p = Null() när p är en referens | Rensa det refererade objektets värde och behåll handlet |
p = Ref(Null()) | Koppla från p och ge variabeln värdet null |
p = 5 efter frånkoppling | Sätt själva variabeln till 5 |
Omdeklarationer av variabler och argument till användarfunktioner följer samma regler för kopiering respektive referens; funktioner kan ta emot, returnera och kvalificera explicita referenser
Jämlikhet och identitet
Jämlikhet och ojämlikhet jämför stabil objektidentitet när båda operanderna är referenser; vanliga objektoperander jämför sina värden, och resultatet är numeriskt 1 eller 0
Två fält med samma text är lika till värdet, men Ref(first) eq Ref(second) returnerar 0 när det är olika fält
Upprepade förekomster och bevarade handles
Ett skriptobjekt kan behålla ett explicit handle över händelser; handlet slår upp den aktuella formulärnoden via stabil identitet, så att omordning av en upprepad subform bevarar den valda förekomsten
Att använda ett handle efter att dess förekomst tagits bort ger ett fel; runtime-transaktioner återställer förekomstantal, fältvärden och skriptobjektets tillstånd när det felet avbryter händelsen
Runtime:en tillhandahåller stabila template- och dataidentiteter automatiskt; direkta händelseanropare som utelämnar TXFAEventBinding.Identity får en unik identitet baserad på bindningsindex och bör ange explicita stabila identiteter när bindningsordningen ändras
Migration
Tidigare allmän körning behöll vanliga nodobjekt i variabeldeklarationer; ersätt var p=target med var p=Ref(target) när p ska förbli ett nod-handle
FormCalc-jämlikhet i allmän körning ger nu 1 och 0 i stället för boolesk JavaScript-text; kod som konkatenerade jämlikhetsresultat bör räkna med den numeriska representationen
Relaterade API:er
Dynamisk Eval, HPDFXFACompileFormCalcEvent, TXFAEventBinding och Interaktiv XFA-runtime