bug1651732-proxy-hasOwn.js (503B)
1 // An object with a custom [Symbol.toPrimitive] function. 2 var key = { 3 value: "a", 4 5 [Symbol.toPrimitive]() { 6 return this.value; 7 } 8 }; 9 10 var target = { 11 a: 0, 12 [Symbol.iterator]: 0, 13 }; 14 var obj = new Proxy(target, {}); 15 16 for (var i = 0; i < 100; ++i) { 17 // Change key[Symbol.toPrimitive] to return a symbol after some warm-up. 18 if (i > 80) { 19 key.value = Symbol.iterator; 20 } 21 22 // Attach an IC for JSOp::HasOwn on proxies. 23 assertEq(Object.prototype.hasOwnProperty.call(obj, key), true); 24 }