【发布时间】:2020-02-21 00:13:00
【问题描述】:
我有这样的代码:
mycode.js:
export default {
foo() {
return "foo";
},
bar() {
return "bar" + this.foo();
}
}
其他代码.js:
import mycode from "mycode.js";
mycode.bar(); // usually works fine, returns "barfoo"
不过,我在箭头函数中调用 mycode.bar() 时遇到了困难。问题是 bar() 中的“this”不再指代 mycode 中的对象,而是指调用者的上下文。
如果我想继续使用这种代码风格来定义函数并导出它们,如何在 bar() 中调用 foo()?
我尝试将 mycode 中的方法绑定()到导出的对象,但据我所知,您必须为每个方法单独执行此操作。
我也尝试在我的代码顶部这样做:
let self = this;
然后引用“self.foo()”,但是“this”在我将它分配给self时没有定义。
我可以完全改变代码风格。我可以像这样定义每个函数:
mycode.js
function foo() {
return "foo";
}
export default {
foo, bar, ...
}
但是我必须单独命名每个函数。
一定有更好的方法。
【问题讨论】:
-
正确命名有什么问题? JIT 解析器当然不会因此而评判您,因此,如果它使您的代码更易于阅读和使用:这不正是我们都需要的代码吗?
标签: javascript