GWT JsInterop - 调用类似对象的函数

时间:2016-01-08 18:43:57

标签: gwt

使用JsInterop,我已经包装了以下JavaScript代码:

var voronoi = d3.geom.voronoi()
    .clipExtent([[0, 0], [width, height]]);

如下:

private Voronoi voronoi;
...
voronoi = d3.geom().voronoi()
          .clipExtent(new Double[][] {{0.D, 0.D}, {width, height}});

这似乎很有效。

稍后,在JavaScript方面,他们会进行以下调用:

path = path
  .data(voronoi(vertices), polygon);

我很难搞清楚如何调用我的voronoi实例,好像它是这样的功能。

在本文档中:https://docs.google.com/document/d/10fmlEYIHcyead_4R1S5wKGs1t2I7Fnp_PaNaa7XTEk0/edit#,我看到以下一行:

@JsFunction JsInterop的另一个强大功能是能够表示Java和JavaScript之间的JavaScript函数契约。这意味着可以从Java轻松调用JavaScript函数,或者可以像在JavaScript中的函数一样调用Java对象:

现在我的Voronoi对象如下:

@JsType(isNative = true)
public interface Voronoi extends Geometry {

    <D> Voronoi clipExtent(D[][] bounds);
}

我需要做些什么来调用我的Voronoi实例,好像它是一个函数?

谢谢

1 个答案:

答案 0 :(得分:0)

@JsType(isNative = true)
public interface Voronoi extends Geometry {

    @JsMethod
    static native [TheTypeItReturns] call(Voronoi self, [ParameterTypes]... args);

    <D> Voronoi clipExtent(D[][] bounds);
}

查看https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/callhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply