javascript匿名对象在kotlin

如何在kotlin中创建JavaScript匿名对象? 我想创建这个对象传递给nodejs应用程序

var header = {“content-type”:”text/plain” , “content-length” : 50 ...} 

4 Solutions collect form web for “javascript匿名对象在kotlin”

可能的解决方案:

1)用jsfunction:

 val header = js("({'content-type':'text/plain' , 'content-length' : 50 ...})") 

注意:括号是强制性的

2)具有dynamic

 val d: dynamic = object{} d["content-type"] = "text/plain" d["content-length"] = 50 

3)用js + dynamic

 val d = js("({})") d["content-type"] = "text/plain" d["content-length"] = 50 

4)与本机声明:

 native class Object { nativeGetter fun get(prop: String): dynamic = noImpl nativeSetter fun set(prop: String, value: dynamic) {} } fun main(args : Array) { var o = Object() o["content-type"] = "text/plain" o["content-length"] = 50 } 

另一个可能的解决方案

 object { val `content-type` = "text/plain" val `content-length` = 50 } 

看起来,它不再与逃逸的variables名称工作。

我是一个Kotlin新手(尽管不是新手开发者),我稍微扩展了@bashor的答案,使其看起来更整齐一些,它们是有效的Java标识符,但仍然允许那些不是的标识符。 我用Kotlin 1.0.1测试了它。

 @native("Object") open class Object { } fun jsobject(init: dynamic.() -> Unit): dynamic { return (Object()).apply(init) } header = jsobject { validJavaIdentifier = 0.2 this["content-type"] = "text/plain" this["content-length"] = 50 } 

这是一个用lambda语法初始化对象的帮助函数

 inline fun jsObject(init: dynamic.() -> Unit): dynamic { val o = js("{}") init(o) return o } 

用法:

 jsObject { foo = "bar" baz = 1 } 

Emited的JavaScript代码

 var o = {}; o.foo = 'bar'; o.baz = 1; 
  • 在Java中调用Kotlin时如何省略构造函数参数的默认值?
  • Kotlin迭代器列表?
  • 任何人都可以告诉我kotlin编译器是如何工作的? 它的架构是什么?
  • 使用Akka java API时Kotlintypes推理编译错误
  • 如何将一个types列表中的列表组合到一个单一的不可变列表中?
  • 我可以写sampleVideoView吗? =在Kotlin中的findViewById (R.id.videoView)?
  • Kotlin:迭代一个具有解构条目的地图是不是可能的? 错误?
  • 聪明的演员是不可能的,因为...是一个可变的财产,可能已经改变了这个时间
  • Kotlintypes方差和星形投影
  • onCreate在抽象父活动no kotlin中调用
  • 比较没有ID的Kotlin中的数据类
  • Kotlin language will be the best programming language for Android.