Is there a way to use the "new" operator with arguments on a dynamic variable in Kotlin JavaScript?

More safe version:

fun <T : Any> JsClass<T>.createInstance(vararg args: dynamic): T {
  @Suppress("UNUSED_VARIABLE")
  val ctor = this

  @Suppress("UNUSED_VARIABLE")
  val argsArray = (listOf(null) + args).toTypedArray()

  //language=JavaScript 1.6
  return js("new (Function.prototype.bind.apply(ctor, argsArray))").unsafeCast<T>()
}

Can be used as

window.classNameK.jsClass.createInstance(a, b, c)

(jsClass is property from std lib)

1 Like