actionscript 3如何在内联函数中访问“this”

时间:2011-09-26 14:30:36

标签: actionscript-3

我正在尝试做类似的事情:

String.prototype.print=function(){trace(??????)}

我不能为我的生活找到一种方法来获取字符串!是的我知道还有其他方法可以解决这个问题,但是......

2 个答案:

答案 0 :(得分:4)

不确定问题是什么,使用this在匿名函数中可以正常工作。

  String.prototype.print=function():String{return "printed "+this;}         
  var o:Object = "foo";

  trace(o.print()); // traces: printed foo

我只是欺骗编译器使用一个对象,因为"foo".print()导致

  

错误:通过带有静态类型String的引用调用可能未定义的方法。

答案 1 :(得分:0)

您似乎正在将ActionScript 2混合到ActionScript 3代码中。正如kapep所说,使用“this”将在你的例子中起作用。也就是说,这是完全有效的代码:

String.prototype.print=function(){trace(this)}

当然,你错过了一个分号,但这不重要:

String.prototype.print=function(){trace(this);} //'trace(this)'后面的分号

通常,根据您的开发环境,您可能无法查看跟踪语句。例如,在Flex Builder中,除非您处于调试模式,否则根本不会显示跟踪语句。插入对trace的另一个调用,以验证您是否可以看到跟踪语句。

正如您所说,还有很多其他方法可以解决这个问题,例如扩展String类并添加“Print”功能。如果你真的无法让它工作,那么尝试ActionScript 3(即面向对象)方法可能是你最好的选择。