如何解决只能通过一种方法访问“ this”
我只是想念有关“这个”的东西(考虑到我想念的那种东西,这很糟糕)。我有一个用于日志格式化的类。在仅用于调试/测试的一种方法中,“ this”原来是未定义的。我删除了几乎所有内容,仅用于演示目的。代码如下:
class LogFormatter {
constructor(source) {
// nothing relevant.
}
formatted() {
return 'returns a formatted string whatever';
}
clog(message,sub) {
console.log(this.formatted());
}
// made only for testing
showThis() {
console.log(this);
}
}
它的用法如下:
const
LogFormatter = require('log-formatter'),lgf = new LogFormatter('asd');
lgf.clog('whatever');
如果我通过this
方法访问formatted
,或者甚至通过调用showThis
,它都可以正常工作。因此,似乎与console.log
无关。
当我调用clog
方法时,将引发下一个错误:
console.log(this.formatted());
^
TypeError: Cannot read property 'formatted' of undefined
因此,仅在clog
方法中,“ this”是未定义的。那么,我面前看不见的大象是什么? :)
编辑:请注意,如果我在格式化方法内添加console.log(this),也可以正常工作。
此外,我已经注意到,如果我尝试通过LogFormatter通过这种方式创建新对象:
const
LogFormatter = new require('log-formatter')('whatever')
抛出一个异常,原因是该类是唯一通过module.exports = LogFormatter
导出的事实,因此我不能在没有新关键字AFAIK的情况下执行LogFormatter。另外,使用良好的旧构造函数语法也没有这个问题。
预先感谢:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。