如何通过 Web assembly 访问 Go 中的 JS 对象

How to access JS Objects in Go through Web assembly

我正在使用浏览器将 wasm 文件构建到 运行,我能够将简单的整数字符串值传递给该方法,但无法传递复杂的对象、键值对或数组

这是我的go方法

func Transform(jsV js.Value, inputs []js.Value) interface{} {
    message := inputs[0].String()
    fmt.Println(inputs)  // How to access objects here 
    h := js.Global().Get("document").Call("getElementById", "message")
    h.Set("textContent", message)
    return nil
}

func init() {
    fmt.Println("Hello, WebAssembly!")
    c = make(chan bool)
}

func main() {
    js.Global().Set("Transform", js.FuncOf(Transform))
    println("Done.. done.. done...")
    <-c
}

当我传递像 {name:"Something"} 这样的对象时,它只打印对象,我在文档中搜索但找不到任何 link

如果您将 Transform 呼叫为:

globalThis.Transform({name:"Something"})

在这种情况下,inputs[0] 是对象。为了获得 name 属性,您应该使用 Get:

message := inputs[0].Get("name").String()

对于 array 你有 .Index() 而对于对象(如上所示)你有 .Get().