是否可以组合两个js.Dynamic对象

use*_*074 3 scala.js

说我有

val obj1 = js.Dynamic.literal(attr1 = "x")
val obj2 = js.Dynamic.literal(attr2 = "y")
Run Code Online (Sandbox Code Playgroud)

我想把obj1和obj2组合成屈服和对象

{attr1 = "x", attr2 = "y"}
Run Code Online (Sandbox Code Playgroud)

js.Dynamic有一种产生这种组合的方法吗?

sjr*_*jrd 5

没有现成的方法可以做到这一点.在ES6中有Object.assign,但在IE中不支持.

我建议在Scala.js中重新实现它:

def mergeJSObjects(objs: js.Dynamic*): js.Dynamic = {
  val result = js.Dictionary.empty[Any]
  for (source <- objs) {
    for ((key, value) <- source.asInstanceOf[js.Dictionary[Any]])
      result(key) = value
  }
  result.asInstanceOf[js.Dynamic]
}
Run Code Online (Sandbox Code Playgroud)

而现在你可以做到

mergeJSObjects(obj1, obj2)
Run Code Online (Sandbox Code Playgroud)