Hola chicos, a continuación, explicare que es lo que regresa el siguiente código y cuál es la razón de ese resultado:

 

var Foo = function( a ) {
 
};
 
Foo.prototype = {
  biz: function() {    
    return this.a;
  }       
};
 
var f = new Foo( 7 );
 
f.biz();
 

Resultado:

Undefined

f.biz () está disponible puesto que se coloca en el prototipo de Foo. Añadiendo un prototipo significa que es compartido por todas las instancias de Foo (siendo f uno de ellos).

Sin embargo nuestro resultado es Undefined ya que la variable a sólo se define dentro de la función constructor, por lo que será indefinida en la llamada de función biz (). En consecuencia, f.biz () devolverá indefinido.

Lo que tenemos que hacer es colocarla con “this” en la función constructor, de la siguiente manera:

var Foo = function( a ) {
    this.a = a;
};
 
Foo.prototype = {
  biz: function() {    
    return this.a;
  }       
};
 
var f = new Foo( 7 );
 
f.biz();
 
Resultado:
 
// 7
 

@telecristy.

¿Te gustó esta publicación? Márcala como favorita