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í?
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 degreet
, lo que resultará enundefined
. La propiedaddev
se añade al prototipo degreet
, lo que significa que estará disponible para todas las instancias degreet
. Por lo tanto, necesitas acceder a la propiedaddev
en el constructorgreet
, no en la instancia.Para acceder a la propiedad
dev
, puedes hacer lo siguiente:En este código, estamos accediendo a la propiedad
dev
en el prototipo degreet
, lo que mostrará correctamente"Nombre del desarrollador"
.