检查 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
?
您可以在本页底部看到如何执行此操作:
对于此代码:
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
在我的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
?
您可以在本页底部看到如何执行此操作:
对于此代码:
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