我正在尝试使用GopherJS,但我找不到有关如何使用它的文档。
这是Go代码:
package main
import (
"github.com/gopherjs/gopherjs/js"
)
func main() {
t := js.Global.Get("key").Int()
println(t)
js.Global.Set("keySet", 4)
}
然后我使用GopherJS将其转换为JS并粘贴它:
JS代码:
var key = 3
// Pasted GopherJS Code
"use strict";
(function() {
...
}).call(this);
// End GopherJS Code
console.log(keySet)
打印:
0
4
为什么呢?它应该打印
3
4
这是我尝试过的(更改Go代码和重新转换):
func main() {
t := js.Global.Get("key").Float()
println(t)
js.Global.Set("keySet", 4)
}
打印
NaN
4
func main() {
t := js.Global.Get("key").Int64()
println(t)
js.Global.Set("keySet", 4)
}
打印
typ { '$high': 0, '$low': 0, '$val': [Circular] }
4
我做错了什么?
答案 0 :(得分:1)
js.Global
并没有像你认为的那样做。
js.Global
变量为documented as:
Global提供JavaScript的全局对象("窗口"用于浏览器和" GLOBAL"用于Node.js)。
这意味着:
js.Global.Get("key")
正在浏览器中访问window.key
,或者在Node.js中访问GLOBAL.key
,而不是全局变量key
,正如您正在尝试的那样。
更一般地说,如果您希望标准JS访问GopherJS生成的代码,您应该使用js.Wrap
方法as documented。