javascript - recorrer - ¿Puedes hacer un objeto ''llamable''?
recorrer objeto json javascript (2)
¿Es posible hacer que un objeto se pueda call
implementando una call
o una apply
en él, o de alguna otra manera? P.ej:
var obj = {};
obj.call = function (context, arg1, arg2, ...) {
...
};
...
obj (a, b);
No, pero puede agregar propiedades a una función, por ejemplo,
function foo(){}
foo.myProperty = "whatever";
EDITAR: para "hacer" que un objeto se pueda llamar, todavía tendrá que hacer lo anterior, pero podría verse algo como:
// Augments func with object''s properties
function makeCallable(object, func){
for(var prop in object){
if(object.hasOwnProperty(prop){
func[prop] = object[prop];
}
}
}
Y luego solo usarías la función "func" en lugar del objeto. Realmente todo lo que hace este método es copiar propiedades entre dos objetos, pero ... podría ayudarlo.
ES6
tiene mejor solución para esto ahora. Si crea sus objetos de una manera diferente (usando la class
, extend
de ''Función''), puede tener una instancia llamable.
Ver también: ¿Cómo extender la función con las clases de ES6?