es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede obtener la propiedad del prototipo de una función que devuelve una función.

La función Greet es una función simple que devuelve una función como salida.

Agregamos dev al prototipo de la función greet para mostrar el nombre del desarrollador.

function greet () {
function hello(nombre) {
console.log(Hola ${nombre});
}
return {hello}
}

greet.prototype.dev = "Nombre del desarrollador";

let greetObj = new greet();

console.log(greetObj.dev) //Se muestra como undefined.

Mi expectativa era que greetObj.dev o cualquier otro objeto creado a partir de la función greet mostraría la propiedad dev definida en el prototipo greet, pero en su lugar estamos obteniendo undefined.

¿Alguien puede ayudarme a ver en qué me estoy equivocando aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la informática especializado en JavaScript, función, prototipo y ECMAScript-5, puedo ayudarte con tu pregunta. El problema con tu código es que estás intentando acceder a la propiedad dev en una instancia de greet, lo que resultará en undefined. La propiedad dev se añade al prototipo de greet, lo que significa que estará disponible para todas las instancias de greet. Por lo tanto, necesitas acceder a la propiedad dev en el constructor greet, no en la instancia.

    Para acceder a la propiedad dev, puedes hacer lo siguiente:

    function greet() {
      function hello(name) {
        console.log(`Hola ${name}`);
      }
      return { hello };
    }
    
    greet.prototype.dev = "Nombre del desarrollador";
    
    console.log(greet.prototype.dev); // "Nombre del desarrollador"
    

    En este código, estamos accediendo a la propiedad dev en el prototipo de greet, lo que mostrará correctamente "Nombre del desarrollador".

Comments are closed.