Руководство по actionscript. часть 1, стр. 077
Package zoo { internal class VirtualPet { // Переменная экземпляра ‘calories’ private var calories = 1000:
// Метод с параметром ‘calories’ public function eat (calories) {
this. calories += calories;
}
}
}
Внутри тела метода eat ( ) выражение calories (без ключевого слова this) ссылается на параметр метода, а выражение this. calories (с ключевым словом this) — на переменную экземпляра. В этом случае говорят, что параметр calories затеняет переменную экземпляра calories, поскольку сам по себе идентификатор calories ссылается на параметр, а не на переменную экземпляра. Обратиться к переменной экземпляра можно только с помощью ключевого слова this.
Обратите внимание, что, как и параметры, локальные переменные могут затенять переменные и методы экземпляра, чьи имена совпадают с именами локальных переменных. Локальная переменная также затеняет параметр метода с таким же именем, фактически переопределяя данный параметр и не оставляя программе никакого шанса обратиться к нему.
Многие программисты специально используют одинаковые имена для параметров и переменных экземпляра, полагаясь на ключевое слово this при разрешении неоднозначностей. Тем не менее, чтобы ваш код легко читался, вы можете просто избегать использования имен параметров, совпадающих с именами переменных, методов экземпляра или локальных переменных.