[]编译前(AS)和编译后(JavaScript)程序的行为是不一致的,求最佳实践和原理。

没有出现预期的123,而是undefined。
编译前(AS)和编译后(javJavaScript序行为是不一致的,求最佳实践和原理。
如果使用Handler对象则可以解决这个问题。这应该就是最佳实践吧。
这有点坑爹啊,有没有在文档醒目的位置提醒开发者啊。
package {
public class LayaSample {

public function LayaSample() {
//初始化引擎
Laya.init(1136, 640);

var func:Function = new A().method;
func();
}
}
}



package
{
public class A
{
private var _attr:int = 123;
public function A()
{
}

public function method():void {
trace(_attr);
}
}
}


已邀请:

nbyusm

赞同来自:

package {
public class LayaSample {
 
public function LayaSample() {
//初始化引擎
Laya.init(1136, 640);
var a:A = new A();
// 就是多放个对象进去吧
var func:Handler = new Handler(a, a.method);
func.run();
}
}
}
 
 
 
package
{
public class A
{
private var _attr:int = 123;
public function A()
{
}
 
public function method():void {
trace(_attr);
}
}
}
 

cuixueying

赞同来自:

  你上面说的方式支持,之所以没有输出是由于你method的作用域错了,this指向的不是当前类,而是window,使用Handler可以直接传作用域(为当前类),所以Handler输出的结果是对的,建议使用Handler!

要回复问题请先

商务合作
商务合作