Inheritance

Script objects may be linked into a chain of inheritance . If one script object inherits from another, the second is said to be the parent of the first. If a message is sent to a script object and it doesn’t know how to obey it, the message is passed along to its parent to see whether it can obey it. A message here is simply an attempt to access any top-level entity.

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. 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 to execute such a handler:

 script mommy
        on talk(  )
                display dialog "How do you do?"
        end talk
end script
script baby
        property parent : mommy
        talk(  )
end script
run baby -- How do you do?

Getting and setting properties works the same way. In this example, we get and set the value of a property of baby that baby doesn’t have:

script mommy property address ...

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.