mirror of
https://github.com/robertkrimen/otto
synced 2025-10-19 19:55:30 +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.value = descriptor.value
|
||||
} else {
|
||||
property.writeOn()
|
||||
if descriptor.writable() {
|
||||
property.writeOn()
|
||||
} else {
|
||||
property.writeOff()
|
||||
}
|
||||
property.value = descriptor.value
|
||||
}
|
||||
} else if isDataDescriptor && descriptor.isDataDescriptor() {
|
||||
|
|
|
|||
|
|
@ -445,6 +445,22 @@ func TestObjectGetterSetter(t *testing.T) {
|
|||
var def = Object.getOwnPropertyDescriptor(abc, "def");
|
||||
[ 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")
|
||||
|
||||
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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user