Reflect.set(loadValue(sp + 8), loadString(sp + 16), loadValue(sp + 32));
},
+ // func valueDelete(v ref, p string)
+ "syscall/js.valueDelete": (sp) => {
+ Reflect.deleteProperty(loadValue(sp + 8), loadString(sp + 16));
+ },
+
// func valueIndex(v ref, i int) ref
"syscall/js.valueIndex": (sp) => {
storeValue(sp + 24, Reflect.get(loadValue(sp + 8), getInt64(sp + 16)));
func valueSet(v ref, p string, x ref)
+// Delete deletes the JavaScript property p of value v.
+// It panics if v is not a JavaScript object.
+func (v Value) Delete(p string) {
+ if vType := v.Type(); !vType.isObject() {
+ panic(&ValueError{"Value.Delete", vType})
+ }
+ valueDelete(v.ref, p)
+}
+
+func valueDelete(v ref, p string)
+
// Index returns JavaScript index i of value v.
// It panics if v is not a JavaScript object.
func (v Value) Index(i int) Value {
CallImport
RET
+TEXT ·valueDelete(SB), NOSPLIT, $0
+ CallImport
+ RET
+
TEXT ·valueIndex(SB), NOSPLIT, $0
CallImport
RET
})
}
+func TestDelete(t *testing.T) {
+ dummys.Set("test", 42)
+ dummys.Delete("test")
+ if dummys.Call("hasOwnProperty", "test").Bool() {
+ t.Errorf("property still exists")
+ }
+
+ expectValueError(t, func() {
+ dummys.Get("zero").Delete("badField")
+ })
+}
+
func TestIndex(t *testing.T) {
if got := dummys.Get("someArray").Index(1).Int(); got != 42 {
t.Errorf("got %#v, want %#v", got, 42)