Actionscript 3 actionscript 3如何访问';这';内联函数

Actionscript 3 actionscript 3如何访问';这';内联函数,actionscript-3,Actionscript 3,我正在尝试做一些类似的事情: String.prototype.print=function(){trace(??????)} 我一辈子都想不出一个办法来抓住绳子!是的,我知道还有其他方法可以解决这个问题,等等。但是…不确定问题出在哪里,使用这个可以在匿名函数中正常工作 String.prototype.print=function():String{return "printed "+this;} var o:Object = "foo"; trace(o.p

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

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

我一辈子都想不出一个办法来抓住绳子!是的,我知道还有其他方法可以解决这个问题,等等。但是…

不确定问题出在哪里,使用
这个
可以在匿名函数中正常工作

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

  trace(o.print()); // traces: printed foo
我刚刚欺骗编译器使用对象,因为
“foo.print()
导致

错误:通过具有静态类型字符串的引用调用可能未定义的方法print


看起来您正在将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”函数。如果你真的无法做到这一点,那么尝试ActionScript3(即面向对象)方法可能是你最好的选择