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
| Assignment | Behavior |
|---|---|
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łączeniu | Ustawia 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