Pregunta

Teniendo en cuenta el ejemplo siguiente javascript:

var myobj = {   func1: function() { alert(name in this) },
                func2: function() { alert(name in this) },
                func3: function() { alert(name in this) }
}

myobj.func2(); // returns true
myobj.func4(); // undefined function

¿Es posible crear una clave para myobj que se llama si no hay ninguna clave / función definida (como en func4()) 'catch-all', manteniendo el formato myobj.functionCall()?

¿Fue útil?

Solución

Usted está buscando __noSuchMethod__:
JavaScript captador para todas las propiedades

Otros consejos

Se puede crear un objeto JavaScript con 'catch-all' llaves 'comodín' o usando un proxy y una función getter. A diferencia de las soluciones aportadas, un proxy debería funcionar en casi cualquier entorno, incluyendo Node.js

var foo = new Object()

var specialFoo = new Proxy(foo, {
    get(target,name) {
        // do something here
        return name
    }
})

console.log(specialFoo.blabla) // this will output "blabla"

Si desea que las propiedades sean exigibles, devuelva una función:

var specialFoo = new Proxy(foo, {
    get(target,name) {
        return function() {
            console.log('derp')
            return name
        }
    }
})


specialFoo.callMe() // this will print derp

detalles: documentación sobre Mozilla

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top