我在重构我的东西时遇到了一个小问题......
问题:
我得到了一个包含 1.1k 行和 ~10 个方法的类文件
我想做的事情(tl;dr):
将每个方法外包到它自己的文件中,module.export 它们,有一个需要所有这些的帮助方法/文件,让我的类只导入这个帮助文件并将所有方法添加回我的类,以便 class.method 正确调用它们。
我想做什么(有一点额外的)
Aight - 状态是这样的……我有课
我的类.js
class MyClass{
constructor(a,b){
this.a = a
this.b = b
}
methodOne(){
console.log(this.a)
*100 lines of code*
}
methodTwo(){
*100 lines of code*
}
methodThree(){
*100 lines of code*
}
.... and so on
}
我想要什么:
方法一.js
module.exports.methodOne = () => {
console.log(this.a)
99 more lines of Code
}
方法二.js
module.exports.methodTwo = () => {
100 lines of Code
}
...等等
functions_injector.js - 长度有点伪
const fs = require('fs')
const functions = {}
const functionsInjector = () => {
fs.readDir('./functions/', (err, files) => {
files.each((fileName) => {
functions[fileName.split('.')[0]] = require('./functions/'+fileName)
}
}
functionsInjector()
module.exports = functions
我的类.js
const functions = require('./functions_injector')
class MyClass {
constructor(a,b) {
this.a = a
this.b = b
}
}
const funcNames = Object.keys(functions)
const funcs = Object.values(functions)
funcNames.forEach((funcName, idx) => {
MyClass.prototype[funcName] = funcs[idx]
}
const tryMe = new MyClass('a', 'b)
const plsWork = tryMe.methodOne()
console.log(plsWork)
预期:'a'
但遗憾的是,现实是:未定义
通过在 methodOne.js 中调用 console.log(this) 来深入挖掘一下,返回 {methodOne: [Function]) 有点道理。但由于这是通过调用的结果
const tryMe = new MyClass()
tryMe.methodOne()
我至少可以确认,我可以通过类访问这些方法,现在他们只需要访问相同的this
代码稍微简化了一点。真正的代码是完全异步/等待等等,但我不想用更多代码来打扰你。
注入器的构造并将其传递给 myClass 正在工作,我可以访问 {name:function} 对的对象。是类的方法。
非常感谢任何帮助!干杯
PS:我可能可以让每个方法成为它自己的类并扩展和扩展......不想走那条路...
我还在考虑我是否在方法的 module.exports 方面做错了什么。如果我这样做了,我绝对没有任何线索:D
月关宝盒
相关分类