2011-09-26 17 views

回答

4

不知道是什麼問題,使用this在匿名函數中工作正常。

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

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

我只是騙編譯器使用的對象,因爲"foo".print()導致

Error: Call to a possibly undefined method print through a reference with static type String.

+0

謝謝。我認爲這是編譯器錯誤讓我失望。 – Tom

0

它看起來像你混合的ActionScript 2到您的ActionScript 3代碼。正如kapep所說,使用「this」可以在你的例子中起作用。也就是說,這是完全合法的代碼:

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

當然,你缺少一個分號但是這不應該事:

String.prototype.print=function(){trace(this);} //分號跟蹤後,」(這)'

根據您的開發環境,通常可能無法查看跟蹤語句。例如,在Flex Builder中,除非您處於調試模式,否則跟蹤語句完全不顯示。插入另一個電話至trace以驗證您是否可以看到跟蹤語句。如你所說,還有很多其他方法可以解決這個問題,比如擴展String類和添加「打印」功能。如果你真的無法做到這一點,那麼嘗試使用ActionScript 3(即面向對象)方法可能是你的最佳選擇。