Да, будет разница в использовании памяти. По сути, потому что в одном случае у вас есть один класс, а в другом - один класс и 10 000 экземпляров.
Однако код самой функции не будет продублирован 10000 раз. В любом случае в памяти есть только одна функция. Оставляя семантику в стороне, метод экземпляра в значительной степени является статической функцией, которой передается ссылка на экземпляр в качестве первого параметра.
Этот параметр скрыт от вас в Actionscript, как и в большинстве языков (хотя другие, такие как Python, я думаю, заставляют вас объявлять параметр self
/ this
в определении функции; вам не нужно хотя передайте его явно во время вызова).
Каждый объект хранит ссылку на свои методы (методы, объявленные в фактическом типе среды выполнения, а также унаследованные методы), обычно в структуре, называемой vtable. Протокол для вызова этих методов обычно включает в себя поиск функции в таблице и ее вызов с передачей ссылки на объект this
, для которого вызывается метод, плюс остальные аргументы (если есть).
В любом случае, статический параметр может быть законным выбором в некоторых случаях (наиболее очевидным является случай, когда у вас нет состояния для сохранения, поэтому вам действительно не нужен объект), но в общем случае метод экземпляра более гибкий и менее ограничительный. В любом случае, я бы сказал, что почти в каждом случае было бы неблагоразумно выбирать тот или иной вариант, в зависимости от того, какой из них занимает меньше памяти.