目前,JavaScript 不支持完整的 Kotlin 反射 API。唯一支持的該 API 部分
是 ::class 語法,它允許你引用一個實(shí)例的類或者與給定類型相對應(yīng)的類。
一個 ::class 表達(dá)式的值是一個只能支持 simpleName 和
isInstance 成員
的精簡版 KClass 實(shí)現(xiàn)。
除此之外,你可以使用 KClass.js 訪問
與 JsClass 類對應(yīng)的實(shí)例。
該 JsClass 實(shí)例本身就是對構(gòu)造函數(shù)的引用。
這可以用于與期望構(gòu)造函數(shù)的引用的 JS 函數(shù)進(jìn)行互操作。
示例:
class A
class B
class C
inline fun <reified T> foo() {
println(T::class.simpleName)
}
val a = A()
println(a::class.simpleName) // 獲取一個實(shí)例的類;輸出“A”
println(B::class.simpleName) // 獲取一個類型的類;輸出“B”
println(B::class.js.name) // 輸出“B”
foo<C>() // 輸出“C”