...

パッケージ js

import "syscall/js"
概要
目次

概要 ▾

js パッケージは,js/wasm アーキテクチャを使う際に,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

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

type Error struct {
    // Value は 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() // ボタンが再度クリックされない場合は、関数をリリースします
    return nil
})
js.Global().Get("document").Call("getElementById", "myButton").Call("addEventListener", "click", cb)

func (Func) Release

func (c Func) Release()

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

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 は,値 v を bool として返します。 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 を返します。 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 は, int に切り捨てられた値 v を返します。 v が JavaScript 番号でない場合,パニックします。

func (Value) Invoke

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

Invoke は,指定された引数を使用して値 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" を返します。 It panics if v is not a JavaScript object.

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) に設定します。 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 は,値 v を文字列として返します。文字列は, Go の文字列メソッドの規則のために特別なケースです。他のゲッターとは異なり, 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 は "偽" であり,それ以外はすべて "真" です。 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

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

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