插件窝 干货文章 Go Wasm如何遍历JavaScript对象?

Go Wasm如何遍历JavaScript对象?

JavaScript 对象 jsObject 遍历 823    来源:    2025-03-14

在Go语言中,使用WebAssembly (Wasm) 与JavaScript进行交互时,可以通过syscall/js包来操作JavaScript对象。要遍历JavaScript对象,你可以使用js.Value类型提供的方法来获取对象的属性和值。

以下是一个简单的示例,展示了如何在Go Wasm中遍历JavaScript对象:

package main

import (
    "fmt"
    "syscall/js"
)

func main() {
    // 假设我们有一个JavaScript对象
    jsObject := js.Global().Get("Object").New()
    jsObject.Set("name", "Alice")
    jsObject.Set("age", 30)
    jsObject.Set("city", "New York")

    // 遍历JavaScript对象
    keys := js.Global().Get("Object").Call("keys", jsObject)
    for i := 0; i < keys.Length(); i++ {
        key := keys.Index(i).String()
        value := jsObject.Get(key)
        fmt.Printf("Key: %s, Value: %v\n", key, value)
    }

    // 保持程序运行
    select {}
}

代码解释:

  1. 创建JavaScript对象:我们使用js.Global().Get("Object").New()创建了一个新的JavaScript对象,并为其添加了一些属性。

  2. 获取对象的键:使用js.Global().Get("Object").Call("keys", jsObject)获取对象的所有键。keys是一个包含对象键的JavaScript数组。

  3. 遍历键:通过keys.Length()获取键的数量,并使用keys.Index(i)获取每个键的值。然后使用jsObject.Get(key)获取对应键的值。

  4. 输出结果:将键和值打印到控制台。

注意事项:

  • syscall/js包是Go语言中用于与JavaScript交互的标准库。
  • js.Value类型表示JavaScript中的值,可以通过它来调用JavaScript方法或访问属性。
  • select {}用于保持Go程序运行,防止程序退出。

运行环境:

  • 你需要在一个支持WebAssembly的环境中运行此代码,例如浏览器或Node.js。
  • 使用go build -o main.wasm编译Go代码为Wasm文件,然后在HTML中加载并运行。

示例HTML:

<!DOCTYPE html>
<html>
<head>
    <title>Go Wasm Example</title>
    <script src="wasm_exec.js"></script>
</head>
<body>
    <script>
        const go = new Go();
        WebAssembly.instantiateStreaming(fetch("main.wasm"), go.importObject).then((result) => {
            go.run(result.instance);
        });
    </script>
</body>
</html>

在这个HTML文件中,wasm_exec.js是Go提供的用于加载和运行Wasm模块的JavaScript文件。

通过这种方式,你可以在Go Wasm中遍历JavaScript对象并处理其属性。