![]() |
Как правильно обратиться к локальной переменной и к параметру, если у них схожее имя?
Здравствуйте. :)
Подскажите, пожалуйста. :) Есть метод-экземпляр, который содержит обязательный параметр 'parametr'. Я внутри этого метода-экземпляра создаю локальную переменную с таким же именем, как и 'parametr'. Задаю локальной переменной значение '1'. Когда я вызываю метод-экземпляр, то в качестве аргумента отсылаю '2'. После этого пишу trace('Значение локальной переменной:',this.parametr,'Значение обязательного параметра:',parametr);. И тут возникает ошибка, будто бы parametr (this.parametr) не найден. Я так понимаю происходит поиск переменной в самом классе? Заранее большое спасибо. :) |
Так делать нельзя, потому что аргументы функции и её локальные переменные находятся в одной области видимости.
Код AS3:
Возможно, вы перепутали с переменной класса, к которой в таких случаях нужно обращаться через this Код AS3:
|
Цитата:
Цитата:
Код AS3:
|
Цитата:
Всё сработало так, как и написано переменная объявленная внутри функции затеняет ту, которая в параметрах. Обратиться на самом деле к ней можно, через arguments[0], но это уже ухищрения. Просто запомните что так делать не нужно. *Я кажется понял, вы не понимаете что значит локальная переменная. Локальная в вашем случае и есть localVar, а переменная класса это другое |
Цитата:
Можно, конечно, магией через arguments, но под это одно предложение подходит: "Китайские комсомольцы сами себе создают трудности, а потом сами их героически преодолевают" |
Цитата:
п.с. Так лучше вообще не делать никогда. |
Цитата:
Хорошо, запомню. Я понимаю, что значит и локальная переменная и переменная класса (экземпляра). То что описывает Колин Мук (обращение к переменной экземпляра с помощью выражения this в том случае, если у параметра метода экземпляра такое же имя) у меня получилось осуществить. Потом попробовал сделать то же самое но только с локальной переменной, не получилось и задал вопрос. Добавлено через 1 минуту Цитата:
Хорошо, я не буду делать так. |
Цитата:
this это ссылка на самого себя, на экземпляр. Туда достучаться можно из любой вложенности функций, а вот доступ к конкретному scope (области видимости) да еще и с одинаковыми конфликтующими именами - будет получить сложнее. |
| Часовой пояс GMT +4, время: 04:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.