将类实例调用为函数(JS / TS)

时间:2016-04-13 11:27:53

标签: javascript typescript ecmascript-6

假设我有一个名为Logger的日志类。

let log = new Logger(...);

当类实例作为函数调用时,是否可以在该类中指定一个魔术方法?例如

log(...)

在php中实现__invoke()类的魔术方法实现了同样的目的。

1 个答案:

答案 0 :(得分:3)

function Logger() {
  return function log(arg1, arg2) {
    //@TODO: use the function's args
    // or the arguments property to
    // generate the log

    console.log(log.arguments);
  }
}
logger = new Logger();
logger('boom', 123, 'yolo');

这个解决方案应该是您正在寻找的技巧。可能会在下面的评论中找到最佳设置或更好的设置方法。