entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

función dentro de constructor javascript

Estoy aprendiendo javascript y el uso de constructores, pero tengo problemas para regresar una propiedad del constructor.

Por qué no me regresa la edad? y en lugar de ello me regresa [function] ?

  //Se crea el constructor
function Person(nombre, apellido, fechNac) {
    this.nombre = nombre;
    this.apellido = apellido;
    this.fechNac = fechNac;
    this.edad = function () {
        return (2014 - this.fechNac);
    };
}

//se crea la instancia
var person1 = new Person("Carlos", "Mtz", 1995);

console.log(person1);

y en la consola:

{ nombre: 'Carl',
  apellido: 'Mtz',
  fechNac: 1990,
  edad: [Function] }

1 Respuesta

2votos

Villanuevand Puntos5730

Hola @Numen!
Debes de entender que solo estás mostrando por consola el Objecto person1,
si deseas imprimir la edad debería ser algo así:

//Se crea el constructor

function Person(nombre, apellido, fechNac) {
    this.nombre = nombre;
    this.apellido = apellido;
    this.fechNac = fechNac;
    this.edad = function () {
        return (2014 - this.fechNac);
    };
}

//se crea la instancia
var person1 = new Person("Carlos", "Mtz", 1995);

console.log(person1.edad()); // Llamando al método Edad

Recuerda que navegas entre los métodos y propiedades usando la notación de "Punto ." Siguiendo con el ejemplo si deseas imprimir los valores de los atributos sería algo así

console.log(person1.nombre); // Accede al Nombre
console.log(person1.apellido); // Accede al Apellido
console.log(person1.fechaNac); // Accede a la Fecha de nacimiento

Ojalá está información te sea de utilidad...
Cuando te sientas más confiado en la programacion orientada a objetos en javascript re recomiendo estudiar algunos patrones de desarrollo.

Saludos desde Venezuela, Cualquier duda no te quedes con ella y avisanos...
Que estes bien!

0voto

Villanuevand comentado

He mejorado un poco tú ejemplo, ojalá en tu proceso de aprender ya te hayas topado con el objeto "DATE".

function Person(n,a,f)
    {
        this.nombre = n;
        this.apellido = a;
        this.fechaNac = f;
        this.edad = function(){
            var d = new Date();
            return (d.getFullYear() - this.fechaNac);
        };
    }
    var p = new Person('Nombre y',' Apellido',1986);
    console.log(p.edad());

La única mejora es en el método "edad" calcula el año actual mediante el uso de un método nativo de DATE, que es "getFullYear", con el que se obtiene el año actual en formato de 4 dígitos.

0voto

Leonardo-Tadei comentado

Exelente respuesta y explicación!

0voto

dairon comentado

una respuesta muy optima y con uso de Date, exelente mano

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta