function testBasicWeakMap() { var objs = [{}, Math, this, [], {}]; var wm = new WeakMap(); for (var i = 0; i < objs.length - 1; i++) {
wm.set(objs[i], i);
} var res = 0; for (var i = 0; i < 100; i++) { var idx = i % objs.length; var obj = objs[idx]; if (wm.has(obj)) {
assertEq(idx < 4, true);
res += wm.get(obj);
wm.set(obj, wm.get(obj) + 1);
} else {
assertEq(idx, 4);
assertEq(wm.get(obj), undefined);
}
}
assertEq(res, 880);
}
testBasicWeakMap();
function testBasicWeakSet() { var objs = [{}, Math, this, [], {}]; var ws = new WeakSet(); for (var i = 0; i < objs.length - 1; i++) {
ws.add(objs[i]);
} for (var i = 0; i < 100; i++) { var idx = i % objs.length; var obj = objs[idx];
assertEq(ws.has(obj), idx < 4);
}
}
testBasicWeakSet();
function testWeakMapKeyGuard() { var obj1 = {}, obj2 = {}; var wm = new WeakMap([[obj1, obj2]]); var arr = [obj1, "foo"]; for (var i = 0; i < 100; i++) { var key = arr[(i >= 95) | 0]; var val = wm.get(key);
assertEq(val, i < 95 ? obj2 : undefined); var has = wm.has(key);
assertEq(has, i < 95);
}
}
testWeakMapKeyGuard();
function testWeakSetKeyGuard() { var obj1 = {}; var ws = new WeakSet([obj1]); var arr = [obj1, "foo"]; for (var i = 0; i < 100; i++) { var key = arr[(i >= 95) | 0]; var has = ws.has(key);
assertEq(has, i < 95);
}
}
testWeakSetKeyGuard();
function testWeakMapThisGuard() { var obj1 = {}, obj2 = {}; var wm = new WeakMap([[obj1, obj2]]); var arr = [wm, {get: WeakMap.prototype.get}]; for (var i = 0; i < 100; i++) { var m = arr[(i >= 95) | 0]; var threw = false; try {
assertEq(m.get(obj1), obj2);
} catch (e) {
threw = true;
}
assertEq(threw, i >= 95);
}
}
testWeakMapThisGuard();
function testWeakSetThisGuard() { var obj1 = {}; var ws = new WeakSet([obj1]); var arr = [ws, {has: WeakSet.prototype.has}]; for (var i = 0; i < 100; i++) { var s = arr[(i >= 95) | 0]; var threw = false; try {
assertEq(s.has(obj1), true);
} catch (e) {
threw = true;
}
assertEq(threw, i >= 95);
}
}
testWeakSetThisGuard();
function testWeakMapEmptyGet() { var obj = {}; var wm1 = new WeakMap([[obj, 1]]); var wm2 = new WeakMap(); function get(wm) { return wm.get(obj); } for (var i = 0; i < 100; i++) { var val = get(i < 95 ? wm1 : wm2);
assertEq(val, i < 95 ? 1 : undefined);
}
}
testWeakMapEmptyGet();
function testWeakMapEmptyHas() { var obj = {}; var wm1 = new WeakMap([[obj, 1]]); var wm2 = new WeakMap(); function has(wm) { return wm.has(obj); } for (var i = 0; i < 100; i++) { var val = has(i < 95 ? wm1 : wm2);
assertEq(val, i < 95);
}
}
testWeakMapEmptyHas();
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.