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

时间:2016-04-11 23:45:20

标签: scala.js

说我有

val obj1 = js.Dynamic.literal(attr1 = "x")
val obj2 = js.Dynamic.literal(attr2 = "y")

我想将obj1和obj2组合成

的yield和object
{attr1 = "x", attr2 = "y"}

js.Dynamic是否有方法可以产生这样的组合?

1 个答案:

答案 0 :(得分: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]
}

现在你可以简单地做

mergeJSObjects(obj1, obj2)