Digamos que tengo la siguiente función:
function enumObject(obj, inherited=false, methods=false) { console.log('*'.repeat(20)); for (let prop in obj) { if (!inherited && !obj.hasOwnProperty(prop)) continue; if (!methods && typeof obj[prop] === 'function') continue; console.log(prop, '-->', obj[prop]); } } Y quiero llamarlo como: enumObject(o, methods=true) . ¿Existe una forma abreviada de ignorar básicamente cualquier parámetro, excepto los que configuré explícitamente? Sé que en el ejemplo anterior es un poco trivial, ya que puedo hacer: enumObject(o, false, true) , pero digamos que tenía una función que tenía 20 argumentos, y solo quería pasar uno de ellos como no- valor por defecto. ¿Cómo se haría eso? lo único que me viene a la mente es recopilar todas las propiedades en un objeto, por ejemplo, algo como:
function enumObject(obj, props={}) { // props: methods, inherited for (let prop in obj) { if (!props.inherited && !obj.hasOwnProperty(prop)) continue; if (!props.methods && typeof obj[prop] === 'function') continue; console.log(prop, '-->', obj[prop]); } } let o = {x: 1, y: 2, z() {}} enumObject(o) enumObject(o, props={methods: true})