List the methods available on an object.

In Python you can just do dir(obj) but in JS you need to write your own function.

From How to list all methods of an object in JavaScript tutorial.

Basic

This lists only the methods defined on that specific object, not any method defined in its prototype chain.

function methods(obj) { 
  const properties = Object.getOwnPropertyNames(obj) 
  
  return properties.filter(item => typeof obj[item] === 'function')
}

Chain

function methods(obj) {
  let properties = new Set()
  let currentObj = obj
  
  do {
    Object.getOwnPropertyNames(currentObj)
      .map(item => properties.add(item))
  } while ((currentObj = Object.getPrototypeOf(currentObj)))
  
  const p = [...properties.keys()]
  
  return p.filter(item => typeof obj[item] === 'function')
}

Usage:

methods("")
methods({})
methods(Date.prototype)

Sample output:

methods('')
[
  'constructor',          'anchor',            'big',
  'blink',                'bold',              'charAt',
  'charCodeAt',           'codePointAt',       'concat',
  'endsWith',             'fontcolor',         'fontsize',
  'fixed',                'includes',          'indexOf',
  'italics',              'lastIndexOf',       'link',
  'localeCompare',        'match',             'matchAll',
  'normalize',            'padEnd',            'padStart',
  'repeat',               'replace',           'search',
  'slice',                'small',             'split',
  'strike',               'sub',               'substr',
  'substring',            'sup',               'startsWith',
  'toString',             'trim',              'trimStart',
  'trimLeft',             'trimEnd',           'trimRight',
  'toLocaleLowerCase',    'toLocaleUpperCase', 'toLowerCase',
  'toUpperCase',          'valueOf',           'replaceAll',
  '__defineGetter__',     '__defineSetter__',  'hasOwnProperty',
  '__lookupGetter__',     '__lookupSetter__',  'isPrototypeOf',
  'propertyIsEnumerable', 'toLocaleString'
]