Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnología web para desarrolladores
  2. JavaScript
  3. Referencia de JavaScript
  4. Objetos globales
  5. Object
  6. Object.prototype.__proto__

Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.

View in EnglishAlways switch to English

Object.prototype.__proto__

Advertencia:Cambiar la propiedad[[Prototype]] de un objeto es, por como los navegadores modernos optimizan las propiedades de acceso, una operación muy lenta entodos los navegadores y motores JavaScript. Los efectos en el rendimiento de alterar la herencia son muchos y delicados, y no se limita simplemente al tiempo que necesita la asignaciónobj.__proto__ = ... sentencia, sin embargo afecta acualquier código que tiene acceso acualquier objeto cuya propiedad[[Prototype]] ha sido alterada, por lo que se debe de tener mucho cuidado.Si el rendimiento en tu aplicación es necesario, deberías evitar modificar la propiedad[[Prototype]] de un objeto. En su lugar, crea un objecto nuevo con la propiedad[[Prototype]] deseada usandoObject.create().

Advertencia:MientrasObject.prototype.__proto__ es soportado hoy día por la mayoría de navegadores, su existencia y comportamiento exacto solo ha sido estandarizado en la especificación ECMAScript 6 como una característica de legado y para asegurar la compatibilidad entre los navegadores web. Para tener un mejor soporte, es recomendable que se utiliceObject.getPrototypeOf() para obtener el prototipo de un objeto.

La propiedad__proto__ deObject.prototype es una propiedad llamada de acceso (una función getter y también función setter) que provee acceso al interior de[[Prototype]] (ya sea un objeto onull) del objeto a través del cual se accede a ella.

El uso de la propiedad__proto__ es polémico actualmente, y está rechazado. Originalmente, nunca fué incluído en la especificación de EcmaScript, pero los navegadores modernos decidieron implementarla de todas maneras. Sólo actualmente,la propiedad __proto__ ha sido estandarizada en la especificación del lenguaje ECMAScript 6, para asegurar la compatibilidad entre navegadores, por lo tanto, esta será soportada en el futuro. Actualmente está obsoleta en favor deObject.getPrototypeOf/Reflect.getPrototypeOf yObject.setPrototypeOf/Reflect.setPrototypeOf (aunque todavía establecer el[[Prototype]] de un objeto es una operación muy lenta, por lo que si nos preocupa el rendimiento, debemos de evitarlo).

La propiedad__proto__ puede ser usada también en un objeto definido de forma literal, para establecer el[[Prototype]] en la creación de este, como alternativa aObject.create(). Ver:object initializer / literal syntax.

Síntaxis

js
var shape = {};var circle = new Circle();// Establecer el objeto prototype.// OBSOLETO. Esto es solo un ejemplo. NO HACER ESTO en código real.shape.__proto__ = circle;// Obtener el objeto prototypeconsole.log(shape.__proto__ === circle); // true

Nota: esto es, dos guiones bajos, seguidos de cinco carácteres "proto", seguido de dos guiones bajos mas.

Descripción

La función getter__proto__el valor interno del[[Prototype]] de un objeto. Para objetos creados usando un objeto literal, el valor esObject.prototype. Para objetos creados usando literales de array, este valor esArray.prototype. Para funciones, este valorFunction.prototype. Para objetos creados utilizando el operador new fun, dondefun es una función constructora incluída en JavaScript (Array,Boolean,Date,Number,Object,String, etcétera—incluyendo nuevos contrusctores conforme JavaScript evoluciona), este valor esfun.prototype. (Esto es, si el constructor no devuelve un objeto de forma explícita, o elfun.prototype ha sido reasignado desde que la instancia fué creada).

El__proto__ setter la mutación del objeto[[Prototype]] de un objeto. El objeto debe ser extensible segúnObject.isExtensible(): si no, unTypeError es lanzado. El valor proveído debe ser un objeto onull. Provetendo otro tipo de valor no hará nada.

Para entender como los prototipos son usados para herencia, ver el artículoInheritance and the prototype chain.

La propiedad__proto__ es una simple propiedad de acceso aObject.prototype que consiste en una función getter y setter. Un acceso a la propiedad__proto__ que eventualmente consultaObject.prototype encontrará esta propiedad, pero un acceso que no consultaObject.prototype no lo encontrará. Si alguna otra propiedad__proto__ es encontrada antesObject.prototype es consultada, esta propiedad sera ocultada por la encontrada enObject.prototype.

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-object.prototype.__proto__

Compatibilidad con navegadores

Notas de compatibilidad

Mientras la especificación ECMAScript 2015 (ES6) dicta que el soporte para__proto__ es requeridosolo para navegadores web (a pesar de ser normativo), otros medios pueden soportarlo por uso de legado.

Ver también

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp