array-species-create.js (1268B)
1 function testSelfHosted() { 2 var g = newGlobal({sameCompartmentAs: this}); 3 var arr = g.evaluate("[1, 2]"); 4 for (var i = 0; i < 20; i++) { 5 var mapped = Array.prototype.map.call(arr, x => x + 1); 6 assertEq(mapped.constructor, Array); 7 } 8 } 9 testSelfHosted(); 10 11 function testNative() { 12 var g = newGlobal({sameCompartmentAs: this}); 13 var arr = g.evaluate("[1, 2, 3, 4]"); 14 for (var i = 0; i < 20; i++) { 15 var slice = Array.prototype.slice.call(arr, 0, 3); 16 assertEq(slice.constructor, Array); 17 } 18 } 19 testNative(); 20 21 function testIntrinsic() { 22 var g1 = newGlobal({sameCompartmentAs: this}); 23 var g2 = newGlobal(); 24 var IsCrossRealmArrayConstructor = getSelfHostedValue("IsCrossRealmArrayConstructor"); 25 for (var i = 0; i < 20; i++) { 26 assertEq(IsCrossRealmArrayConstructor(Array), false); 27 assertEq(IsCrossRealmArrayConstructor(Math), false); 28 assertEq(IsCrossRealmArrayConstructor(() => 1), false); 29 assertEq(IsCrossRealmArrayConstructor(g1.Array), true); 30 assertEq(IsCrossRealmArrayConstructor(g2.Array), true); 31 assertEq(IsCrossRealmArrayConstructor(g1.assertEq), false); 32 assertEq(IsCrossRealmArrayConstructor(g2.assertEq), false); 33 } 34 } 35 testIntrinsic();