Тема: this это
Показать сообщение отдельно
Старый 03.12.2013, 14:39
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 11  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Цитата:
Как "экземпляр может выполнить код", если это грубо говоря только ссылка на объект.
Экземпляр может выполнить код разве что так: spaceship3.x = 50; ну об этом я и написал.
Я имел ввиду это:
Код AS3:
// Метод перемещает корабль
public function moveShipY(value: Number):void
{
   // Перемещаем наш корабль
   this.y += value;
}
Тут перемещается только тот корабль, над которым вызван метод moveShipY, а не все созданные экземпляры. Если есть spaceship1 и spaceship2, и мы вызовем метод
Код AS3:
spaceship2.moveShipY(20);
, то переместиться только spaceship2.

Добавлено через 9 минут
Цитата:
А чтобы засунуть в класс Spaceship ссылку на spaceship3, то это уже... какие-то рекурсивные извраты, разве нет? : )
Это делать и не надо, для этого и есть this. Пример:
Код AS3:
var ship: Spaceship = new Spaceship();
ship.name = 'корабль1';
 
var ship2: Spaceship = new Spaceship();
ship2.name = 'корабль2';
Метод getName класса Spaceship возвращает имя корабля:
Код AS3:
public function getName():void
{
   trace(this.name);
}
И если вы сделаете так:
Код AS3:
ship.getName();   // корабль1
ship2.getName();   //// корабль2
То есть метод getName знает над каким экземпляром он был вызван, с помощью того же this.


Последний раз редактировалось alexandrratush; 03.12.2013 в 14:50.