1
0
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:
Robert Krimen 2014-02-13 21:38:20 -08:00
parent 57e0a468ac
commit ee1cce94ef
2 changed files with 21 additions and 1 deletions

View File

@ -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() {

View File

@ -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) {