Module Js.Obj

module Obj: Js_obj

val empty : unit -> < .. > Js.t
empty () returns the empty object {}
val assign : < .. > Js.t -> < .. > Js.t -> < .. > Js.t
assign target source copies properties from source to target

Properties in target will be overwritten by properties in source if they have the same key.

Returns target

See also MDN
(* Copy an object *)

let obj = [%obj { a = 1 }]

let copy = Js.Object.assign (Js.Object.empty ()) obj

(* prints "{ a: 1 }" *)
let _ = Js.log copy
(* Merge objects with same properties *)

let target = [%obj { a = 1; b = 1; }]
let source = [%obj { b = 2; }]

let obj = Js.Object.assign target source

(* prints "{ a: 1, b: 2 }" *)
let _ = Js.log obj

(* prints "{ a: 1, b: 2 }", target is modified *)
let _ = Js.log target
val keys : 'a Js.t -> string array
keys obj returns an array of the keys of obj's own enumerable properties
See also MDN