1

我正在使用 Chrome 开发工具逐步完成我的 GWT MVP 应用程序,因为它使用超级开发模式呈现视图。

在开发人员工具中,我正在逐步执行我的方法的源映射 java 代码。我可以突出显示变量、右键单击和“在控制台中评估”来检查我的本地范围变量的状态。

我想对我的班级成员做同样的事情。它适用于公共方法。在私有方法中,评估类成员会导致“ReferenceError:未定义”。回复。

我尝试用“this.myPanel”注释我的班级成员。响应是一个简单的“未定义”。除了 'this' 还引用了 Window[0]

4

1 回答 1

1

尝试使用this$static 它是保存成员和实例状态的对象,作为参数传递给曾经是类成员的函数,但 GWT 将它们编译为常规 js 函数

静态成员

GWT 会将静态函数转换为仅函数(不在 js 中的任何对象下)

public class SomeEntry implements EntryPoint {
    public static String Moo() {
        String href = Window.Location.getHref();
        return href.substring(5, 10);
    }
    public static String Moo(String x) {
        String href = Window.Location.getHref();
        return href.substring(5, 10);
    }
    public void onModuleLoad() {
        Window.alert(Moo());
        Window.alert(Moo("asd"));
    }
}

将编译为:

function Moo(){
  var href_0;
  href_0 = getHref();
  return $substring_0(href_0, 5, 10);
}

function Moo_0(){
  var href_0;
  href_0 = getHref();
  return $substring_0(href_0, 5, 10);
}

因此在编译时解决的重载将在 JS 中起作用。这样做的好处是不需要使用点运算符进行推荐。每个点都是一个新的查找。

于 2014-02-21T09:57:59.157 回答