michael@0: // Return the descriptor returned by the trap michael@0: var target = {}; michael@0: Object.defineProperty(target, 'foo', { michael@0: value: 'bar', michael@0: writable: true, michael@0: enumerable: false, michael@0: configurable: true michael@0: }); michael@0: var desc = { michael@0: value: 'baz', michael@0: writable: false, michael@0: enumerable: true, michael@0: configurable: true michael@0: }; michael@0: var desc1 = Object.getOwnPropertyDescriptor(new Proxy(target, { michael@0: getOwnPropertyDescriptor: function (target, name) { michael@0: return desc; michael@0: } michael@0: }), 'foo'); michael@0: assertEq(desc1 == desc, false); michael@0: assertEq(desc1.value, 'baz'); michael@0: assertEq(desc1.writable, false); michael@0: assertEq(desc1.enumerable, true); michael@0: assertEq(desc1.configurable, true); michael@0: michael@0: var desc = {}; michael@0: var desc1 = Object.getOwnPropertyDescriptor(new Proxy(target, { michael@0: getOwnPropertyDescriptor: function (target, name) { michael@0: return desc; michael@0: } michael@0: }), 'foo'); michael@0: assertEq(desc1 == desc, false); michael@0: assertEq(desc1.value, undefined); michael@0: assertEq(desc1.writable, false); michael@0: assertEq(desc1.enumerable, false); michael@0: assertEq(desc1.configurable, false);