javascript闭包的混乱

javascript闭包的混乱,javascript,Javascript,我正在学习JavaScript闭包。 我想用闭包进行模块化。 因此,我编写了代码,但没有得到我想要的结果 我希望结果框1和框2的结果不同。但由于某种原因,结果是一样的。 我该怎么办 var spinBox=function(){ var-spinBoxConfig; 返回{ 创建:函数(配置){ spinBoxConfig={ value:typeof config.value===“number”?config.value:200 } 归还这个; }, getValue:function()

我正在学习JavaScript闭包。
我想用闭包进行模块化。
因此,我编写了代码,但没有得到我想要的结果
我希望结果框1和框2的结果不同。但由于某种原因,结果是一样的。
我该怎么办

var spinBox=function(){
var-spinBoxConfig;
返回{
创建:函数(配置){
spinBoxConfig={
value:typeof config.value===“number”?config.value:200
}
归还这个;
},
getValue:function(){
返回spinBoxConfig.value;
}
}
}()
var box1=spinBox.create({
价值:30
});
var box2=spinBox.create({
数值:310
});
console.log(box1.getValue());//相同的
console.log(box2.getValue());//相同

定义spinbox对象时,您只创建了一次闭包。调用create或getValue的所有内容都将与spinBoxConfig的单个实例交互。如果每次调用create时都要创建全新的闭包,则需要在create函数中这样做

var spinBox={
创建:函数(配置){
变量spinBoxConfig={
value:typeof config.value===“number”?config.value:200
}
返回{
getValue:函数(){
返回spinBoxConfig.value;
}
}
}
}
var box1=spinBox.create({
价值:30
});
var box2=spinBox.create({
数值:310
});
log(box1.getValue());

console.log(box2.getValue())
包含
create
getValue
的对象将只创建一次。这就是为什么所有的
值都指向同一个对象。谢谢!你的回答对我帮助很大。