我想重构一个大的JS代码库从单个文件到多个文件中的多个类。我无法访问我认为应该能够访问的变量。我必须误解JavaScript对象/ NodeJS模块/ exports/imports /引用'this'。NodeJS和ES6类实例中可变的可见性
module.exports = HeatMap;
class HeatMap {
constructor(ai, ...) {
this.ai = ai;
...
}
...
}
我修改ai.js:
我开始之前,一切按的EcmaScript 6类语法在里面块module.exports = function Ai() { ...
我创建的文件heatMap.js文件ai.js导入HeatMap类,实例化它,并将该对象的引用传递给ai对象,以便热图可以访问其变量。
const HeatMap = require("heatMap.js");
module.exports = function Ai() {
var ai = this;
var currentRound = ...
...
function bookKeeping(...) {
heatMap = new HeatMap(ai,...);
...
}
...
}
尝试访问currentRound内部热图与this.ai.currentRound
收率:
未解决的可变currentRound。
为什么? “this”应该引用实例化的heatMap对象,“ai”应该引用ai对象,并且ai对象具有可变currentRound。使这项工作的一种方法是将所有变量作为参数传递给函数调用,但其中有很多,所以它不会是一个干净的解决方案。
*“”ai“应该引用ai对象”*“,但该对象是否有属性'currentRound'?在你的例子中,你所做的只是创建一个*局部变量*'currentRound',而不是一个属性。也许你打算做'this.currentRound = ...'? –