load(libdir + "asserts.js" );
function testProxy(handlerReturn, prop, shouldThrow) {
var handler = { get: function () { return handlerReturn; } };
for (let p of [new Proxy(target, handler), Proxy.revocable(target, handler).proxy]) {
if (shouldThrow)
assertThrowsInstanceOf(function () { return p[prop]; }, TypeError);
else
assertEq(p[prop], handlerReturn);
}
}
/*
* Throw a TypeError if the trap reports a different value for a non - writable ,
* non - configurable property
*/
var target = {};
Object.defineProperty(target, 'foo' , {
value: 'bar' ,
writable: false ,
configurable: false
});
testProxy('baz' , 'foo' , true );
/*
* Don ' t throw a TypeError if the trap reports the same value for a non - writable ,
* non - configurable property
*/
testProxy('bar' , 'foo' , false );
/*
* Don ' t throw a TypeError if the trap reports a different value for a writable ,
* non - configurable property
*/
Object.defineProperty(target, 'prop' , {
value: 'bar' ,
writable: true ,
configurable: false
});
testProxy('baz' , 'prop' , false );
/*
* Don ' t throw a TypeError if the trap reports a different value for a non - writable ,
* configurable property
*/
Object.defineProperty(target, 'prop2' , {
value: 'bar' ,
writable: false ,
configurable: true
});
testProxy('baz' , 'prop2' , false );
Messung V0.5 in Prozent C=91 H=95 G=92
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland