Руководство по actionscript. часть 1, стр. 078
Теперь перейдем к рассмотрению следующего вопроса, касающегося методов экземпляра, — связанных методов.
Связанные методы
В языке ActionScript сам метод может рассматриваться как значение. Другими словами, метод может быть присвоен переменной, передан в функцию или другой метод, а также возвращен из функции или другого метода.
Например, в следующем коде создается новый объект класса VirtualPet, после чего локальной переменной consume присваивается метод eat ( ) созданного объекта. Обратите внимание, что в операторе присваивания после имени метода не ставятся круглые скобки ( ) вызова метода. В результате переменной с о n s ume присваивается сам метод, а не его возвращаемое значение.
package zoo { public class VirtualZoo { private var pet:
public function VirtualZoo ( ) { pet = new VirtualPet(«Stan»): // Присваивание переменной метода eat( ) var consume = pet. eat;
}
Метод, присвоенный переменной, может быть вызван через эту переменную стандартным оператором круглых скобок — ( ). Например, в следующем коде вызывается метод, на который ссылается переменная consume:
package zoo { public class VirtualZoo { private var pet:
public function VirtualZoo ( ) { pet = new VirtualPet(«Stan»):
// Присваивание связанного метода переменной consume var consume = pet. eat:
// Вызов метода, на который ссылается переменная consume consume(300);
}
}
}
При выполнении предыдущего кода, выделенного полужирным шрифтом, вызывается метод еа t ( ), в качестве аргумента которого передается значение 300. Вопрос заключается в том, какое животное принимает пищу? Или, говоря техническим языком, над каким объектом выполняется этот метод?
Когда метод присваивается переменной и затем вызывается через нее, код выполняется над тем объектом, который изначально использовался для обращения к методу. Например, в предыдущем коде, когда метод eat ( ) присваивается переменной consume, обращение к методу происходит через объект класса VirtualPet с именем 11 Stan11. Таким образом, при вызове метода eat ( ) через переменную consume код будет выполняться над объектом класса VirtualPet с именем «Stan».
Метод, который присваивается переменной, передается в функцию или другой метод либо возвращается из функции или другого метода, называется связанным методом. Свое название связанные методы получили потому, что каждый такой метод навсегда связывается с объектом, через который изначально происходит обращение к методу. Связанные методы являются экземплярами собственного класса Function.