Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2015 г..
Предупреждение: Изменение прототипа [[Prototype]] объекта является, по самой природе оптимизации доступа к свойствам в современных движках JavaScript, очень медленной операцией, это справедливо для любого браузера и движка JavaScript. Изменение прототипов очень тонко и обширно влияет на производительность, причём это влияние не ограничивается просто временем, проведённым внутри метода Object.setPrototypeOf(), оно может распространяться на любой код, который имеет доступ к любому объекту, чей прототип [[Prototype]] был изменён. Если вы заботитесь о производительности, вы никогда не должны изменять прототип [[Prototype]] объекта. Вместо этого создайте объект с нужным прототипом [[Prototype]], с помощью метода Object.create().
Метод Object.setPrototypeOf() устанавливает прототип (то есть, внутреннее свойство [[Prototype]]) указанного объекта в другой объект или null.
Объект, которому устанавливается прототип.
prototypeНовый прототип объекта (объект или null).
Выкидывает исключение TypeError, если объект, чей прототип [[Prototype]] является не расширяемым, согласно методу Object.isExtensible(). Не делает ничего, если параметр prototype не является объектом или значением null (то есть, является числом, строкой, логическим значением или undefined). В противном случае метод устанавливает прототип [[Prototype]] объекта obj в новое значение.
Используя старое свойство Object.prototype.__proto__, мы можем легко определить Object.setPrototypeOf(), если он ещё не доступен:
Сочетание метода Object.getPrototypeOf() и свойства Object.prototype.__proto__ позволяет добавить целую цепочку прототипов к новому прототипу объекта:
| ECMAScript® 2027 Language Specification # sec-object.setprototypeof |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 11 авг. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.