在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 {}
}
创建JavaScript对象:我们使用js.Global().Get("Object").New()
创建了一个新的JavaScript对象,并为其添加了一些属性。
获取对象的键:使用js.Global().Get("Object").Call("keys", jsObject)
获取对象的所有键。keys
是一个包含对象键的JavaScript数组。
遍历键:通过keys.Length()
获取键的数量,并使用keys.Index(i)
获取每个键的值。然后使用jsObject.Get(key)
获取对应键的值。
输出结果:将键和值打印到控制台。
syscall/js
包是Go语言中用于与JavaScript交互的标准库。js.Value
类型表示JavaScript中的值,可以通过它来调用JavaScript方法或访问属性。select {}
用于保持Go程序运行,防止程序退出。go build -o main.wasm
编译Go代码为Wasm文件,然后在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对象并处理其属性。