diff options
author | Richard Musiol <mail@richard-musiol.de> | 2018-06-15 10:45:04 +0200 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2018-06-25 17:03:20 +0000 |
commit | 9c35c1a50306f61949e0c76e5871b1033b3fd84d (patch) | |
tree | bb73cf8ee4bb2626366ca55643977fd7c54c2eb2 /src/syscall/js | |
parent | 6fdbed0543cf8f4e21ab45938f5b04028877e861 (diff) | |
download | go-git-9c35c1a50306f61949e0c76e5871b1033b3fd84d.tar.gz |
syscall.js: add Value.InstanceOf
Change-Id: Icf56188fdb2b8ce6789830a35608203fdb9a3df6
Reviewed-on: https://go-review.googlesource.com/120560
Reviewed-by: Paul Jolly <paul@myitcv.org.uk>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/syscall/js')
-rw-r--r-- | src/syscall/js/js.go | 7 | ||||
-rw-r--r-- | src/syscall/js/js_js.s | 4 | ||||
-rw-r--r-- | src/syscall/js/js_test.go | 10 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/syscall/js/js.go b/src/syscall/js/js.go index 34d70d40cb..cbd0730c64 100644 --- a/src/syscall/js/js.go +++ b/src/syscall/js/js.go @@ -227,3 +227,10 @@ func (v Value) String() string { func valuePrepareString(v ref) (ref, int) func valueLoadString(v ref, b []byte) + +// InstanceOf reports whether v is an instance of type t according to JavaScript's instanceof operator. +func (v Value) InstanceOf(t Value) bool { + return valueInstanceOf(v.ref, t.ref) +} + +func valueInstanceOf(v ref, t ref) bool diff --git a/src/syscall/js/js_js.s b/src/syscall/js/js_js.s index d1ee4654a7..cb90d88a6a 100644 --- a/src/syscall/js/js_js.s +++ b/src/syscall/js/js_js.s @@ -71,3 +71,7 @@ TEXT ·valuePrepareString(SB), NOSPLIT, $0 TEXT ·valueLoadString(SB), NOSPLIT, $0 CallImport RET + +TEXT ·valueInstanceOf(SB), NOSPLIT, $0 + CallImport + RET diff --git a/src/syscall/js/js_test.go b/src/syscall/js/js_test.go index 7d5b1a238a..53d21a3f4f 100644 --- a/src/syscall/js/js_test.go +++ b/src/syscall/js/js_test.go @@ -146,6 +146,16 @@ func TestNew(t *testing.T) { } } +func TestInstanceOf(t *testing.T) { + someArray := js.Global.Get("Array").New() + if got, want := someArray.InstanceOf(js.Global.Get("Array")), true; got != want { + t.Errorf("got %#v, want %#v", got, want) + } + if got, want := someArray.InstanceOf(js.Global.Get("Function")), false; got != want { + t.Errorf("got %#v, want %#v", got, want) + } +} + func TestCallback(t *testing.T) { c := make(chan struct{}) cb := js.NewCallback(func(args []js.Value) { |