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 < 1e4; i++) {
simple();
array();
try {
nullHomeObjectSuperBase(i);
} catch (e) {
assertEq(i >= 500, true );
}
}
Messung V0.5 in Prozent C=90 H=79 G=84
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-04-25)
¤
*© Formatika GbR, Deutschland