2011-04-07 53 views
0

有没有方法将方法范围参数的默认值设置为调用者?AS3方法的默认调用者值

在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(); 

回答

2

接受的唯一默认功能参数值fo r类型Object是'null'。

function myFunction(obj:Object = null):void {}; 

var class1:Class1 = new Class1(); 
class1.myFunction(); 
+0

是的,在文档arguments.callee文档似乎多一点阅读。 – shanethehat 2011-04-07 12:19:57

1

不,你没问题,这对于封装和代码可读性来说是件好事。你应该被迫刻意通过这个,这样任何读任何人都清楚Class2.as你的函数被引用。

一般来说,你应该问自己“为什么?”任何时候你有一个功能参数的类型对象(这是相当一般的!)。我并不是说从来没有一个好的理由 - 例如为了错误报告的目的,但是往往这是糟糕的OOP设计的标志(例如,使用一个对象,因为你太懒惰,无法做出正确的数据结构类为你传递,或规避类型检查)