Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   FD авто генерация this.obj вместо _obj (http://www.flasher.ru/forum/showthread.php?t=164303)

Universe 15.08.2011 17:41

FD авто генерация this.obj вместо _obj
 
Заметил что иногда при генерации переменной из параметра в конструкторе у меня создаётся переменная вида _someVar, а иногда - this.someVar. Как сделать так чтобы всегда было this.someVar?

goodguy 15.08.2011 18:29

this.someVar генерируется, когда имя переменной класса совпадает с именем переменной в конструкторе.

Universe 15.08.2011 19:42

не понял, так оно ж всегда совпадает!
пример:
Код AS3:

private var buyedItems:Array;
public function ShoppingCart(buyedItems:Array)
                {
                                this.buyedItems = buyedItems;
                                if (stage) init()
                                else addEventListener(Event.ADDED_TO_STAGE, init);
                }

Я просто пишу buyedItems:Array в параметрах функции и нажимаю Ctrl + Shift + 1. Всё остальное FD делает сам. Токо вот как он это делает почему то отличается

incoob 15.08.2011 21:10

Если свойство Prefix fields when... пустое, то генерироваться _someVar, по идее, не может.

samana 16.08.2011 04:18

this добавляется для того, чтобы функция "понимала" к какому свойству вы обращаетесь к свойству класса или к свойству функции. А так как если имена обоих свойств совпадают, то внутри функции доминирует свойство функции. По этому нужно уточнять через this к какому свойству и обращаетесь.
Объяснил плоховато, но может что-то прояснится.
Код AS3:

private var buyedItems:Array;
public function ShoppingCart(buyedItems:Array)
                {
                                this.buyedItems //приватное свойсво класса
                                buyedItems // свойство функции, её принимаемый параметр
                }


Universe 29.08.2011 12:47

samana, да причём здесь это! Я просто спрашиваю про особенность работы самого FD. я прекрасно понимаю зачем там this и он меня там более чем устраивает! Вопрос в другом, попробуйте написать buyedItems:Array в параметрах функции и нажмите Ctrl + Shift + 1. Он вам напишет Generate field from parametr, следовательно создастся вот эта конструкция
Код AS3:

private var buyedItems:Array;
public function ShoppingCart(buyedItems:Array)
                {
                                this.buyedItems = buyedItems;
                }

и всё бы хорошо, но в некоторых случаях при выполнении тех же действий получается вот так:
Код AS3:

private var _buyedItems:Array;
public function ShoppingCart(buyedItems:Array)
                {
                                _buyedItems = buyedItems;
                }

почему?

ir73 31.08.2011 17:16

это захардкодено и не изменить


Часовой пояс GMT +4, время: 21:00.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.