在类中使用setInterval()随感。
下面看两段代码
class testA
{
public var _arg:String="ok";
public function testMethod():Void
{
setInterval(testInterval,500);
}
private function testInterval():Void
{
trace(_arg)
}
}
--------------------------------------------------------
class testB
{
public var _arg:String="ok";
public function testMethod():Void
{
setInterval(testInterval,500,_arg);
}
private function testInterval(arg:String):Void
{
trace(arg)
}
}
--------------------------------------------------------
大家测试一下两段代码,testA输出undefined,而testB会输出ok,导致上面的原因就是,虽然你把interval执行时的方法写在了类里面,但你在那个方法里面的代码中的this并不指向上类的实例,除非你是以 "类实例名称.方法名"来执行时,this才指向类的实例 否则它里面的this是指向interval,这是我上午遇到的问题,非常感谢THOR给我的教导,其实很多人在写代码的时候都没弄明白对象引用,而导致很多BUG和问题 ,所以以后关键不是急于写,而是在于你是不是弄清楚了程序到底是怎么运行的机理,这样在去写,才会有的放矢,才不会引起不必要的麻烦。非常感谢THOR。
下面看两段代码
class testA
{
public var _arg:String="ok";
public function testMethod():Void
{
setInterval(testInterval,500);
}
private function testInterval():Void
{
trace(_arg)
}
}
--------------------------------------------------------
class testB
{
public var _arg:String="ok";
public function testMethod():Void
{
setInterval(testInterval,500,_arg);
}
private function testInterval(arg:String):Void
{
trace(arg)
}
}
--------------------------------------------------------
大家测试一下两段代码,testA输出undefined,而testB会输出ok,导致上面的原因就是,虽然你把interval执行时的方法写在了类里面,但你在那个方法里面的代码中的this并不指向上类的实例,除非你是以 "类实例名称.方法名"来执行时,this才指向类的实例 否则它里面的this是指向interval,这是我上午遇到的问题,非常感谢THOR给我的教导,其实很多人在写代码的时候都没弄明白对象引用,而导致很多BUG和问题 ,所以以后关键不是急于写,而是在于你是不是弄清楚了程序到底是怎么运行的机理,这样在去写,才会有的放矢,才不会引起不必要的麻烦。非常感谢THOR。
回复Comments
作者:
{commentrecontent}