2014-03-11 2 views
0

Я хочу написать функцию обертки GWT JSNI для следующей функции JavaScript.Горячие модели JSNI с дополнительными параметрами?

object.cache(config); 

где конфигурация представляет собой объект со следующими дополнительными параметрами

- x Number 
- y Number 
- width Number 
- height Number 
- length Number 

Я думаю, что я не был бы хорошо, чтобы отменить все возможные комбинации аргументов функции как функции Java.

Как смоделировать такую ​​функцию JavaScript со многими необязательными аргументами как JSNI-функцию Java?

ответ

1

Я бы моделировать объект конфигурации как JavaScriptObject:

public class Config extends JavaScriptObject { 
    protected Config() { } 

    public native final boolean hasX() /*-{ return this.x == null; }-*/; 
    public native final double getX() /*-{ return this.x || 0; }-*/; 
    public native final void setX(double x) /*-{ this.x = x; }-*/; 
    public native final void unsetX() /*-{ delete this.x; }-*/; 

    … 

Есть, очевидно, другие способы моделирования его (с помощью java.lang.Double, например), но это один, пожалуй, самый легкий WRT скомпилированный выход JS ,

Или вы могли бы использовать java.lang.Double аргументы, но вы будете платить цену за объект обертку:

public native void cache(Double x, Double y, Double width, Double height, Double length) /*-{ 
    var cache = {}; 
    if (x != null) { cache.x = [email protected]::doubleValue()(); } 
    … 

Наконец, вы можете также использовать специальные значения, если это имеет смысл в вашем случае:

var config = {}; 
if (x >= 0) { config.x = x; } 
+0

Зачем мне нужен hasX и unsetX? – confile

Смежные вопросы