Package js

import "syscall/js"
Overview
Index
Examples

Overview ▾

使用js / wasm架构时,使用js软件包可以访问WebAssembly主机环境. 其API基于JavaScript语义.

该软件包是实验性的. 当前的范围仅是允许运行测试,而尚未为用户提供全面的API. 它不受Go兼容性承诺的约束.

func CopyBytesToGo

func CopyBytesToGo(dst []byte, src Value) int

CopyBytesToGo将字节从Uint8Array src复制到dst. 它返回复制的字节数,这将是src和dst的最小长度. 如果src不是Uint8Array,则CopyBytesToGo会出现混乱.

func CopyBytesToJS

func CopyBytesToJS(dst Value, src []byte) int

CopyBytesToJS将字节从src复制到Uint8Array dst. 它返回复制的字节数,这将是src和dst的最小长度. 如果dst不是Uint8Array,则CopyBytesToJS会出现混乱.

type Error

错误会包装JavaScript错误.

type Error struct {
    // Value is the underlying JavaScript error value.
    Value
}

func (Error) Error

func (e Error) Error() string

Error实现错误接口.

type Func

Func是包装的Go函数,将由JavaScript调用.

type Func struct {
    Value // the JavaScript function that invokes the Go function
    // contains filtered or unexported fields
}

func FuncOf

func FuncOf(fn func(this Value, args []Value) interface{}) Func

FuncOf返回包装的函数.

调用JavaScript函数将使用JavaScript的" this"关键字的值和调用的参数来同步调用Go函数fn. 调用的返回值是根据ValueOf将Go函数映射回JavaScript的结果.

在从Go到JavaScript的调用期间触发的包装函数将在同一goroutine上执行. 由JavaScript的事件循环触发的包装函数将在额外的goroutine上执行. 包装函数中的阻塞操作将阻塞事件循环. 结果,如果一个包装的功能块被阻止,其他包装的功能将不被处理. 因此,阻塞函数应显式启动新的goroutine.

当不再使用该函数时,必须调用Func.Release以释放资源.

Example

Code:

var cb js.Func
cb = js.FuncOf(func(this js.Value, args []js.Value) interface{} {
    fmt.Println("button clicked")
    cb.Release() // release the function if the button will not be clicked again
    return nil
})
js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)

func (Func) Release

func (c Func) Release()

Release释放为该功能分配的资源. 调用Release之后不得调用该函数.

type Type

类型代表值的JavaScript类型.

type Type int
const (
    TypeUndefined Type = iota
    TypeNull
    TypeBoolean
    TypeNumber
    TypeString
    TypeSymbol
    TypeObject
    TypeFunction
)

func (Type) String

func (t Type) String() string

type Value

值表示JavaScript值. 零值是JavaScript值"未定义".

type Value struct {
    // contains filtered or unexported fields
}

func Global

func Global() Value

全局返回JavaScript全局对象,通常是"窗口"或"全局".

func Null

func Null() Value

Null返回JavaScript值" null".

func Undefined

func Undefined() Value

未定义将返回JavaScript值"未定义".

func ValueOf

func ValueOf(x interface{}) Value

ValueOf返回x作为JavaScript值:

| Go                     | JavaScript             |
| ---------------------- | ---------------------- |
| js.Value               | [its value]            |
| js.Func                | function               |
| nil                    | null                   |
| bool                   | boolean                |
| integers and floats    | number                 |
| string                 | string                 |
| []interface{}          | new array              |
| map[string]interface{} | new object             |

如果x不是期望的类型之一,则发生恐慌.

func (Value) Bool

func (v Value) Bool() bool

布尔返回值v作为布尔. 如果v不是JavaScript布尔值,它将感到恐慌.

func (Value) Call

func (v Value) Call(m string, args ...interface{}) Value

Call使用给定的参数对值v的方法m进行JavaScript调用. 如果v没有方法m,它将感到恐慌. 根据ValueOf函数将参数映射到JavaScript值.

func (Value) Float

func (v Value) Float() float64

Float返回值v作为float64. 如果v不是JavaScript编号,它会感到恐慌.

func (Value) Get

func (v Value) Get(p string) Value

Get返回值v的JavaScript属性p.如果v不是JavaScript对象,它将发生恐慌.

func (Value) Index

func (v Value) Index(i int) Value

索引返回值为v的JavaScript索引i.如果v不是JavaScript对象,它将恐慌.

func (Value) InstanceOf

func (v Value) InstanceOf(t Value) bool

InstanceOf根据JavaScript的instanceof运算符报告v是否是类型t的实例.

func (Value) Int

func (v Value) Int() int

Int返回截断为int的值v. 如果v不是JavaScript编号,它会感到恐慌.

func (Value) Invoke

func (v Value) Invoke(args ...interface{}) Value

调用使用给定参数对值v进行JavaScript调用. 如果v不是JavaScript函数,它会感到恐慌. 根据ValueOf函数将参数映射到JavaScript值.

func (Value) JSValue

func (v Value) JSValue() Value

JSValue实现Wrapper接口.

func (Value) Length

func (v Value) Length() int

Length返回v的JavaScript属性" length".如果v不是JavaScript对象,则发生错误.

func (Value) New

func (v Value) New(args ...interface{}) Value

New使用值为v的JavaScript的" new"运算符作为构造函数和给定参数. 如果v不是JavaScript函数,它会感到恐慌. 根据ValueOf函数将参数映射到JavaScript值.

func (Value) Set

func (v Value) Set(p string, x interface{})

Set将值v的JavaScript属性p设置为ValueOf(x). 如果v不是JavaScript对象,它会感到恐慌.

func (Value) SetIndex

func (v Value) SetIndex(i int, x interface{})

SetIndex将值v的JavaScript索引i设置为ValueOf(x). 如果v不是JavaScript对象,它会感到恐慌.

func (Value) String

func (v Value) String() string

字符串返回值v作为字符串. 由于Go的String方法约定,String是一种特殊情况. 与其他吸气剂不同,如果v的Type不是TypeString,它不会惊慌. 而是返回格式为" <T>"或" <T:V>"的字符串,其中T是v的类型,V是v的值的字符串表示形式.

func (Value) Truthy

func (v Value) Truthy() bool

Truthy返回值v的JavaScript"真实性".在JavaScript中,false,0,"",null,undefined和NaN为" falsy",其他所有内容均为" truthy". 请参阅https://developer.mozilla.org/en-US/docs/Glossary/Truthy .

func (Value) Type

func (v Value) Type() Type

Type返回值v的JavaScript类型.它类似于JavaScript的typeof运算符,不同之处在于它返回TypeNull而不是TypeObject表示null.

type ValueError

在不支持Value的Value方法上调用Value方法时,会发生ValueError. 在每种方法的说明中都记录了这种情况.

type ValueError struct {
    Method string
    Type   Type
}

func (*ValueError) Error

func (e *ValueError) Error() string

type Wrapper

包装器由JavaScript值支持的类型实现.

type Wrapper interface {
    // JSValue returns a JavaScript value associated with an object.
    JSValue() Value
}

by  ICOPY.SITE