testDirectProxyGetOwnPropertyDescriptor10.js (1156B)
1 // Return a new descriptor object that agrees with that returned by the trap 2 var target = {}; 3 Object.defineProperty(target, 'foo', { 4 value: 'bar', 5 writable: true, 6 enumerable: false, 7 configurable: true 8 }); 9 10 var desc = { 11 value: 'baz', 12 writable: false, 13 enumerable: true, 14 configurable: true 15 }; 16 var handler = { getOwnPropertyDescriptor: function () { return desc; } }; 17 for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) { 18 var desc1 = Object.getOwnPropertyDescriptor(p, 'foo'); 19 assertEq(desc1 == desc, false); 20 assertEq(desc1.value, 'baz'); 21 assertEq(desc1.writable, false); 22 assertEq(desc1.enumerable, true); 23 assertEq(desc1.configurable, true); 24 } 25 26 // The returned descriptor must agree in configurability. 27 desc = { configurable : true }; 28 for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) { 29 var desc1 = Object.getOwnPropertyDescriptor(p, 'foo'); 30 assertEq(desc1 == desc, false); 31 assertEq(desc1.value, undefined); 32 assertEq(desc1.writable, false); 33 assertEq(desc1.enumerable, false); 34 assertEq(desc1.configurable, true); 35 }