PDA

Просмотр полной версии : FD авто генерация this.obj вместо _obj


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

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

Universe
15.08.2011, 19:42
не понял, так оно ж всегда совпадает!
пример:
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 к какому свойству и обращаетесь.
Объяснил плоховато, но может что-то прояснится.
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, следовательно создастся вот эта конструкция

private var buyedItems:Array;
public function ShoppingCart(buyedItems:Array)
{
this.buyedItems = buyedItems;
}
и всё бы хорошо, но в некоторых случаях при выполнении тех же действий получается вот так:

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

почему?

ir73
31.08.2011, 17:16
это захардкодено и не изменить