...

パッケージ js

import "syscall/js"
概要
目次

概要 ▾

js パッケージは,js/wasm アーキテクチャを使う際に,WebAssembly ホスト環境へのアクセスを提供します。 この API は,JavaScript に基づいています。

このパッケージは実験的なものです。 現在の範囲はテストの実行を許可することだけですが,まだユーザーに包括的な API を提供することはしていません。 Go 互換性の約束から免除されています。

func CopyBytesToGo

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

CopyBytesToGo copies bytes from the Uint8Array src to dst. It returns the number of bytes copied, which will be the minimum of the lengths of src and dst. CopyBytesToGo panics if src is not an Uint8Array.

func CopyBytesToJS

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

CopyBytesToJS copies bytes from src to the Uint8Array dst. It returns the number of bytes copied, which will be the minimum of the lengths of src and dst. CopyBytesToJS panics if dst is not an Uint8Array.

type Error

エラーは JavaScript エラーをラップします。

type Error struct {
    // 値は JavaScript の内部のエラー値です。
    Value
}

func (Error) Error

func (e Error) Error() string

Error はエラーインターフェースを実装します。

type Func

Func は JavaScript によって呼び出されるラップされた Go 関数です。

type Func struct {
    Value // Go 関数を呼び出す JavaScript 関数
    // エクスポートされていないフィールドがあります
}

func FuncOf

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

FuncOf はラップされた関数を返します。

JavaScript 関数を呼び出すと, JavaScript の "this" キーワードの値と呼び出しの引数を使用して, Go 関数 fn が同期的に呼び出されます。 呼び出しの戻り値は, ValueOf に従って JavaScript にマッピングされた Go 関数の結果です。

Go から JavaScript への呼び出し中に起動されたラップされた関数は,同じゴルーチンで実行されます。 JavaScript のイベントループによってトリガーされたラップされた関数は,追加のゴルーチンで実行されます。 ラップされた関数内のブロック操作はイベントループをブロックします。 結果として, 1 つのラップされた機能ブロックがある場合,他のラップされた機能は処理されません。 したがって,ブロッキング関数は明示的に新しいゴルーチンを開始する必要があります。

機能が使用されなくなったときに Func.Release を呼び出してリソースを解放する必要があります。

コード:

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 を呼び出した後に関数を呼び出してはいけません。

type 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 の値 "undefined" です。

type Value struct {
    // エクスポートされていないフィールドがあります
}

func Global

func Global() Value

Global は, JavaScript のグローバルオブジェクト,通常は "window" または "global" を返します。

func Null

func Null() Value

Null は JavaScript の値 "null" を返します。

func Undefined

func Undefined() Value

Undefined は JavaScript の値 "undefined" を返します。

func ValueOf

func ValueOf(x interface{}) Value

ValueOf は JavaScript の値として x を返します。

| 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 が期待される型の 1 つではない場合,パニックします。

func (Value) Bool

func (v Value) Bool() bool

Bool returns the value v as a bool. It panics if v is not a JavaScript boolean.

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 returns the value v as a float64. It panics if v is not a JavaScript number.

func (Value) Get

func (v Value) Get(p string) Value

Get は,値 v の JavaScript プロパティ p を返します。 It panics if v is not a JavaScript object.

func (Value) Index

func (v Value) Index(i int) Value

Index は,値 v の JavaScript インデックス i を返します。 It panics if v is not a JavaScript object.

func (Value) InstanceOf

func (v Value) InstanceOf(t Value) bool

InstanceOf は, JavaScript の instanceof 演算子に従って, v が t 型のインスタンスであるかどうかを報告します。

func (Value) Int

func (v Value) Int() int

Int returns the value v truncated to an int. It panics if v is not a JavaScript number.

func (Value) Invoke

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

Invoke does a JavaScript call of the value v with the given arguments. It panics if v is not a JavaScript function. The arguments get mapped to JavaScript values according to the ValueOf function.

func (Value) JSValue

func (v Value) JSValue() Value

JSValue は Wrapper インターフェースを実装します。

func (Value) Length

func (v Value) Length() int

Length は, v の JavaScript プロパティ "length" を返します。 It panics if v is not a JavaScript object.

func (Value) New

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

New uses JavaScript's "new" operator with value v as constructor and the given arguments. It panics if v is not a JavaScript function. The arguments get mapped to JavaScript values according to the ValueOf function.

func (Value) Set

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

Set は,値 v の JavaScript プロパティ p を ValueOf(x) に設定します。 It panics if v is not a JavaScript object.

func (Value) SetIndex

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

SetIndex は,値 v の JavaScript インデックス i を ValueOf(x) に設定します。 It panics if v is not a JavaScript object.

func (Value) String

func (v Value) String() string

String returns the value v as a string. String is a special case because of Go's String method convention. Unlike the other getters, it does not panic if v's Type is not TypeString. Instead, it returns a string of the form "<T>" or "<T: V>" where T is v's type and V is a string representation of v's value.

func (Value) Truthy

func (v Value) Truthy() bool

Truthy は,値 v の JavaScript の " 真実性 " を返します。 JavaScript では, false, 0, "", null, undefined ,および NaN は " 偽造 " であり,それ以外はすべて " 真実 " です。 https://developer.mozilla.org/en-US/docs/Glossary/Truthy を参照してください。

func (Value) Type

func (v Value) Type() Type

Type は,値 v の JavaScript 型を返します。 これは, null の場合は TypeObject ではなく TypeNull を返す点を除いて, JavaScript の typeof 演算子と似ています。

type ValueError

ValueError は,それをサポートしていない Value に対して Value メソッドが呼び出されると発生します。 そのような場合は,各メソッドの説明に記載されています。

type ValueError struct {
    Method string
    Type   Type
}

func (*ValueError) Error

func (e *ValueError) Error() string

type Wrapper

ラッパーは JavaScript の値に裏打ちされた型によって実装されます。

type Wrapper interface {
    // JSValue は,オブジェクトに関連付けられた JavaScript の値を返します。
    JSValue() Value
}