Spec-Zone.ru › JavaScript

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)

Тип ошибки

TypeError

Что пошло не так?

Цикл был введен в цепочку прототипов. Это означает, что при прохождении по этой цепочке прототипов одно и то же место доступа будет достигаться снова и снова, вместо того чтобы в конечном итоге достичь 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API