加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala.js – 在scala类和Dynamic之间进行转换

发布时间:2020-12-16 19:18:52 所属栏目:安全 来源:网络整理
导读:如何从 scala类转换为Dynamic,因此可以调用未提及的 javascript函数? 你如何从Dynamic转换为scala类? 解决方法 如果 Scala类是指 JavaScript类的类型化外观,即扩展js.Object的类/特性,那么您只需使用asInstanceOf进行转换即可.例如: val dateStatic = new
>如何从 scala类转换为Dynamic,因此可以调用未提及的 javascript函数?
>你如何从Dynamic转换为scala类?

解决方法

如果 Scala类是指 JavaScript类的类型化外观,即扩展js.Object的类/特性,那么您只需使用asInstanceOf进行转换即可.例如:

val dateStatic = new js.Date
val dateDynamic = dateStatic.asInstanceOf[js.Dynamic]

另一个方向是相同的:

val dateStaticAgain = dateDynamic.asInstanceOf[js.Date]

当T延伸js.Any时,.asInstanceOf [T]总是一个无操作(即硬强制转换).

但是,如果Scala类是指一个正确的Scala类(它不是js.Object的子类型),那么基本上你可以做同样的事情.但是只有@ JSExport的成员才能从js.Dynamic界面中看到.例如:

class Foo(val x: Int) {
  def bar(): Int = x*2
  @JSExport
  def foobar(): Int = x+4
}

val foo = new Foo(5)
val fooDynamic = foo.asInstanceOf[js.Dynamic]
println(fooDynamic.foobar()) // OK,prints 9
println(fooDynamic.bar())    // TypeError at runtime

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读