Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since septiembre de 2015.
El método Object.setPrototypeOf() establece el prototipo (p.e., la propiedad interna [[Prototype]]) de un objeto especificado a otro objeto o sino establece null.
Advertencia: Adverdencia: Cambiar la propiedad [[Prototype]] de un objeto, debido a la naturaleza de la optimización del acceso a propiedades de los motores modernos de JavaScript, es una operación bastante lenta, en todo todo navegador y motor de JavaScript. Los efectos sobre el rendimiento al alterar la herencia son sutiles y vastos., y no están limitados a simplemente el tiempo gastado en la sentencia obj.__proto___ = ..., but may extend to any code that has access to any object whose [[Prototype]] has been altered. If you care about performance you should avoid setting the [[Prototype]] of an object. Instead, create a new object with the desired [[Prototype]] using Object.create().
El objeto al que se ha de establecer el prototipo.
prototypeEl nuevo prototipo del objeto, (un objeto o null).
Arroja una excepción del tipo TypeError si el objeto cuyo [[Prototype]] se va a modificar no es extensible de acuerdo con Object.isExtensible(). No hace nada si el parametro prototype no es un objeto o null (p.e., número, cadena, booleano, o undefined). De cualquier otra forma, este método cambia la propiedad [[Prototype]] del obj al valor nuevo.
Object.setPrototypeOf() está en el último borrador del estandar ECMAScript6. Es considerado generalmente la manera adecuada de establecer el prototipo de un objeto, contra la propiedad más controversial Object.prototype.__proto__.
Utilizando la vieja propiedad Object.prototype.__proto__, podemos definir facilmente Object.setPrototypeOf si aún no está disponible:
Una combinación de Object.getPrototypeOf() y Object.prototype.__proto__ permite agregar una nueva cadena de prototipos al nuevo prototipo del objeto.
| ECMAScript® 2027 Language Specification # sec-object.setprototypeof |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 21 jul 2025 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.