noviembre 26, 2009 3

Listando los métodos y propiedades de un objeto en JavaScript

By in JavaScript

En ocasiones nos puede interesar saber las propiedades y los métodos que tiene un objeto, por ejemplo cuando estamos depurando. Para ello podemos hacer uso de la siguiente función:

function inspeccionar(obj)
{
  var msg = '';

  for (var property in obj)
  {
    if (typeof obj[property] == 'function')
    {
      var inicio = obj[property].toString().indexOf('function');
      var fin = obj[property].toString().indexOf(')')+1;
      var propertyValue=obj[property].toString().substring(inicio,fin);
      msg +=(typeof obj[property])+' '+property+' : '+propertyValue+' ;\n';
    }
    else if (typeof obj[property] == 'unknown')
    {
      msg += 'unknown '+property+' : unknown ;\n';
    }
    else
    {
      msg +=(typeof obj[property])+' '+property+' : '+obj[property]+' ;\n';
    }
  }
  return msg;
}

La función nos devolverá una cadena que contiene una lista con todos los métodos y propiedades del objeto, así como sus tipos y valores.

Podemos madificarla para que nos devuelva, por ejemplo, un array de objetos, lo que nos permitiría procesarlo después. Veamos como quedaría:

function inspeccionar(obj)
{
  var msg = new Array();

  for (var property in obj)
  {
    if (typeof obj[property] == 'function')
    {
      var inicio = obj[property].toString().indexOf('function');
      var fin = obj[property].toString().indexOf(')')+1;
      var propertyValue=obj[property].toString().substring(inicio,fin);
      msg[msg.length] = {'type' : (typeof obj[property]), 'name' : property, 'value' : propertyValue};
    }
    else if (typeof obj[property] == 'unknown')
    {
      msg[msg.length] = {'type' : 'unknown', 'name' : property, value : 'unknown'};
    }
    else
    {
      msg[msg.length] ={'type' : (typeof obj[property]), 'name' : property, 'value' : obj[property]};
    }
  }
  return msg;
}

Con esta versión podríamos procesar la lista para mostrarla con el formato que más nos guste. Para ello recorreriamos el array devuelto y hariamos lo deseado con cada uno de los elementos. Cada elemento sería un objeto con tres propiedades:

  • type: que contiene el tipo de dato.
  • name: contiene el nombre de la propiedad o método.
  • value: contiene el valor de la propiedad o el prototipo de la función.
Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags:

3 Responses to “Listando los métodos y propiedades de un objeto en JavaScript”

  1. Alvaro dice:

    Coño, eso me suena, jeje

    No conocía tu blog, le voy a echar un ojo

  2. A mi me ha salvado la vida en más de una ocasión.

    Pasate por aquí, y comenta, cuando y cuanto quieras. Por cierto, nos veremos este sábado.

  3. […] Este metodo les retornara un alert con todos los metodos que existe en la función. Fuente Me gusta:Me gustaSé el primero en decir que te gusta esta […]

Leave a Reply