megamorphic-has-prop.js (920B)
1 function hasOwnProp(o, p) { 2 return Object.prototype.hasOwnProperty.call(o, p); 3 } 4 function testHasProp() { 5 var C = Object.create(null); 6 C.protox = 0; 7 var B = Object.create(C); 8 var objs = []; 9 for (var i = 0; i < 50; i++) { 10 var A = Object.create(B); 11 A["x" + i] = 0; 12 A.ownx = 3; 13 objs.push(A); 14 } 15 for (var i = 0; i < 10; i++) { 16 for (var j = 0; j < objs.length; j++) { 17 var obj = objs[j]; 18 assertEq(hasOwnProp(obj, "protox"), false); 19 assertEq("protox" in obj, true); 20 assertEq(obj.protox, 0); 21 22 assertEq(hasOwnProp(obj, "ownx"), true); 23 assertEq("ownx" in obj, true); 24 assertEq(obj.ownx, 3); 25 26 assertEq("missing" in obj, false); 27 assertEq(hasOwnProp(obj, "missing"), false); 28 assertEq(obj.missing, undefined); 29 } 30 } 31 } 32 testHasProp();