1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/*
* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/licenses/publicdomain/
*/
/* 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);
|