全局变量到不同的文件和类

时间:2018-03-09 23:14:19

标签: javascript node.js ecmascript-6 ecmascript-5

我有一个更大的对象,我保存了我的主要课程的所有重要数据。我的项目变得更大,所以我有一些分离的文件/类。所有这些都需要访问我的商店对象,这些价值会不时发生变化。

我知道我可以将我的商店导出/导入到每个类,但是这些更改有点超全局,这意味着如果我多次实例化我的主类并且我在第一个实例化的主类中更改商店,那么第二个实例化的主类也会看到我商店的变化。希望我能解释得很好。

这是一个非常简单的例子,只有2个类,但我还有更多:

index.js

let ClassA = require('./ClassA')
let ClassB = require('./ClassB')

let store = {
    propA: 1,
    propB: 2
}

class mainClass {
    constructor() {
        console.log('main Class')
        this.doSomething()
    }

    doSomething() {
        let classA = new ClassA() // get/edit store there
        let classB = new ClassB() // get/edit store there

        classA.doSomething()
        classB.doSomething()
    }
}

let instantiatePorject = new mainClass()

ClassA.js

module.exports = class ClassA {
    doSomething() {
        // get/edit store here
    }
}

ClassB.js

module.exports = class ClassB {
    doSomething() {
        // get/edit store here
    }
}

1 个答案:

答案 0 :(得分:0)

在构建对象时通过商店

let ClassA = require('./ClassA')
let ClassB = require('./ClassB')

let store = {
    propA: 1,
    propB: 2
}

class mainClass {
    constructor() {
        console.log('main Class')
        this.doSomething()
    }

    doSomething() {
        let classA = new ClassA(store) // get/edit store there
        let classB = new ClassB(store) // get/edit store there

        classA.doSomething()
        classB.doSomething()
    }
}

let instantiatePorject = new mainClass()