Scoping of Handlers
A handler definition may appear only at the top level of a script or script object. (Therefore you can’t nest handlers, except indirectly, by having a handler inside a script object inside a handler.)
A handler is visible to code in the scope where it is defined, even code that precedes the definition (see Section 4.4.1). For example:
myHandler( ) -- Howdy
on myHandler( )
display dialog "Howdy"
end myHandler
A handler is visible to scopes within the scope where it is defined. Remarkably, this works even before the handler is defined. For example:
script x
myHandler( )
end script
run x -- Howdy
on myHandler( )
display dialog "Howdy"
end myHandler
A handler is visible on demand from outside the script object where
it is defined. Code that can see a script object can refer to its
handlers, using essentially the same two kinds of syntax by which it
would refer to its properties (see Section 7.5.1). You
don’t need to use the word its
to
call a script object’s handler from within a tell
block addressed to that script object. This example illustrates both
kinds of syntax:
script x on myHandler( ) display dialog "Howdy" end myHandler end script x's myHandler( ) -- Howdy tell x myHandler( ) -- Howdy end tell
The comparison between handlers and properties is apt. The scoping of handlers is very similar to the scoping of properties. They are both top-level entities of a script or script object; they are visible on demand wherever that script or script object is visible; and ...
Get AppleScript: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.