欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在JavaScript項目中中調(diào)用Kotlin方法

這篇文章給大家介紹怎么在JavaScript項目中中調(diào)用 Kotlin 方法,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、九原ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的九原網(wǎng)站制作公司

用獨立的 JavaScript 隔離聲明

為了防止損壞全局對象,Kotlin 創(chuàng)建一個包含當(dāng)前模塊中所有 Kotlin 聲明的對象 。所以如果你把模塊命名為 myModule,那么所有的聲明都可以通過 myModule 對象在 JavaScript 中可用。例如:

fun foo() = "Hello"

可以在 JavaScript 中這樣調(diào)用:

alert(myModule.foo());

這不適用于當(dāng)你將 Kotlin 模塊編譯為 JavaScript 模塊時(關(guān)于這點的詳細(xì)信息請參見 JavaScript 模塊)。 在這種情況下,不會有一個包裝對象,而是將聲明作為相應(yīng)類型的 JavaScript 模塊對外暴露。例如, 對于 CommonJS 的場景,你應(yīng)該寫:

alert(require('myModule').foo());

包結(jié)構(gòu)

Kotlin 將其包結(jié)構(gòu)暴露給 JavaScript,因此除非你在根包中定義聲明, 否則必須在 JavaScript 中使用完整限定的名稱。例如:

package my.qualified.packagename

fun foo() = "Hello"

可以在 JavaScript 中這樣調(diào)用:

alert(myModule.my.qualified.packagename.foo());

@JsName 注解

在某些情況下(例如為了支持重載),Kotlin 編譯器會修飾(mangle) JavaScript 代碼中生成的函數(shù)和屬性的名稱。要控制生成的名稱,可以使用 @JsName 注解:

// 模塊“kjs”
class Person(val name: String) {
  fun hello() {
    println("Hello $name!")
  }

  @JsName("helloWithGreeting")
  fun hello(greeting: String) {
    println("$greeting $name!")
  }
}

 現(xiàn)在,你可以通過以下方式在 JavaScript 中使用這個類:

var person = new kjs.Person("Dmitry");  // 引用到模塊“kjs”
person.hello();             // 輸出“Hello Dmitry!”
person.helloWithGreeting("Servus");   // 輸出“Servus Dmitry!”

如果我們沒有指定 @JsName 注解,相應(yīng)函數(shù)的名稱會包含從函數(shù)簽名計算而來的后綴,例如 hello_61zpoe$。

請注意,Kotlin 編譯器不會對 external 聲明應(yīng)用這種修飾,因此你不必在其上使用 @JsName。 值得注意的另一個例子是從外部類繼承的非外部類。 在這種情況下,任何被覆蓋的函數(shù)也不會被修飾。

@JsName 的參數(shù)需要是一個常量字符串字面值,該字面值是一個有效的標(biāo)識符。 任何嘗試將非標(biāo)識符字符串傳遞給 @JsName 時,編譯器都會報錯。 以下示例會產(chǎn)生編譯期錯誤:

@JsName("new C()")  // 此處出錯
external fun newC()

在 JavaScript 中表示 Kotlin 類型

  1. 除了 kotlin.Long 的 Kotlin 數(shù)字類型映射到 JavaScript Number。

  2. kotlin.Char 映射到 JavaScript Number 來表示字符代碼。

  3. Kotlin 在運行時無法區(qū)分?jǐn)?shù)字類型(kotlin.Long 除外),即以下代碼能夠工作:

fun f() {
  val x: Int = 23
  val y: Any = x
  println(y as Float)
}
  1. Kotlin 保留了 kotlin.Int、 kotlin.Byte、 kotlin.Short、 kotlin.Char 和 kotlin.Long 的溢出語義。

  2. JavaScript 中沒有 64 位整數(shù),所以 kotlin.Long 沒有映射到任何 JavaScript 對象, 它是由一個 Kotlin 類模擬的。

  3. kotlin.String 映射到 JavaScript String。

  4. kotlin.Any 映射到 JavaScript Object(即 new Object()、 {} 等)。

  5. kotlin.Array 映射到 JavaScript Array。

  6. Kotlin 集合(即 List、 Set、 Map 等)沒有映射到任何特定的 JavaScript 類型。

  7. kotlin.Throwable 映射到 JavaScript Error。

  8. Kotlin 在 JavaScript 中保留了惰性對象初始化。

  9. Kotlin 不會在 JavaScript 中實現(xiàn)頂層屬性的惰性初始化。

關(guān)于怎么在JavaScript項目中中調(diào)用 Kotlin 方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享名稱:怎么在JavaScript項目中中調(diào)用Kotlin方法
文章分享:http://aaarwkj.com/article22/gdijcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)ChatGPT、微信小程序、網(wǎng)站內(nèi)鏈靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
夫妻性生活视频在线免费看| 日本理伦片一区二区| 欧美亚洲午夜一二综合| 国产黄的网站在线观看| 午夜未满十八禁止观看| 粉嫩在线一区二区懂色| 欧美午夜一级特黄大片 | 日本精品av一区二区| 日韩无码一区二区视频| 亚洲最色最黄大片在线视频| 福利福利视频一区二区| 日本女优高清不卡一二三四区 | 人妻一区二区免费视频| 日本韩国国产三级在线| 国产在线乱码一区二区| 亚洲欧美日韩国产一区二区三区| 亚洲国产第一av导航| 国产精品欧美日韩高清| 亚洲香蕉av一区二区蜜桃| 日本一区二区不卡视频在线播放| 久久精品国产亚洲av麻豆网站| 国产伦精品一区二区三区免费视频| 老熟女乱色一区二区三区| 国产亚洲中文字幕91| 国产剧情av一区在线观看| 性生活视频在线观看免费| 成人黄色动作片在线观看| 国产系列在线播放一区二区三区| 91超碰这里只有精品国产| 好吊妞视频这里只有精| 日韩精品在线观看天堂| 免费可以看的黄片欧美| 日本少妇激情后入嗯啊| 少妇互射视频免费视频| 国产三级三级三级精品8ⅰ区| 日韩亚洲精品99综合观看| av剧情网址在线观看| 亚洲香蕉av在线一区二区三区| 日韩精品中文字幕有码在线 | 日本亚洲欧美男人的天堂| 免费看的日韩av毛片|