Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

143
Vistas
palabra clave "esta" con Prototype JS

Estoy confundido con la palabra clave "this" en JS. Entiendo que el prototipo de conejo es animal y la palabra clave "este" en rabbit.isSleeping debería referirse a conejo, pero pensé que animal.isSleeping debería referirse a animal. No entiendo por qué no está definido. ¿Alguien podría explicar?

 let animal = { walk() { if (!this.isSleeping) { alert(`I walk`); } }, sleep() { this.isSleeping = true; } }; let rabbit = { name: "White Rabbit", __proto__: animal }; rabbit.sleep(); alert(rabbit.isSleeping); // true alert(animal.isSleeping)
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Cuando se asigna una propiedad a un objeto - aquí, cuando lo hace

this.isSleeping = true;

El motor primero examinará la instancia, luego su prototipo interno, y así sucesivamente hasta el comienzo de la cadena de prototipos, para identificar el primer objeto de este tipo que tenga una propiedad isSleeping . Si se encuentra un objeto y es un setter, se invoca al setter. De lo contrario, no importa dónde se encuentre la propiedad, se le asigna la propiedad a la instancia (como una propiedad de datos, por supuesto).

Cuando tu lo hagas

 rabbit.sleep();

la instancia es rabbit , eso es this dentro del método. Y no hay setters isSleeping , así que

 sleep() { this.isSleeping = true; }

da como resultado que la instancia, el objeto rabbit , reciba la propiedad. Entonces el objeto animal permanece sin cambios.

A menos que haya getters/setters involucrados en alguna parte, haciendo

 someObj.someProp = someVal

siempre y solo alguna vez resultará en la mutación de someObj , mientras mantiene su(s) prototipo(s) interno(s) sin cambios.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda