class Y {
a() {
assertEq(this .__proto__, X.prototype);
return 1 ;
}
b() {
assertEq(this .__proto__, X.prototype);
return 2 ;
}
}
class X extends Y {
a() { throw "not invoked" ; }
b() {
return super .a() + super .b();
}
c(i) {
var a, b;
if (i % 2 ) {
a = "a" ;
b = "b"
} else {
a = "b" ;
b = "a" ;
}
return super [a]() + super [b]();
}
}
function simple() {
var x = new X();
assertEq(x.b(), 3 );
assertEq(x.c(), 3 );
}
class A {
b() { return 1 ;}
}
class B extends A {
a() {
assertEq(super .b(), 1 );
}
}
function nullHomeObjectSuperBase(i) {
var b = new B();
if (i == 500 ) {
Object.setPrototypeOf(B.prototype, null );
// Don't crash
}
b.a();
}
class SArray extends Array {
constructor() {
super ("a" , "b" );
}
a() {
assertEq(super .length, 0 );
assertEq(this .length, 2 );
assertEq(this [0 ], "a" );
assertEq(this [1 ], "b" );
assertEq(super [0 ], undefined);
assertEq(super [1 ], undefined);
}
}
function array() {
var s = new SArray();
s.a();
}
for (var i = 0 ; i < 1 e4; i++) {
simple();
array();
try {
nullHomeObjectSuperBase(i);
} catch (e) {
assertEq(i >= 500 , true );
}
}
Messung V0.5 in Prozent C=99 H=96 G=97
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland