TypeError: can't set prototype: it would cause a prototype chain cycle

Der JavaScript-Ausnahmefehler "TypeError: can't set prototype: it would cause a prototype chain cycle" tritt auf, wenn das Prototyp eines Objekts so gesetzt wird, dass die Prototypkette zirkulär wird (a und b haben gegenseitig in ihren Prototypketten).

Nachricht

TypeError: Cyclic __proto__ value (V8-based)
TypeError: can't set prototype: it would cause a prototype chain cycle (Firefox)
TypeError: cyclic __proto__ value (Safari)

Fehlertyp

Was ist schiefgelaufen?

Eine Schleife, auch Zyklus genannt, wurde in eine Prototypkette eingeführt. Das bedeutet, dass beim Durchlaufen dieser Prototypkette immer wieder derselbe Punkt erreicht wird, anstatt schließlich null zu erreichen.

Dieser Fehler wird beim Setzen des Prototyps ausgelöst. In einer Operation wie Object.setPrototypeOf(a, b), wenn a bereits in der Prototypkette von b existiert, wird dieser Fehler ausgelöst.

Beispiele

js
const a = {};
Object.setPrototypeOf(a, a);
// TypeError: can't set prototype: it would cause a prototype chain cycle
js
const a = {};
const b = {};
const c = {};
Object.setPrototypeOf(a, b);
Object.setPrototypeOf(b, c);
Object.setPrototypeOf(c, a);
// TypeError: can't set prototype: it would cause a prototype chain cycle

Weitere Informationen