mirror of
https://github.com/robertkrimen/otto
synced 2025-10-26 20:28:49 +08:00
If set === undefined => writable = false
This commit is contained in:
parent
57e0a468ac
commit
ee1cce94ef
|
|
@ -306,7 +306,11 @@ func objectDefineOwnProperty(self *_object, name string, descriptor _property, t
|
||||||
property.writeClear()
|
property.writeClear()
|
||||||
property.value = descriptor.value
|
property.value = descriptor.value
|
||||||
} else {
|
} else {
|
||||||
property.writeOn()
|
if descriptor.writable() {
|
||||||
|
property.writeOn()
|
||||||
|
} else {
|
||||||
|
property.writeOff()
|
||||||
|
}
|
||||||
property.value = descriptor.value
|
property.value = descriptor.value
|
||||||
}
|
}
|
||||||
} else if isDataDescriptor && descriptor.isDataDescriptor() {
|
} else if isDataDescriptor && descriptor.isDataDescriptor() {
|
||||||
|
|
|
||||||
|
|
@ -445,6 +445,22 @@ func TestObjectGetterSetter(t *testing.T) {
|
||||||
var def = Object.getOwnPropertyDescriptor(abc, "def");
|
var def = Object.getOwnPropertyDescriptor(abc, "def");
|
||||||
[ abc.def, typeof def.get, typeof def.set, typeof def.value, def.configurable, def.enumerable, typeof def.writable ];
|
[ abc.def, typeof def.get, typeof def.set, typeof def.value, def.configurable, def.enumerable, typeof def.writable ];
|
||||||
`, "5,function,undefined,undefined,true,false,undefined")
|
`, "5,function,undefined,undefined,true,false,undefined")
|
||||||
|
|
||||||
|
test(`
|
||||||
|
var abc = {};
|
||||||
|
Object.defineProperty(abc, "def", {
|
||||||
|
get: function() {
|
||||||
|
return 5;
|
||||||
|
}
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.preventExtensions(abc);
|
||||||
|
Object.defineProperty(abc, "def", {
|
||||||
|
value: "xyzzy",
|
||||||
|
});
|
||||||
|
var def = Object.getOwnPropertyDescriptor(abc, "def");
|
||||||
|
[ abc.def, typeof def.get, typeof def.set, def.value, def.configurable, def.enumerable, def.writable ];
|
||||||
|
`, "xyzzy,undefined,undefined,xyzzy,true,false,false")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestProperty(t *testing.T) {
|
func TestProperty(t *testing.T) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user