使用class创建函数对象

使用class创建函数对象 ,可以在 constructor 中返回一个函数 并设置其原型 === this


class Logger {
  constructor(tags) {
    this.tags = [].concat(tags);
    let _this = this;
    function fn(tags) {
      _this.tags = _this.tags.concat(tags);
      return fn;
    }
    Object.setPrototypeOf(Object.getPrototypeOf(fn), this);
    return fn;
  }
  info(info) {
    console.log(this.tags.map(tag=>`[${tag}]`).join(""), info);
  }
}
/**
 * @description: 日志 支持链式调用例如 logger("tag1")("tag2")("tag3").info("info") 和 logger(["tag1","tag2"]).info("info")
 * @param {*} tag  [tag1][tag2]
 * @return {*} 返回 函数
 */
 let logger = new Logger()

posted @ 2022-05-06 11:41  __Bowen  阅读(224)  评论(0编辑  收藏  举报