|
1 /* |
|
2 * Call the trap with the handler as the this value, the target as the first |
|
3 * argument, the name of the property as the second argument, and the descriptor |
|
4 * as the third argument. |
|
5 */ |
|
6 var target = {}; |
|
7 var called = false; |
|
8 var handler = { |
|
9 defineProperty: function (target1, name, desc1) { |
|
10 assertEq(this, handler); |
|
11 assertEq(target1, target); |
|
12 assertEq(name, 'foo'); |
|
13 assertEq(desc1 == desc, false); |
|
14 assertEq(desc1.value, 'bar'); |
|
15 assertEq(desc1.writable, true); |
|
16 assertEq(desc1.enumerable, false); |
|
17 assertEq(desc1.configurable, true); |
|
18 called = true; |
|
19 } |
|
20 } |
|
21 var desc = { |
|
22 value: 'bar', |
|
23 writable: true, |
|
24 enumerable: false, |
|
25 configurable: true |
|
26 }; |
|
27 |
|
28 var p = new Proxy(target, handler); |
|
29 Object.defineProperty(p, 'foo', desc); |
|
30 assertEq(called, true); |
|
31 assertEq(Object.isExtensible(target), true); |
|
32 assertEq(Object.isExtensible(p), true); |
|
33 Object.preventExtensions(target); |
|
34 assertEq(Object.isExtensible(target), false); |
|
35 assertEq(Object.isExtensible(p), false); |