![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2013
Сообщений: 89
|
месяца 3 изучаю as3 но до сих пор не могу понять для чего нужно ключевое слово this.
Ув. форумчане подскажите пожалуйста, что это и с чем его едят. Видео-урок человека, в котором он в основном файле (точке входа) прописывает private var const _this:*; Далее в конструкторе главного файла прописывает _this = this; Так вот, аналогично, в классе, каком либо, где описывается поведение объекта. И далее все изменения производятся через даный _this. Я вынес из всего этого, что this - эта область, в которой находится объект. Но господа, так же в коллине муке, встречал пару-тройку абзацев, где this - уточнение свойства при передачи параметра в конструктор класса. В общем запутался, расскажите поподробнее пожалуйста. Заранее спасибо огромнейшее. |
|
|||||
|
this - ссылка на самого себя внутри себя. Есть у любого экземпляра любого класса.
Это как "Я" у каждого человека :о) Цитата:
PS А вот у Халка есть геттер обертка на this - Халк. И он через нее все делает. Халк.ломать(), Халк.злой(). Хотя это не читайте, я сам запутался. Халк скорее статический.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 89
|
Цитата:
Вот |
|
|||||
|
Регистрация: Apr 2013
Сообщений: 89
|
А вы можете посоветовать, что можно смотреть/читать, кроме Mook'a?
|
|
|||||
|
[+4 06.05.14]
|
Цитата:
__________________
Марк Tween |
|
|||||
|
this это явное указание на себя. Зачем нужно:
1. Представьте что у вас объект со свойствами x и y есть, а вы хотите добавить к нему метод setCoords для того чтобы ставить обе координаты сразу. т.е. свойства у вас такие public var x:int; public var y:int; //и наш метод на оба сразу public function setCoords(x:int, y:int):void { this.x = x; this.y = y; } Вариант два это когда нужно передать объект себя куда нибудь, не приведу сейчас простенького примера. В итоге this это не какая то такая сложная штука и не так уж и часто применяемая. Он ещё нужен самому интерпретатору чтобы понимать для какого объекта вызван метод. Вот в данном примере trace(x,y); по сути автоматически заменится на Т.е. компилятор сам понимает что вы имели ввиду, вот и получается что явно указывать надо когда ему не понятно(см первый пример). Вот как-то так. Это не все применения this но они уже выходят за рамки вопроса и ответа. Также советую почитать где нибудь что такое super.
__________________
:) |
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Правильно ли я понимаю...
Например, есть класс Spaceship, на базе которого создано 5 экземпляров: spaceship1, spaceship2... spaceship5. И если в коде этого класса компиллятор попадает на строку this.y = 50; то все эти экземпляры будут перемещены на уровень y = 50 пикселов. Но чтобы какой-то конкретный экземпляр поместить например на уровень y = 30, то из самого класса Spaceship посредством this этого сделать нельзя (?). Но легко сделать из класса Main, посредством кода: spaceship3.y = 30. |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Mar 2013
Сообщений: 290
|
Цитата:
Как "экземпляр может выполнить код", если это грубо говоря только ссылка на объект. Экземпляр может выполнить код разве что так: spaceship3.x = 50; ну об этом я и написал. Но эта строка будет находится в коде другого класса, отличного от Spaceship. А чтобы засунуть в класс Spaceship ссылку на spaceship3, то это уже... какие-то рекурсивные извраты, разве нет? : ) Насколько я понимаю, у экземпляра нет своего кода, который бы отличался от кода класса этого экземпляра. Цитата:
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:02. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|