检查 js_of_ocaml 中的对象中是否存在某个字段

Check if a field exists in an object in js_of_ocaml

在我的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 文件中,有没有办法在评估 Js.to_string params##.b 之前检查对象 params 中是否存在字段 b

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

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