FormCalc Values and References

Ogólne wykonanie FormCalc z EnableJavaScript implementuje jawne referencje obiektów przez Ref(value), podczas gdy zwykłe deklaracje zmiennych i zwykłe argumenty funkcji kopiują wartości obiektów

Parametry i wynik Ref

Akcesor istniejącego obiektu formularza staje się uchwytem obiektu; przekazanie istniejącego uchwytu zachowuje jego tożsamość, argument null daje uchwyt null, a inne argumenty skalarne zwracają swoją wartość skalarną

Referencje dostarczają zwykłe właściwości i metody węzłów, takie jak rawValue, parent, name, resolveNode i resolveNodes

Skalarne argumenty wbudowane dereferencjują uchwyty, funkcje agregujące konsumują referencjonowane wartości, a uchwyty null zachowują semantykę arytmetyczną i łańcuchową null; Exists zwraca 0 dla uchwytu null

var copied = target
target = 8
other = copied

var p = Ref(target)
p = 9
var q = p
q = 10

Pierwszy blok zachowuje poprzednią wartość target w copied; drugi blok zapisuje target przez dwa uchwyty odnoszące się do tego samego obiektu

Przypisanie i odłączenie

AssignmentBehavior
p = Ref(other)Rebinduje p do obiektu other
p = 5 gdy p jest referencjąZapisuje 5 do referencjonowanego obiektu i zachowuje uchwyt
p = Null() gdy p jest referencjąCzyści wartość referencjonowanego obiektu i zachowuje uchwyt
p = Ref(Null())Odłącza p i nadaje zmiennej wartość null
p = 5 po odłączeniuUstawia samą zmienną na 5

Ponowne deklaracje zmiennych i argumenty funkcji użytkownika stosują te same reguły kopii albo referencji; funkcje mogą otrzymywać, zwracać i kwalifikować jawne referencje

Równość i tożsamość

Równość i nierówność porównują stabilną tożsamość obiektów, gdy oba operandy są referencjami; zwykłe operandy obiektowe porównują swoje wartości, a wynik to numeryczne 1 albo 0

Dwa pola zawierające ten sam tekst są równe przez wartość, ale Ref(first) eq Ref(second) zwraca 0, gdy to różne pola

Powtórzone instancje i zapamiętane uchwyty

Obiekt skryptowy może zachować jawny uchwyt między zdarzeniami; uchwyt rozwiązuje bieżący węzeł formularza po stabilnej tożsamości, więc przestawienie powtórzonego subformularza zachowuje wybrane wystąpienie

Użycie uchwytu po usunięciu jego wystąpienia podnosi błąd; transakcje runtime przywracają liczbę wystąpień, wartości pól i stan obiektów skryptowych, gdy ten błąd przerywa zdarzenie

Runtime dostarcza stabilne tożsamości szablonu i danych automatycznie; bezpośredni wywołujący zdarzenia pomijający TXFAEventBinding.Identity otrzymują unikalną tożsamość indeksu bindowania i powinni dostarczać jawne stabilne tożsamości, gdy kolejność bindowań się zmienia

Migracja

Wcześniejsze ogólne wykonanie zachowywało zwykłe obiekty węzłów w deklaracjach zmiennych; zamień var p=target na var p=Ref(target), gdy p ma pozostać uchwytem węzła

Wyniki równości ogólnego FormCalc używają teraz 1 i 0 zamiast tekstu boolowskiego JavaScript; kod, który konkatenował wyniki równości, powinien oczekiwać reprezentacji numerycznej

Powiązane API

Dynamic Eval, HPDFXFACompileFormCalcEvent, TXFAEventBinding i Interaktywny runtime XFA