summaryrefslogtreecommitdiff
path: root/src/syscall/js
diff options
context:
space:
mode:
authorRichard Musiol <mail@richard-musiol.de>2018-06-15 10:45:04 +0200
committerBrad Fitzpatrick <bradfitz@golang.org>2018-06-25 17:03:20 +0000
commit9c35c1a50306f61949e0c76e5871b1033b3fd84d (patch)
treebb73cf8ee4bb2626366ca55643977fd7c54c2eb2 /src/syscall/js
parent6fdbed0543cf8f4e21ab45938f5b04028877e861 (diff)
downloadgo-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.go7
-rw-r--r--src/syscall/js/js_js.s4
-rw-r--r--src/syscall/js/js_test.go10
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) {