$(...).show(400 /* duration*/,function myCompleteCallback() {...})
我期望输出public class Thing {
public Thing() {
}
public void run() {
}
public void out(String s) {
System.out.println(s);
}
}
Context context = Context.create("js");
Value jsBindings = context.getBindings("js");
jsBindings.putMember("this", new Thing());
context.eval("js", "this.run = () => this.out('hi');");
jsBindings.getMember("this").getMember("run").execute();
context.close();
,但没有输出。
我想知道javascript(hi
部分)是否没有更新我为其提供的宿主对象(context.eval
)。
答案 0 :(得分:2)
这里有两个问题:
putMember("this", new Thing())
将不修改全局this
,但在全局对象中放置一个名为this
的属性,可通过{{1}访问}。
恐怕“我该如何设置全局”的答案是:你不能。
无法分配给主机(即Java)对象方法。但是,您可以使用Value.as(Class)
使用JS对象来实现Java接口,例如您可以执行以下操作:
this.this