繁体   English   中英

在 class 主体中定义 function 不在构造函数中

[英]Define function in the class body not in constructor

考虑以下代码。 有没有办法定义日志、警告和错误函数,如“正常” class 函数?

class ConsoleLogger {
    constructor (enable, methods) {

        this.log =function() {
            return Function.prototype.bind.call(console.log, console, "MY PREFIX");
        }();

        this.warn =function() {
            return Function.prototype.bind.call(console.warn, console, "MY PREFIX");
        }();

        this.error =function() {
            return Function.prototype.bind.call(console.error, console, "MY PREFIX");
        }();


    }
}

// ...

logger = new ConsoleLogger();
logger.log("Log Message");

有没有办法做到这一点,但具有与上层代码相同的功能?

class ConsoleLogger {
   log() {
       //do something 
   }
}

是的。 试试下面的代码。

class ConsoleLogger {
    constructor (enable, methods) {

    }

    log() {
            return Function.prototype.bind.call(console.log, console, "MY PREFIX");
        }

    warn() {
            return Function.prototype.bind.call(console.warn, console, "MY PREFIX");
        }

    error() {
            return Function.prototype.bind.call(console.error, console, "MY PREFIX");
        }
}

并将 function 称为

new ConsoleLogger().log()("test log")

将返回

MY PREFIX test log

您可以将log添加到 class。 在其中使用console.log()并将带有前缀参数的 arguments 传递给console.log

 class ConsoleLogger { log(...args) { console.log("MY PREFIX", ...args) } } new ConsoleLogger().log("message 1", "message 2");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM