Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用多个类修改单个数据源而不将其声明为全局数据源?_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 如何使用多个类修改单个数据源而不将其声明为全局数据源?

Javascript 如何使用多个类修改单个数据源而不将其声明为全局数据源?,javascript,ecmascript-6,Javascript,Ecmascript 6,我希望创建多个类实例,这些实例共享一个数据源,在本例中是一个对象。不幸的是,如果不使用对象作为全局变量,我似乎无法实现这一点 所以我想知道是否有一个更复杂的解决方案来解决以下问题 出租金额={ 需要:0, } 班级商店{ 建造师(a){ this.needed=a.needed; } 需要添加(x){ 所需金额+=x; 这是需要的+=x; } getNeeded(){ 返回{ 金额:需要的金额, 商店:这是我需要的 } } } const test1=新门店(金额); const test2=

我希望创建多个类实例,这些实例共享一个数据源,在本例中是一个对象。不幸的是,如果不使用对象作为全局变量,我似乎无法实现这一点

所以我想知道是否有一个更复杂的解决方案来解决以下问题

出租金额={
需要:0,
}
班级商店{
建造师(a){
this.needed=a.needed;
}
需要添加(x){
所需金额+=x;
这是需要的+=x;
}
getNeeded(){
返回{
金额:需要的金额,
商店:这是我需要的
}
}
}
const test1=新门店(金额);
const test2=新门店(金额);
测试1.addNeeded(5);//这个.needed返回5,amount.needed现在是5
log(test1.getNeeded(),amount.needed);
测试2.addNeeded(10);//这个。需要回报10,金额。需要现在是15

log(test2.getNeeded(),amount.needed)由于
金额
是一个对象,您可以存储对它的引用,并通过引用更新它:

const金额={
需要:0,
}
班级商店{
建造商(金额){
这个。金额=金额;
}
需要添加(x){
此.amount.needed+=x;
}
getNeeded(){
返回{
需要:这个数量需要,
}
}
}
const test1=新门店(金额);
const test2=新门店(金额);
测试1.addNeeded(5);//这个.needed返回5,amount.needed现在是5
log(test1.getNeeded(),amount.needed);
测试2.addNeeded(10);//这个.needed return 15,amount.needed现在是15

log(test2.getNeeded(),amount.needed)
你考虑过使用prototype吗?我不想使用prototype,这是用于mobx商店的。或者不使用babel,如果(!store.amount)store.amount={needed:0},你可以使用
在构造函数的开头。或者在声明类之后在外部
Store.amount={needed:0}
。是的,这更好。“另一个选项是将amount设置为静态类属性”-不,不要这样做,它本质上是创建一个全局变量(不在全局范围内,但具有全局共享值,这是不好的™ 对于可变值)。@Bergi-听起来很合理。虽然这在问题中不是很明显。我的想法是,他想保持一个单独的总和,一个全局总和。无论如何,这不会改变金额的共享性质。