sjr*_*jrd 15
如果Scala类是指JavaScript类的类型化外观,即扩展的类/特征js.Object,那么您可以简单地使用asInstanceOf.例如:
val dateStatic = new js.Date
val dateDynamic = dateStatic.asInstanceOf[js.Dynamic]
Run Code Online (Sandbox Code Playgroud)
另一个方向是相同的:
val dateStaticAgain = dateDynamic.asInstanceOf[js.Date]
Run Code Online (Sandbox Code Playgroud)
.asInstanceOf[T]在T延伸时总是一个无操作(即硬铸)js.Any.
但是,如果Scala类是指一个正确的Scala类(不是它的子类型js.Object),那么基本上你可以做同样的事情.但是只有@JSExport'ed成员才能从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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1107 次 |
| 最近记录: |