TypeError: не удается установить прототип: это вызвало бы цикл цепочки прототипов
Исключение JavaScript "TypeError: не удается установить прототип: это вызвало бы цикл цепочки прототипов" возникает, когда прототипу объекта присваивается объект таким образом, что цепочка прототипов становится циклической (a и b имеют друг друга в своих цепочках прототипов).
Сообщение
TypeError: Cyclic __proto__ value (V8-based) TypeError: can't set prototype: it would cause a prototype chain cycle (Firefox) TypeError: cyclic __proto__ value (Safari)
Тип ошибки
Что пошло не так?
Цикл был введен в цепочку прототипов. Это означает, что при прохождении по этой цепочке прототипов одно и то же место доступа будет достигаться снова и снова, вместо того чтобы в конечном итоге достичь null.
Эта ошибка выбрасывается во время установки прототипа. В такой операции, как Object.setPrototypeOf(a, b), если a уже существует в цепочке прототипов b, будет выброшена эта ошибка.
Примеры
const a = {};
Object.setPrototypeOf(a, a);
// TypeError: can't set prototype: it would cause a prototype chain cycle
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
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_prototype