Quotidien Shaarli

Tous les liens d'un jour sur une page.

March 7, 2018

Enumerating methods on a JavaScript class instance | code.fitness

Article détaillant une technique permettant de connaître l'ensemble des méthodes d'un objet Javascript

En gros, avec ces 2 fonctions :

function hasMethod (obj, name) {
  const desc = Object.getOwnPropertyDescriptor (obj, name);
  return !!desc && typeof desc.value === 'function';
}

function getInstanceMethodNames (obj, stop) {
  let array = [];
  let proto = Object.getPrototypeOf (obj);
  while (proto && proto !== stop) {
    Object.getOwnPropertyNames (proto)
      .forEach (name => {
        if (name !== 'constructor') {
          if (hasMethod (proto, name)) {
            array.push (name);
          }
        }
      });
    proto = Object.getPrototypeOf (proto);
  }
  return array;
}