Is it possible to make an object callable by implementing either call or apply on it, or in some other way? E.g.:
call
apply
var obj = {}; obj
ES6 has better solution for this now. If you create your objects in a different way (using class, extending 'Function' type), you can have a callable instance of it.
ES6
class
extend
See also: How to extend Function with ES6 classes?