Module Js_obj

Provides functions for inspecting and maniplating native JavaScript objects

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

(* Copy an object *)

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

let copy = Js.Obj.assign (Js.Obj.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.Obj.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 : _ Js.t -> string array

keys obj returns an array of the keys of obj's own enumerable properties