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
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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