testDirectProxySet8.js (625B)
1 // Assigning to a proxy with no set handler calls the defineProperty handler 2 // when an existing inherited data property already exists. 3 4 var hits = 0; 5 var proto = {x: 1}; 6 var t = Object.create(proto); 7 var p = new Proxy(t, { 8 defineProperty(t, id, desc) { hits++; return true; } 9 }); 10 p.x = 2; 11 assertEq(hits, 1); 12 assertEq(proto.x, 1); 13 assertEq(t.hasOwnProperty("x"), false); 14 15 // Same thing, but the receiver is a plain object inheriting from p: 16 var receiver = Object.create(p); 17 receiver.x = 2; 18 assertEq(hits, 1); 19 assertEq(t.hasOwnProperty("x"), false); 20 assertEq(receiver.hasOwnProperty("x"), true); 21 assertEq(receiver.x, 2);