Source code

Revision control

Copy as Markdown

Other Tools

/*
* Any copyright is dedicated to the Public Domain.
*/
/* Object.freeze */
function getme() { return 42; };
function setme(x) { };
var properties = { all: { value:1, writable:true, configurable:true, enumerable: true },
readOnly: { value:2, writable:false, configurable:true, enumerable: true },
nonConfig: { value:3, writable:true, configurable:false, enumerable: true },
none: { value:4, writable:false, configurable:false, enumerable: true },
getter: { get: getme, configurable:false, enumerable: true },
setter: { set: setme, configurable:false, enumerable: true },
getandset: { get: getme, set: setme, configurable:false, enumerable: true }
};
var o = Object.defineProperties({}, properties);
Object.freeze(o);
function getPropertyOf(obj) {
return function (prop) {
return Object.getOwnPropertyDescriptor(obj, prop);
};
};
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'all'),
{ value: 1, writable:false, enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'readOnly'),
{ value: 2, writable:false, enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'nonConfig'),
{ value: 3, writable:false, enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'none'),
{ value: 4, writable:false, enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getter'),
{ get: getme, set: (void 0), enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'setter'),
{ set: setme, get: (void 0), enumerable:true, configurable:false }),
true);
assertEq(deepEqual(Object.getOwnPropertyDescriptor(o, 'getandset'),
{ get: getme, set: setme, enumerable:true, configurable:false }),
true);
reportCompare(true, true);