go wasm 如何通过遍历js中的对象

问题描述

前端学习golang,尝试wasm
js 给 go 传递Object过去,

js.Value 格式没法通过range遍历

问题出现的环境背景及自己尝试过哪些方法

执行 GOOS=js GOARCH=wasm go build -o main.wasm
报错 ./main.go:25:14: cannot range over obj (type js.Value)

上传图片一直没传上去,就不截图了

也尝试过js通过JSON.stringify转成字符串,golang解析,同样的不行,不一样的类型错误。

也查过一系列资料,没有解决问题。

相关代码

package main
import (
    "fmt"
    "syscall/js"
)

func main() {
    done := make(chan int, 0)
    js.Global().Set("hook", createHook())
    <-done
}

func createHook() js.Func {
    return  js.FuncOf(func(this js.Value, args []js.Value) interface{} {
        obj := args[0]
        fmt.Println(obj)

        for key := range obj {
            val := obj.Get(key)
            fmt.Println(val)
        }
        return nil
    })
}

如何遍历JS中的对象?

额外可以的话,告知下我golang 能否传递struct或者类似于JS中的对象(内部几个方法)到windows, 想减少window上的全局变量。
阅读 2.2k
1 个回答

obj的类型是js.Value,是个结构体,它不能被for range遍历

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题