Spec-Zone.ru › JavaScript

Reflect.setPrototypeOf()

Базовая линия Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2016 года.

Статический метод Reflect.setPrototypeOf() похож на Object.setPrototypeOf(), но возвращает Boolean. Он устанавливает прототип (то есть внутренний [[Prototype]]) указанного объекта.

Попробуйте

const object1 = {};

console.log(Reflect.setPrototypeOf(object1, Object.prototype));
// Expected output: true

console.log(Reflect.setPrototypeOf(object1, null));
// Expected output: true

const object2 = {};

console.log(Reflect.setPrototypeOf(Object.freeze(object2), null));
// Expected output: false

Синтаксис

Reflect.setPrototypeOf(target, prototype)

Параметры

target
Целевой объект, для которого нужно установить прототип.
prototype
Новый прототип объекта (объект или null).

Возвращаемое значение

Boolean, указывающий, был ли успешно установлен прототип.

Исключения

TypeError
Выбрасывается, если target не является объектом, или если prototype не является ни объектом, ни null.

Описание

Reflect.setPrototypeOf() предоставляет отражающую семантику установки прототипа объекта. На очень низком уровне установка прототипа возвращает булево значение (как и в случае с обработчиком прокси). Object.setPrototypeOf() предоставляет почти ту же семантику, но выбрасывает TypeError, если статус false (операция была неудачной), в то время как Reflect.setPrototypeOf() напрямую возвращает статус.

Reflect.setPrototypeOf() вызывает внутренний метод объекта [[SetPrototypeOf]] target.

Примеры

Использование Reflect.setPrototypeOf()

Reflect.setPrototypeOf({}, Object.prototype); // true

// It can change an object's [[Prototype]] to null.
Reflect.setPrototypeOf({}, null); // true

// Returns false if target is not extensible.
Reflect.setPrototypeOf(Object.freeze({}), null); // false

// Returns false if it cause a prototype chain cycle.
const target = {};
const proto = Object.create(target);
Reflect.setPrototypeOf(target, proto); // false

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-reflect.setprototypeof

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
setPrototypeOf
49
12
42
36
10
49
42
36
10
5.0
49
10
1.0.0
1.0
6.0.0

См. также

  • Polyfill Reflect.setPrototypeOf в core-js
  • Reflect
  • Object.setPrototypeOf()
  • handler.setPrototypeOf()

© 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/Global_Objects/Reflect/setPrototypeOf

Spec-Zone.ru

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