gpt4 book ai didi

javascript - 不明确的括号指令 "this.fn.bind(this)(super.fn(...args)"

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:08 28 4
gpt4 key购买 nike

所以在一个项目中,我找到了可以简化为的代码:

export abstract class Logger {
private static log(level: LogLevels, ...args: Array<any>) {/**/}
public error(...args: Array<any>): LogData {
return Logger.log(LogLevels.ERROR, ...args);
}
}

export class LoggerService extends Logger {
public error(...args: Array<any>): any {
return this._log.bind(this)(super.error(...args));
}

private _log(logData: LogData) {
let logstashLoggerData = this.extendLoggerData(logData);
return this.logStashApi.log(logstashLoggerData)
.toPromise()
.catch(err => console.error(err));
}

}

我有点担心 this._log.bind(this)(super.error(...args));

我第一次看到这样的东西,所以我宁愿小心谨慎,不要破坏任何东西。这不是任何 Promise 或 .bind() 特定的,是吗?从我的测试来看,该语句似乎可以简单地简化为 this._log(super.error(...args)); (但为什么要复杂化?),有人可以确认吗?

最佳答案

是的,您可以而且应该摆脱这种内联绑定(bind)。我建议将它移到类的构造函数中(而不是完全摆脱绑定(bind)),因为这样你就可以使用服务方法(errorwarning 等)。 ) 作为“普通函数”,如果您需要从模块中导出它们而不暴露 LoggerService 实例本身,这将很有帮助

关于javascript - 不明确的括号指令 "this.fn.bind(this)(super.fn(...args)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58177001/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com