Inheritance
Script objects may be linked into a chain of inheritance . One script object inherits from another if the second script is the parent of the first. Then, suppose an attempt is made to access a top-level entity of the first script object (using the special syntax described in "Accessing Top-Level Entities," earlier in this chapter). If the script object has no such top-level entity, the attempt is passed along to its parent to see whether it has such a top-level entity.
It turns out that every script object has a parent
property. This property is set for you if you don't set it (and so there is always an inheritance chain, even though you might not be aware of this). To link two script objects explicitly into a chain of inheritance, initialize the
parent
property of one to point to the other.
Tip
The parent
property may be set only through initialization (that is, through a script property declaration). You cannot use copy
or set
to set it.
In this example, we explicitly arrange two script objects, mommy
and baby
, into an inheritance chain (by initializing baby
's parent
property). We can then tell baby
to execute a handler that it doesn't have, but which mommy
does have. Here we go:
script mommy
on talk( )
display dialog "How do you do?"
end talk
end script
script baby
property parent : mommy
end script
baby's talk( ) -- How do you do?
In that example, we told the child from outside to execute a handler that it doesn't have but the parent does. The child can also tell itself ...
Get AppleScript: The Definitive Guide, 2nd Edition 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.