Просмотр полной версии : FD авто генерация this.obj вместо _obj
Universe
15.08.2011, 17:41
Заметил что иногда при генерации переменной из параметра в конструкторе у меня создаётся переменная вида _someVar, а иногда - this.someVar. Как сделать так чтобы всегда было this.someVar?
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 делает сам. Токо вот как он это делает почему то отличается
Если свойство Prefix fields when... пустое, то генерироваться _someVar, по идее, не может.
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;
}
почему?
это захардкодено и не изменить
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.