我正在尝试做类似的事情:
String.prototype.print=function(){trace(??????)}
我不能为我的生活找到一种方法来获取字符串!是的我知道还有其他方法可以解决这个问题,但是......
答案 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(即面向对象)方法可能是你最好的选择。