如何使用Kotlin生成javascript函数“构造函数”?

如何使用Kotlin生成javascript函数“构造函数”?,javascript,constructor,kotlin,keyword,Javascript,Constructor,Kotlin,Keyword,我想使用Kotlin生成一些JavaScript,如下所示: function MyComponent() { self.constructor = function() {} } 问题是constructor是Kotlin中的一个关键字,我不能这样写: class MyComponent { fun constructor() {} } 我还尝试: class MyComponent { @JsName("constructor") fun ctor() {}

我想使用Kotlin生成一些JavaScript,如下所示:

function MyComponent() {
    self.constructor = function() {}
}
问题是
constructor
是Kotlin中的一个关键字,我不能这样写:

class MyComponent {
  fun constructor() {}
}
我还尝试:

class MyComponent {
    @JsName("constructor")
    fun ctor() {}
}
它仍然报告以下错误:

JavaScript name generated for this declaration clashes 
with built-in declaration {1}

如何生成名为
构造函数的javascript函数?

顶级函数应该没有问题。
funconstructor(){}
应该可以工作,产生
函数构造函数(){}
。至少在Kotlin 1.2.31中是这样的

另一方面,名为
constructor
的成员函数是禁止的(例如,您无法在输出js文件中获得
A.prototype.constructor=function(){}
)。有一件事会破坏
,那就是检查实现

应该可以在类构造函数中修改构造函数属性:

// Kotlin
class A {
  init{
    this.asDynamic().constructor = fun(a: Int) { println(a) }
  }
}

// JS
function A() {
  this.constructor = A_init$lambda;
}
function A_init$lambda(a) {
  println(a);
}

希望有帮助。

我知道这并不能真正解决您的问题,但也许可以尝试将字母“c”改为大写。。。只是一个建议…@JO3-W3B-D3V与kotlin一起使用的js库需要
构造函数
名称,不能更改我看到了你的问题,我个人从未使用过
kotlin
,我一直想,但是,我从未实际使用过它,另一方面,js。。。您在JS中尝试过类似于
window[“constructor”]
的东西吗?我不确定这是否有效…@JO3-W3B-D3V谢谢,这确实是一个值得尝试的方法,一点问题都没有,我希望它对你很有效。我想这可能是因为它的写作方式,我可能是错的,谁知道呢。让我知道它是否有效?:)你说这应该行吗这不是真正有用的反馈?我个人不使用Kotlin,但正如我所说的,他能不能不做一些像
window[“constructor”]
?再说一次,我不知道,我知道JS,Kotlin,不太多。@anton是的,如果
fun构造函数
处于顶级,你是对的,谢谢!实际上我把问题简化得太难了,我真正的问题是类中的
构造函数。让我修改一下question@Freewind可以在类构造函数内修改属性(添加到答案中)。这就是你想要的吗?@JO3-W3B-D3V我是出于礼貌。不,
window[“constructor”]
不是解决方案,因为a)它解决了不存在的问题,b)window在某些环境(例如NodeJs)中没有定义@Freewind顺便问一下,你能告诉我库使用constructor属性的确切目的吗?