1

在我的wrap.ml,我有一个功能如下:

  Js.Unsafe.global##.test := Js.wrap_callback (
    fun params -> 
      print_endline "params##.a:";
      print_endline (Js.to_string params##.a);
      print_endline "params##.b:";
      print_endline (Js.to_string params##.b);
      Js.string ((Js.to_string params##.a) ^ (Js.to_string params##.b))
  );

因此,在 JavaScript 文件中,我可以调用例如test({a: "abc", b:"efg"}).

我想知道在 OCaml 文件中,有没有办法在评估之前检查b对象中是否存在该字段?paramsJs.to_string params##.b

4

1 回答 1

2

您可以在此页面底部查看如何执行此操作:

https://ocsigen.org/js_of_ocaml/latest/manual/bindings

对于此代码:

let () =
    if Js.Optdef.test ((Js.Unsafe.coerce Dom_html.document)##.URL) then
        Printf.printf "document.URL exists\n"
    else
        Printf.printf "document.URL does not exist\n";
    if Js.Optdef.test ((Js.Unsafe.coerce Dom_html.document)##.XXX) then
        Printf.printf "document.XXX exists\n"
    else
        Printf.printf "document.XXX does not exist\n";

我在 Javascript 控制台上看到以下内容:

document.URL exists
document.XXX does not exist
于 2021-09-07T04:45:34.357 回答