AppleScript's global properties
are essentially predefined
variables; they are named values that exist automatically, without your code having to define them. Your code can access them because they are in scope
in every script, thanks to the inheritance mechanism (see "Inheritance" in Chapter 8). Your script as a whole is a script object whose parent, by default, is another script object called AppleScript
, which represents the AppleScript scripting component instance. These predefined variables are properties of the AppleScript
script object. Thus the inheritance mechanism makes them global; no matter where you are when you access one of them, it is sought as a top-level entity up the parent chain until the AppleScript
script object is reached. Even if the name
of a global property is overshadowed in some scope of your script, it can still be accessed through the name AppleScript
. For example:
property pi : 3
AppleScript's pi -- 3.14159265359
The global properties are like any other script properties, and as such:
They are settable.
Their values are shared by all scripts running under this instance of the AppleScript scripting component.
They persist along with this instance of the AppleScript scripting component.
The status of the global script properties is thus somewhat counterintuitive. You might have thought values such as pi
and tab
would remain constant. That's not the case. You can change the value of one of them, and then this script and any other scripts that run under the same AppleScript scripting component instance will share this new value. This mechanism introduces a certain fragility, because if a script assumes that these properties always have their default values, it can break. The only thing standing between you, the programmer, and this fragility is a sort of tacit agreement about which global script properties it is customary to change. It is common practice to change the value of the text item delimiters
; it is not common practice to change things like pi
or tab
. This is rather a silly state of affairs but there's nothing that can be done about it now.