我在重構(gòu)我的東西時遇到了一個小問題......問題:我得到了一個包含 1.1k 行和 ~10 個方法的類文件我想做的事情(tl;dr):將每個方法外包到它自己的文件中,module.export 它們,有一個需要所有這些的幫助方法/文件,讓我的類只導(dǎo)入這個幫助文件并將所有方法添加回我的類,以便 class.method 正確調(diào)用它們。我想做什么(有一點(diǎn)額外的)Aight - 狀態(tài)是這樣的……我有課我的類.jsclass 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 - 長度有點(diǎn)偽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我的類.jsconst 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)預(yù)期:'a'但遺憾的是,現(xiàn)實(shí)是:未定義通過在 methodOne.js 中調(diào)用 console.log(this) 來深入挖掘一下,返回 {methodOne: [Function]) 有點(diǎn)道理。但由于這是通過調(diào)用的結(jié)果const tryMe = new MyClass()tryMe.methodOne()我至少可以確認(rèn),我可以通過類訪問這些方法,現(xiàn)在他們只需要訪問相同的this代碼稍微簡化了一點(diǎn)。真正的代碼是完全異步/等待等等,但我不想用更多代碼來打擾你。注入器的構(gòu)造并將其傳遞給 myClass 正在工作,我可以訪問 {name:function} 對的對象。是類的方法。非常感謝任何幫助!干杯PS:我可能可以讓每個方法成為它自己的類并擴(kuò)展和擴(kuò)展......不想走那條路...我還在考慮我是否在方法的 module.exports 方面做錯了什么。如果我這樣做了,我絕對沒有任何線索:D
將方法導(dǎo)出到類中的正確方法(原型?)
慕桂英3389331
2021-11-12 10:48:52