¿Hay una cosa tal como un cajón de sastre clave para un objeto de JavaScript?
-
23-09-2019 - |
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()
?
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