我正在尝试使用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
我究竟做错了什么?
js.Global
没有做你认为它做的事情。
js.Global
变量是documented as:
Global提供JavaScript的全局对象(浏览器的“窗口”和Node.js的“GLOBAL”)。
这意味着:
js.Global.Get("key")
在浏览器中访问window.key
,或在Node.js中访问GLOBAL.key
,而不是全局变量key
,正如您尝试的那样。
更一般地说,如果您希望标准JS访问GopherJS生成的代码,您应该使用js.Wrap
方法as documented。