#actionscript-3
#actionscript-3
Вопрос:
Есть ли способ установить значение по умолчанию параметра области видимости метода в качестве вызывающего?
В AS3 вы можете установить значения по умолчанию для параметров метода следующим образом:
function myFuntion(param1:String="hello",param2:int=3) {
И вы можете передать ссылку на объект, сказав:
//method of Class1
function myFuntion(obj:Object) { } //do something with obj
//in Class2
var class1:Class1 = new Class1();
class1.myFunction(this);
Итак, вопрос, есть ли ключевое слово, которое можно использовать как:
//method of Class1
function myFuntion(obj:Object = CALLER) { } //do something with obj
//in Class2
var class1:Class1 = new Class1();
class1.myFunction();
Ответ №1:
Единственное значение параметра функции по умолчанию, которое принимается для объекта type, равно ‘null’.
function myFunction(obj:Object = null):void {};
var class1:Class1 = new Class1();
class1.myFunction();
Комментарии:
1. Да, еще немного почитайте аргументы docs.callee docs, кажется, говорит об этом.
Ответ №2:
Нет, нет способа добиться того, о чем вы просите, и это хорошо для инкапсуляции и удобочитаемости кода. Вы должны быть вынуждены намеренно передавать это, чтобы это было понятно любому, кто читает Class2.as на что ссылается ваша функция.
В общем, вы должны спрашивать себя «почему?» всякий раз, когда у вас есть параметр функции типа Object (это довольно общий термин!). Я не говорю, что для этого никогда не бывает веской причины — например, для сообщения об ошибках, — но слишком часто это признак плохого дизайна ООП (например, использование объекта, потому что вы слишком ленивы, чтобы создать надлежащий класс структуры данных для того, что вы передаете, или обойти проверку типов)