bound-construct-derived-class-ctor.js (1460B)
1 class Base { 2 constructor(b) { 3 this.b = b; 4 } 5 } 6 class Derived extends Base { 7 constructor(a, b) { 8 super(b); 9 this.a = a; 10 } 11 } 12 13 function testSimple() { 14 var boundCtor = Derived.bind(null, 1); 15 for (var i = 0; i < 100; i++) { 16 var o = new boundCtor(2); 17 assertEq(o.a, 1); 18 assertEq(o.b, 2); 19 20 } 21 } 22 testSimple(); 23 24 function testMegamorphic() { 25 var ctors = [ 26 function(a, b) { this.a = a; this.b = b; this.c = 1; }.bind(null, 1), 27 function(a, b) { this.a = a; this.b = b; this.c = 2; }.bind(null, 1), 28 function(a, b) { this.a = a; this.b = b; this.c = 3; }.bind(null, 1), 29 function(a, b) { this.a = a; this.b = b; this.c = 4; }.bind(null, 1), 30 function(a, b) { this.a = a; this.b = b; this.c = 5; }.bind(null, 1), 31 function(a, b) { this.a = a; this.b = b; this.c = 6; }.bind(null, 1), 32 function(a, b) { this.a = a; this.b = b; this.c = 7; }.bind(null, 1), 33 function(a, b) { this.a = a; this.b = b; this.c = 8; }.bind(null, 1), 34 function(a, b) { this.a = a; this.b = b; this.c = 9; }.bind(null, 1), 35 function(a, b) { this.a = a; this.b = b; this.c = 10; }.bind(null, 1), 36 Derived.bind(null, 1), 37 Derived.bind(null, 1), 38 ]; 39 for (var i = 0; i < 100; i++) { 40 var ctor = ctors[i % ctors.length]; 41 var o = new ctor(2); 42 assertEq(o.a, 1); 43 assertEq(o.b, 2); 44 } 45 } 46 testMegamorphic();