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

TilldelningBeteende
p = Ref(other)Koppla om p till det andra objektet
p = 5 när p är en referensSkriv 5 till det refererade objektet och behåll handlet
p = Null() när p är en referensRensa 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ånkopplingSä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